[
  {
    "comments": [
      "\nAutomatically called to update all widgets.\n",
      "@name widgets.PlayerTick",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/widgets/PlayerTick",
      "@internal",
      "@param {void} this - no description",
      "@param {Player} ply - The player",
      "@param {CMoveData} mv - Player move data",
      "@returns {void}"
    ],
    "type": "func",
    "context": "widgets",
    "name": "PlayerTick",
    "typings": [
      "(this: void, ply: Player, mv: CMoveData): void"
    ]
  },
  {
    "comments": [
      "\nCalled after all SWEPS have been loaded and runs @baseclass.Set on each one.\nYou can retrieve all the currently registered SWEPS with @weapons.GetList.\n",
      "@name weapons.OnLoaded",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/weapons/OnLoaded",
      "@internal",
      "@note This is not called after a SWEP auto refresh, and thus the inherited baseclass functions retrieved with @baseclass.Get will not be updated",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "weapons",
    "name": "OnLoaded",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nChecks if name is based on base\n",
      "@name weapons.IsBasedOn",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/weapons/IsBasedOn",
      "@param {void} this - no description",
      "@param {string} name - Entity's class name to be checked",
      "@param {string} base - Base class name to be checked",
      "@returns {boolean} - Returns true if class name is based on base, else false."
    ],
    "type": "func",
    "context": "weapons",
    "name": "IsBasedOn",
    "typings": [
      "(this: void, name: string, base: string): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the REAL weapon table, not a copy. The produced table does *not* inherit fields from the weapon's base class, unlike @weapons.Get.\n",
      "@name weapons.GetStored",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/weapons/GetStored",
      "@warning Modifying this table will modify what is stored by the weapons library. Take a copy or use @weapons.Get to avoid this.",
      "@param {void} this - no description",
      "@param {string} weapon_class - Weapon class to retrieve weapon table of",
      "@returns {table} - The weapon table"
    ],
    "type": "func",
    "context": "weapons",
    "name": "GetStored",
    "typings": [
      "(this: void, weapon_class: string): table"
    ]
  },
  {
    "comments": [
      "\nGet a *copy* of weapon table by name. This function also inherits fields from the weapon's base class, unlike @weapons.GetStored.\n",
      "@name weapons.Get",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/weapons/Get",
      "@param {void} this - no description",
      "@param {string} classname - Class name of weapon to retrieve",
      "@returns {table} - The retrieved table or nil"
    ],
    "type": "func",
    "context": "weapons",
    "name": "Get",
    "typings": [
      "(this: void, classname: string): table"
    ]
  },
  {
    "comments": [
      "\nGet a list of all the registered SWEPs. This does not include weapons added to spawnmenu manually.\n",
      "@name weapons.GetList",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/weapons/GetList",
      "@param {void} this - no description",
      "@returns {table} - List of all the registered SWEPs"
    ],
    "type": "func",
    "context": "weapons",
    "name": "GetList",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nCalled straight after the view model has been drawn. This is called before @GamemodeHooks:PostDrawViewModel and @WeaponHooks:PostDrawViewModel.\n",
      "@name WeaponHooks:ViewModelDrawn",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/ViewModelDrawn",
      "@param {Weapon} this - no description",
      "@param {Entity} ViewModel - Players view model",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "ViewModelDrawn",
    "typings": [
      "(this: Weapon, ViewModel: Entity): void"
    ]
  },
  {
    "comments": [
      "\nAllows to change players field of view while player holds the weapon.\n",
      "@name WeaponHooks:TranslateFOV",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/TranslateFOV",
      "@note This hook must be defined shared and return same value on both to properly affect Area Portals.",
      "@param {Weapon} this - no description",
      "@param {number} fov - The current/default FOV.",
      "@returns {number} - The target FOV."
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "TranslateFOV",
    "typings": [
      "(this: Weapon, fov: number): number"
    ]
  },
  {
    "comments": [
      "\nTranslate a player's Activity into a weapon's activity, depending on how you want the player to be holding the weapon.\nFor example, ACT_MP_RUN becomes ACT_HL2MP_RUN_PISTOL.\n",
      "@name WeaponHooks:TranslateActivity",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/TranslateActivity",
      "@param {Weapon} this - no description",
      "@param {number} act - The activity to translate",
      "@returns {number} - The translated activity"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "TranslateActivity",
    "typings": [
      "(this: Weapon, act: number): number"
    ]
  },
  {
    "comments": [
      "\nRenders a widget. Normally you won't need to call this.\n",
      "@name widgets.RenderMe",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/widgets/RenderMe",
      "@param {void} this - no description",
      "@param {Entity} ent - Widget entity to render",
      "@returns {void}"
    ],
    "type": "func",
    "context": "widgets",
    "name": "RenderMe",
    "typings": [
      "(this: void, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nUsed to register your SWEP with the engine.\n",
      "@name weapons.Register",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/weapons/Register",
      "@bug  Sub-tables provided in the first argument will not carry over their metatable, and will receive a BaseClass key if the table was merged with the base's. Userdata references, which includes Vectors, Angles, Entities, etc. will not be copied.",
      "@param {void} this - no description",
      "@param {table} swep_table - The SWEP table",
      "@param {string} classname - Classname to assign to that swep",
      "@returns {void}"
    ],
    "type": "func",
    "context": "weapons",
    "name": "Register",
    "typings": [
      "(this: void, swep_table: table, classname: string): void"
    ]
  },
  {
    "comments": [
      "\nA convenience function to remove secondary ammo from clip.\n",
      "@name WeaponHooks:TakeSecondaryAmmo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/TakeSecondaryAmmo",
      "@param {Weapon} this - no description",
      "@param {number} amount - How much of secondary ammo to remove",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "TakeSecondaryAmmo",
    "typings": [
      "(this: Weapon, amount: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the swep thinks.\nThis hook won't be called during the deploy animation and when using @WeaponFuncs:DefaultReload.\n",
      "@name WeaponHooks:Think",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/Think",
      "@note Despite being a predicted hook, this hook is called clientside in single player, however it will not be recognized as a predicted hook to @Player:GetCurrentCommand.",
      "@note This hook will be called before Player movement is processed on the client, and after on the server.",
      "@bug #2855 This will not be run during deploy animations after a serverside-only deploy. This usually happens after picking up and dropping an object with +use.",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "Think",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nA convenience function to remove primary ammo from clip.\n",
      "@name WeaponHooks:TakePrimaryAmmo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/TakePrimaryAmmo",
      "@param {Weapon} this - no description",
      "@param {number} amount - Amount of primary ammo to remove",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "TakePrimaryAmmo",
    "typings": [
      "(this: Weapon, amount: number): void"
    ]
  },
  {
    "comments": [
      "\nShould this weapon be dropped when its owner dies?\nThis only works if the player has @Player:ShouldDropWeapon set to true.\n",
      "@name WeaponHooks:ShouldDropOnDie",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/ShouldDropOnDie",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Return true to drop the weapon, false otherwise. Default ( if you don't return anything ) is false."
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "ShouldDropOnDie",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nA convenience function to create shoot effects.\n",
      "@name WeaponHooks:ShootEffects",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/ShootEffects",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "ShootEffects",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nA convenience function to shoot bullets.\n",
      "@name WeaponHooks:ShootBullet",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/ShootBullet",
      "@param {Weapon} this - no description",
      "@param {number} damage - The damage of the bullet",
      "@param {number} num_bullets - Amount of bullets to shoot",
      "@param {number} aimcone - Spread of bullets",
      "@param {string} ammo_type - Ammo type of the bullets",
      "@param {number} force - Force of the bullets",
      "@param {number} tracer - Show a tracer on every x bullets",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "ShootBullet",
    "typings": [
      "(this: Weapon, damage: number, num_bullets: number, aimcone: number, ammo_type?: string, force?: number, tracer?: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled to determine if the view model should be drawn or not.\n",
      "@name WeaponHooks:ShouldDrawViewModel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/ShouldDrawViewModel",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Return true to draw the view model, false otherwise."
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "ShouldDrawViewModel",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the hold type of the weapon. This must be called on **both** the server and the client to work properly.\n**NOTE:** You should avoid calling this function and call @WeaponFuncs:SetHoldType now.\n",
      "@name WeaponHooks:SetWeaponHoldType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/SetWeaponHoldType",
      "@param {Weapon} this - no description",
      "@param {string} name - Name of the hold type. You can find all default hold types [here](https://wiki.garrysmod.com/page/Hold_Types)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "SetWeaponHoldType",
    "typings": [
      "(this: Weapon, name: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the SWEP should set up its [ Data Tables](https://wiki.garrysmod.com/page/Networking%20Entities).\n",
      "@name WeaponHooks:SetupDataTables",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/SetupDataTables",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "SetupDataTables",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nSets when the weapon can alt-fire again. Time should be based on @CurTime function.\n",
      "@name WeaponFuncs:SetNextSecondaryFire",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/SetNextSecondaryFire",
      "@param {Weapon} this - no description",
      "@param {number} time - Time when player should be able to use secondary fire again",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "SetNextSecondaryFire",
    "typings": [
      "(this: Weapon, time: number): void"
    ]
  },
  {
    "comments": [
      "\nSets when the weapon can fire again. Time should be based on @CurTime function.\n",
      "@name WeaponFuncs:SetNextPrimaryFire",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/SetNextPrimaryFire",
      "@bug #3786 This will fire extra bullets if the time is set to less than @CurTime function.",
      "@param {Weapon} this - no description",
      "@param {number} time - Time when player should be able to use primary fire again",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "SetNextPrimaryFire",
    "typings": [
      "(this: Weapon, time: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the time since this weapon last fired in seconds. Used in conjunction with @WeaponFuncs:LastShootTime\n",
      "@name WeaponFuncs:SetLastShootTime",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/SetLastShootTime",
      "@param {Weapon} this - no description",
      "@param {number} time - The time in seconds when the last time the weapon was fired.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "SetLastShootTime",
    "typings": [
      "(this: Weapon, time?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the hold type of the weapon. This function also calls @WeaponHooks:SetWeaponHoldType and properly networks it to all clients.\n",
      "@name WeaponFuncs:SetHoldType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/SetHoldType",
      "@note This only works on scripted weapons.",
      "@bug  Using this function on weapons held by bots will not network holdtype changes to clients if the world model is set to an empty string (SWEP.WorldModel = \"\").",
      "@param {Weapon} this - no description",
      "@param {string} name - Name of the hold type. You can find all default hold types [here](https://wiki.garrysmod.com/page/Hold_Types)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "SetHoldType",
    "typings": [
      "(this: Weapon, name: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the weapon deploy speed. This value needs to match on client and server.\n",
      "@name WeaponHooks:SetDeploySpeed",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/SetDeploySpeed",
      "@param {Weapon} this - no description",
      "@param {number} speed - The value to set deploy speed to. Negative will slow down playback.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "SetDeploySpeed",
    "typings": [
      "(this: Weapon, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nLets you change the number of bullets in the given weapons secondary clip.\n",
      "@name WeaponFuncs:SetClip2",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/SetClip2",
      "@param {Weapon} this - no description",
      "@param {number} ammo - The amount of bullets the clip should contain",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "SetClip2",
    "typings": [
      "(this: Weapon, ammo: number): void"
    ]
  },
  {
    "comments": [
      "\nLets you change the number of bullets in the given weapons primary clip.\n",
      "@name WeaponFuncs:SetClip1",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/SetClip1",
      "@param {Weapon} this - no description",
      "@param {number} ammo - The amount of bullets the clip should contain",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "SetClip1",
    "typings": [
      "(this: Weapon, ammo: number): void"
    ]
  },
  {
    "comments": [
      "\nForces weapon to play activity/animation.\n",
      "@name WeaponFuncs:SendWeaponAnim",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/SendWeaponAnim",
      "@param {Weapon} this - no description",
      "@param {ACT} act - Activity to play. See the @ACT enum (specifically ACT_VM_).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "SendWeaponAnim",
    "typings": [
      "(this: Weapon, act: ACT): void"
    ]
  },
  {
    "comments": [
      "\nCalled when secondary attack button ( +attack2 ) is pressed.\nFor issues with this hook being called rapidly on the client side, see the global function @IsFirstTimePredicted function.\n",
      "@name WeaponHooks:SecondaryAttack",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/SecondaryAttack",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "SecondaryAttack",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled every frame just before @GamemodeHooks:RenderScene.\nUsed by the Tool Gun to render view model screens (@ToolHooks:DrawToolScreen).\n",
      "@name WeaponHooks:RenderScreen",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/RenderScreen",
      "@note Materials rendered in this hook require $ignorez parameter to draw properly.",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "RenderScreen",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the reload key ( +reload ) is pressed.\n",
      "@name WeaponHooks:Reload",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/Reload",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "Reload",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nA convenience function that draws the weapon info box, used in @WeaponHooks:DrawWeaponSelection.\n",
      "@name WeaponHooks:PrintWeaponInfo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/PrintWeaponInfo",
      "@param {Weapon} this - no description",
      "@param {number} x - The x co-ordinate of box position",
      "@param {number} y - The y co-ordinate of box position",
      "@param {number} alpha - Alpha value for the box",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "PrintWeaponInfo",
    "typings": [
      "(this: Weapon, x: number, y: number, alpha: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when primary attack button ( +attack ) is pressed.\nSince this is a [predicted](https://wiki.garrysmod.com/page/Prediction) hook, as mentioned on the bottom of the page, it has some additional behaviour to it. This is the same with all [predicted SWEP hooks](https://wiki.garrysmod.com/page/Category:Predicted_Hooks).\nWhen in singleplayer, this function is only called in the server realm. When in multiplayer, the hook will be called on both the server and the client in order to allow for [prediction](https://wiki.garrysmod.com/page/Prediction).\nYou can force the hook to always be called on client like this:\n```\nif ( game.SinglePlayer() ) then self:CallOnClient( \"PrimaryAttack\" ) end\n```\nNote that due to prediction, in multiplayer SWEP:PrimaryAttack is called multiple times per one \"shot\" with the gun. To work around that, use @IsFirstTimePredicted function.\n",
      "@name WeaponHooks:PrimaryAttack",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/PrimaryAttack",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "PrimaryAttack",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nAllows you to modify viewmodel while the weapon in use before it is drawn. This hook only works if you haven't overridden @GamemodeHooks:PreDrawViewModel.\n",
      "@name WeaponHooks:PreDrawViewModel",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/PreDrawViewModel",
      "@param {Weapon} this - no description",
      "@param {Entity} vm - This is the view model entity before it is drawn.",
      "@param {Weapon} weapon - This is the weapon that is from the view model.",
      "@param {Player} ply - The the owner of the view model.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "PreDrawViewModel",
    "typings": [
      "(this: Weapon, vm: Entity, weapon: Weapon, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled when weapon is dropped or picked up by a new player.\nSee also @WeaponHooks:OnDrop.\n",
      "@name WeaponHooks:OwnerChanged",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/OwnerChanged",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "OwnerChanged",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the view model has been drawn while the weapon in use. This hook is called from the default implementation of @GamemodeHooks:PostDrawViewModel, and as such, will not occur if it has been overridden.\n@WeaponHooks:ViewModelDrawn is an alternative hook which is always called before @GamemodeHooks:PostDrawViewModel.\n",
      "@name WeaponHooks:PostDrawViewModel",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/PostDrawViewModel",
      "@param {Weapon} this - no description",
      "@param {Entity} vm - This is the view model entity after it is drawn",
      "@param {Weapon} weapon - This is the weapon that is from the view model (same as self)",
      "@param {Player} ply - The owner of the view model",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "PostDrawViewModel",
    "typings": [
      "(this: Weapon, vm: Entity, weapon: Weapon, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the weapon entity is reloaded from a Source Engine save (not the Sandbox saves or dupes) or on a changelevel (for example Half-Life 2 campaign level transitions).\nFor the @duplicator library callbacks, see @EntityHooks:OnDuplicated.\nSee also @saverestore library for relevant functions.\n",
      "@name WeaponHooks:OnRestore",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/OnRestore",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "OnRestore",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the swep is about to be removed.\n",
      "@name WeaponHooks:OnRemove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/OnRemove",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "OnRemove",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the weapons Lua script is reloaded.\n",
      "@name WeaponHooks:OnReloaded",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/OnReloaded",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "OnReloaded",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled when weapon is dropped by @Player:DropWeapon.\nSee also @WeaponHooks:OwnerChanged.\n",
      "@name WeaponHooks:OnDrop",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/OnDrop",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "OnDrop",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nReturns the time since this weapon last fired a bullet with @EntityFuncs:FireBullets in seconds. It is not networked.\n",
      "@name WeaponFuncs:LastShootTime",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/LastShootTime",
      "@param {Weapon} this - no description",
      "@returns {number} - The time in seconds when the last bullet was fired."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "LastShootTime",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether the weapon is visible. The term visibility is not exactly what gets checked here, first it checks if the owner is a player, then checks if the active view model has EF_NODRAW flag NOT set.\n",
      "@name WeaponFuncs:IsWeaponVisible",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/IsWeaponVisible",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Is visible or not"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "IsWeaponVisible",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the weapon is a SWEP or a built-in weapon.\n",
      "@name WeaponFuncs:IsScripted",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/IsScripted",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Returns true if weapon is scripted ( SWEP ), false if not ( A built-in HL2 weapon )"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "IsScripted",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the weapon is carried by the local player.\n",
      "@name WeaponFuncs:IsCarriedByLocalPlayer",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Weapon/IsCarriedByLocalPlayer",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Is the weapon is carried by the local player or not"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "IsCarriedByLocalPlayer",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when the weapon entity is created.\n",
      "@name WeaponHooks:Initialize",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/Initialize",
      "@note @EntityFuncs:GetOwner will return NULL at this point because the weapon is not equpped by a player or NPC yet. Use @WeaponHooks:Equip or @WeaponHooks:Deploy if you need the owner to be valid.",
      "@bug #2732 This is sometimes not called clientside. You can work around this by setting a variable in Initialize and check if it exists in @WeaponHooks:Think. See the example below.",
      "@bug #3015 This is not called serverside after a quicksave.",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "Initialize",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nThis hook determines which parts of the HUD to draw.\n",
      "@name WeaponHooks:HUDShouldDraw",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/HUDShouldDraw",
      "@param {Weapon} this - no description",
      "@param {string} element - The HUD element in question",
      "@returns {boolean} - Return false to hide this HUD element"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "HUDShouldDraw",
    "typings": [
      "(this: Weapon, element: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when weapon tries to holster.\n",
      "@name WeaponHooks:Holster",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/Holster",
      "@bug #2854 This is called twice for every holster clientside, one in [prediction](https://wiki.garrysmod.com/page/Prediction) and one not.",
      "@bug #3133 Before @WeaponHooks:OnRemove is called, this function is only called serverside.",
      "@param {Weapon} this - no description",
      "@param {Entity} weapon - The weapon we are trying switch to.",
      "@returns {boolean} - Return true to allow weapon to holster"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "Holster",
    "typings": [
      "(this: Weapon, weapon: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the weapon has ammo left or not. It will return false when there's no ammo left in the magazine **and** when there's no reserve ammo left.\n",
      "@name WeaponFuncs:HasAmmo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/HasAmmo",
      "@note This will return true for weapons like crowbar, gravity gun, etc.",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Whether the weapon has ammo or not."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "HasAmmo",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the \"weight\" of the weapon, which is used when deciding which @Weapon type is better by the engine.\n",
      "@name WeaponFuncs:GetWeight",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetWeight",
      "@param {Weapon} this - no description",
      "@returns {number} - The weapon \"weight\"."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetWeight",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nReturns the world model of the weapon.\n",
      "@name WeaponFuncs:GetWeaponWorldModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetWeaponWorldModel",
      "@param {Weapon} this - no description",
      "@returns {string} - The world model of the weapon."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetWeaponWorldModel",
    "typings": [
      "(this: Weapon): string"
    ]
  },
  {
    "comments": [
      "\nReturns the view model of the weapon.\n",
      "@name WeaponFuncs:GetWeaponViewModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetWeaponViewModel",
      "@param {Weapon} this - no description",
      "@returns {string} - The view model of the weapon."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetWeaponViewModel",
    "typings": [
      "(this: Weapon): string"
    ]
  },
  {
    "comments": [
      "\nThis hook allows you to adjust view model position and angles.\n",
      "@name WeaponHooks:GetViewModelPosition",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/GetViewModelPosition",
      "@param {Weapon} this - no description",
      "@param {Vector} EyePos - Current position",
      "@param {Angle} EyeAng - Current angle",
      "@returns {Vector} - New position",
      "@returns {Angle} - New angle",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "GetViewModelPosition",
    "typings": [
      "(this: Weapon, EyePos: Vector, EyeAng: Angle): [Vector, Angle]"
    ]
  },
  {
    "comments": [
      "\nAllows you to override where the tracer effect comes from. ( Visual bullets )\n",
      "@name WeaponHooks:GetTracerOrigin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/GetTracerOrigin",
      "@param {Weapon} this - no description",
      "@returns {Vector} - The new position to start tracer effect from"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "GetTracerOrigin",
    "typings": [
      "(this: Weapon): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns slot position of the weapon\n",
      "@name WeaponFuncs:GetSlotPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetSlotPos",
      "@param {Weapon} this - no description",
      "@returns {number} - The slot position of the weapon"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetSlotPos",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nReturns the slot of the weapon (slot numbers start from 0)\n",
      "@name WeaponFuncs:GetSlot",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetSlot",
      "@param {Weapon} this - no description",
      "@returns {number} - The slot of the weapon"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetSlot",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nGets the ammo type of the given weapons secondary fire.\n",
      "@name WeaponFuncs:GetSecondaryAmmoType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetSecondaryAmmoType",
      "@param {Weapon} this - no description",
      "@returns {number} - The secondary ammo type ID, or -1 if not found."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetSecondaryAmmoType",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nReturns the non-internal name of the weapon, that should be for displaying.\n",
      "@name WeaponFuncs:GetPrintName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetPrintName",
      "@note If that returns an untranslated message (#HL2_XX), use @language.GetPhrase to see the \"nice\" name.",
      "@note If SWEP.PrintName is not set in the Weapon or the Weapon Base then \"\" will be returned.",
      "@param {Weapon} this - no description",
      "@returns {string} - The \"nice\" name of the weapon."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetPrintName",
    "typings": [
      "(this: Weapon): string"
    ]
  },
  {
    "comments": [
      "\nGets the primary ammo type of the given weapon.\n",
      "@name WeaponFuncs:GetPrimaryAmmoType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetPrimaryAmmoType",
      "@param {Weapon} this - no description",
      "@returns {number} - The ammo type ID, or -1 if not found."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetPrimaryAmmoType",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nCalled when the engine sets a value for this scripted weapon.\nSee @GamemodeHooks:EntityKeyValue for a hook that works for all entities.\nSee @EntityHooks:KeyValue for an [SENT](https://wiki.garrysmod.com/page/Category:WEAPON%20Hooks) hook that works for scripted entities.\n",
      "@name WeaponHooks:KeyValue",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/KeyValue",
      "@param {Weapon} this - no description",
      "@param {string} key - The key that was affected.",
      "@param {string} value - The new value.",
      "@returns {boolean} - Return true to suppress this KeyValue or return false or nothing to apply this key value."
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "KeyValue",
    "typings": [
      "(this: Weapon, key: string, value: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when the weapon is used by NPCs to tell the NPC how to use this weapon. Controls amount of time the NPC can rest (not shoot) between bursts.\n",
      "@name WeaponHooks:GetNPCRestTimes",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/GetNPCRestTimes",
      "@param {Weapon} this - no description",
      "@returns {number} - Minimum amount of time the NPC can rest (not shoot) between bursts in seconds. Default is 0.3 seconds.",
      "@returns {number} - Maximum amount of time the NPC can rest (not shoot) between bursts in seconds. Default is 0.66 seconds.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "GetNPCRestTimes",
    "typings": [
      "(this: Weapon): [number, number]"
    ]
  },
  {
    "comments": [
      "\nCalled when the weapon is used by NPCs to tell the NPC how to use this weapon. Controls how long the NPC can or should shoot continuously.\n",
      "@name WeaponHooks:GetNPCBurstSettings",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/GetNPCBurstSettings",
      "@param {Weapon} this - no description",
      "@returns {number} - Minimum amount of bullets per burst. Default is 1.",
      "@returns {number} - Maximum amount of bullets per burst. Default is 1.",
      "@returns {number} - Delay between each shot, aka firerate. Default is 1.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "GetNPCBurstSettings",
    "typings": [
      "(this: Weapon): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nCalled when the weapon is used by NPCs to determine how accurate the bullets fired should be.\nThe inaccuracy is simulated by changing the @NPC:GetAimVector based on the value returned from this hook.\n",
      "@name WeaponHooks:GetNPCBulletSpread",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/GetNPCBulletSpread",
      "@param {Weapon} this - no description",
      "@param {WEAPON_PROFICIENCY} proficiency - How proficient the NPC is with this gun. See @WEAPON_PROFICIENCY enum",
      "@returns {number} - An amount of degrees the bullets should deviate from the NPC's @NPC:GetAimVector. Default is 15."
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "GetNPCBulletSpread",
    "typings": [
      "(this: Weapon, proficiency: WEAPON_PROFICIENCY): number"
    ]
  },
  {
    "comments": [
      "\nGets the next time the weapon can secondary fire. ( Can call @WeaponHooks:SecondaryAttack )\n",
      "@name WeaponFuncs:GetNextSecondaryFire",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetNextSecondaryFire",
      "@param {Weapon} this - no description",
      "@returns {number} - The time, relative to @CurTime function"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetNextSecondaryFire",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nReturns maximum secondary clip size\n",
      "@name WeaponFuncs:GetMaxClip2",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetMaxClip2",
      "@param {Weapon} this - no description",
      "@returns {number} - Maximum secondary clip size"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetMaxClip2",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nReturns maximum primary clip size\n",
      "@name WeaponFuncs:GetMaxClip1",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetMaxClip1",
      "@param {Weapon} this - no description",
      "@returns {number} - Maximum primary clip size"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetMaxClip1",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nReturns the hold type of the weapon.\n",
      "@name WeaponFuncs:GetHoldType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetHoldType",
      "@param {Weapon} this - no description",
      "@returns {string} - The hold type of the weapon. You can find a list of default hold types [here](https://wiki.garrysmod.com/page/Hold_Types)."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetHoldType",
    "typings": [
      "(this: Weapon): string"
    ]
  },
  {
    "comments": [
      "\nThis hook is for NPCs, you return what they should try to do with it.\n",
      "@name WeaponHooks:GetCapabilities",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/GetCapabilities",
      "@param {Weapon} this - no description",
      "@returns {CAP} - A number defining what NPC should do with the weapon. Use the @CAP enum."
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "GetCapabilities",
    "typings": [
      "(this: Weapon): CAP"
    ]
  },
  {
    "comments": [
      "\nThis hook allows you to freeze players screen.\n",
      "@name WeaponHooks:FreezeMovement",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/FreezeMovement",
      "@note Player will still be able to move or shoot",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Return true to freeze moving the view"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "FreezeMovement",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the sequence enumeration number that the weapon is playing.\n",
      "@name WeaponFuncs:GetActivity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetActivity",
      "@bug #2543 This can return inconsistent results between the server and client.",
      "@param {Weapon} this - no description",
      "@returns {ACT} - Current activity, see @ACT enum. Returns 0 if the weapon doesn't have active sequence."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetActivity",
    "typings": [
      "(this: Weapon): ACT"
    ]
  },
  {
    "comments": [
      "\nCalled before firing animation events, such as muzzle flashes or shell ejections.\nThis will only be called serverside for 3000-range events, and clientside for 5000-range  and other events.\n",
      "@name WeaponHooks:FireAnimationEvent",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/FireAnimationEvent",
      "@param {Weapon} this - no description",
      "@param {Vector} pos - Position of the effect.",
      "@param {Angle} ang - Angle of the effect.",
      "@param {number} event - The event ID of happened even. See [this page](http://developer.valvesoftware.com/wiki/Animation_Events).",
      "@param {string} options - Name or options of the event.",
      "@returns {boolean} - Return true to disable the effect."
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "FireAnimationEvent",
    "typings": [
      "(this: Weapon, pos: Vector, ang: Angle, event: number, options: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player or NPC has picked the weapon up.\n",
      "@name WeaponHooks:Equip",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/Equip",
      "@param {Weapon} this - no description",
      "@param {Player | NPC} NewOwner - The one who picked the weapon up. Can be @Player type or @NPC type.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "Equip",
    "typings": [
      "(this: Weapon, NewOwner: Player | NPC): void"
    ]
  },
  {
    "comments": [
      "\nThe player has picked up the weapon and has taken the ammo from it.\nThe weapon will be removed immidiately after this call.\n",
      "@name WeaponHooks:EquipAmmo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/EquipAmmo",
      "@param {Weapon} this - no description",
      "@param {Player} ply - The player who picked up the weapon",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "EquipAmmo",
    "typings": [
      "(this: Weapon, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled when we are about to draw the translucent world model.\n",
      "@name WeaponHooks:DrawWorldModelTranslucent",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/DrawWorldModelTranslucent",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "DrawWorldModelTranslucent",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled when we are about to draw the world model.\n",
      "@name WeaponHooks:DrawWorldModel",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/DrawWorldModel",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "DrawWorldModel",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nThis hook allows you to draw on screen while this weapon is in use. This hook is called **before** @WeaponHooks:DrawHUD and is equivalent of @GamemodeHooks:HUDPaintBackground.\n",
      "@name WeaponHooks:DrawHUDBackground",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/DrawHUDBackground",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "DrawHUDBackground",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nThis hook draws the selection icon in the weapon selection menu.\n",
      "@name WeaponHooks:DrawWeaponSelection",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/DrawWeaponSelection",
      "@param {Weapon} this - no description",
      "@param {number} x - X coordinate of the selection panel",
      "@param {number} y - Y coordinate of the selection panel",
      "@param {number} width - Width of the selection panel",
      "@param {number} height - Height of the selection panel",
      "@param {number} alpha - Alpha value of the selection panel",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "DrawWeaponSelection",
    "typings": [
      "(this: Weapon, x: number, y: number, width: number, height: number, alpha: number): void"
    ]
  },
  {
    "comments": [
      "\nThis hook allows you to draw on screen while this weapon is in use.\nIf you want to draw a custom crosshair, consider using @WeaponHooks:DoDrawCrosshair instead.\n",
      "@name WeaponHooks:DrawHUD",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/DrawHUD",
      "@param {Weapon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "DrawHUD",
    "typings": [
      "(this: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled so the weapon can override the impact effects it makes.\n",
      "@name WeaponHooks:DoImpactEffect",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/DoImpactEffect",
      "@param {Weapon} this - no description",
      "@param {TraceResult} tr - A @TraceResult structure from player's eyes to the impact point",
      "@param {DMG} damageType - The damage type of bullet. See @DMG enum",
      "@returns {boolean} - Return true to not do the default thing - which is to call UTIL_ImpactTrace in C++"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "DoImpactEffect",
    "typings": [
      "(this: Weapon, tr: TraceResult, damageType: DMG): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when the crosshair is about to get drawn, and allows you to override it.\n",
      "@name WeaponHooks:DoDrawCrosshair",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/DoDrawCrosshair",
      "@note This function will not be called if **SWEP.DrawCrosshair** set to false.",
      "@note This function will not be called if player was affected by @Player:CrosshairDisable.",
      "@bug #2117 The arguments passed to this function are not affected by **SWEP.AccurateCrosshair**.",
      "@param {Weapon} this - no description",
      "@param {number} x - X coordinate of the crosshair.",
      "@param {number} y - Y coordinate of the crosshair.",
      "@returns {boolean} - Return true to override the default crosshair."
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "DoDrawCrosshair",
    "typings": [
      "(this: Weapon, x: number, y: number): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when player has just switched to this weapon.\n",
      "@name WeaponHooks:Deploy",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/Deploy",
      "@note Due to this hook being predicted, it is not called clientside in singleplayer at all, and in multiplayer it will not be called clientside if the weapon is switched with @Player:SelectWeapon or the \"use\" console command, however it will be called clientside with the default weapon selection menu and when using @CUserCmd:SelectWeapon",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Return true to allow switching away from this weapon using lastinv command"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "Deploy",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows you to use any numbers you want for the ammo display on the HUD.\nCan be useful for weapons that don't use standard ammo.\n",
      "@name WeaponHooks:CustomAmmoDisplay",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/CustomAmmoDisplay",
      "@param {Weapon} this - no description",
      "@returns {IWeaponHooksCustomAmmoDisplayReturn} - The new ammo display settings. A table with 4 possible keys:\nThere is **no** SecondaryClip!"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "CustomAmmoDisplay",
    "typings": [
      "(this: Weapon): IWeaponHooksCustomAmmoDisplayReturn"
    ],
    "types": [
      {
        "comments": [
          "Draw - {boolean}: Whether to draw the ammo display or not"
        ],
        "type": "interface",
        "name": "Draw",
        "typing": "boolean",
        "context": "IWeaponHooksCustomAmmoDisplayReturn"
      },
      {
        "comments": [
          "PrimaryClip - {number}: Amount of primary ammo in the clip"
        ],
        "type": "interface",
        "name": "PrimaryClip",
        "typing": "number",
        "context": "IWeaponHooksCustomAmmoDisplayReturn"
      },
      {
        "comments": [
          "PrimaryAmmo - {number}: Amount of primary ammo in the reserves"
        ],
        "type": "interface",
        "name": "PrimaryAmmo",
        "typing": "number",
        "context": "IWeaponHooksCustomAmmoDisplayReturn"
      },
      {
        "comments": [
          "SecondaryAmmo - {number}: Amount of secondary ammo. It is shown like alt-fire for SMG1 and AR2 are shown."
        ],
        "type": "interface",
        "name": "SecondaryAmmo",
        "typing": "number",
        "context": "IWeaponHooksCustomAmmoDisplayReturn"
      }
    ]
  },
  {
    "comments": [
      "\nForces the weapon to reload while playing given animation.\n",
      "@name WeaponFuncs:DefaultReload",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/DefaultReload",
      "@param {Weapon} this - no description",
      "@param {ACT} act - Sequence to use as reload animation. Uses the @ACT enum.",
      "@returns {boolean} - Did reloading actually take place"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "DefaultReload",
    "typings": [
      "(this: Weapon, act: ACT): boolean"
    ]
  },
  {
    "comments": [
      "\nHelper function for checking for no ammo.\n",
      "@name WeaponHooks:CanSecondaryAttack",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/CanSecondaryAttack",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Can use secondary attack"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "CanSecondaryAttack",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns how much primary ammo is in the magazine.\n",
      "@name WeaponFuncs:Clip1",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/Clip1",
      "@param {Weapon} this - no description",
      "@returns {number} - The amount of primary ammo in the magazine."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "Clip1",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nGets the next time the weapon can primary fire. ( Can call @WeaponHooks:PrimaryAttack )\n",
      "@name WeaponFuncs:GetNextPrimaryFire",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/GetNextPrimaryFire",
      "@param {Weapon} this - no description",
      "@returns {number} - The time, relative to @CurTime function"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetNextPrimaryFire",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nHelper function for checking for no ammo.\n",
      "@name WeaponHooks:CanPrimaryAttack",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/CanPrimaryAttack",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Can use primary attack"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "CanPrimaryAttack",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a Citizen NPC is looking around to a (better) weapon to pickup.\n",
      "@name WeaponHooks:CanBePickedUpByNPCs",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/CanBePickedUpByNPCs",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Return true to allow this weapon to be picked up by NPCs."
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "CanBePickedUpByNPCs",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns how much secondary ammo is in magazine.\n",
      "@name WeaponFuncs:Clip2",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/Clip2",
      "@param {Weapon} this - no description",
      "@returns {number} - The amount of secondary ammo in the magazine."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "Clip2",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nCalls a SWEP function on client.\n",
      "@name WeaponFuncs:CallOnClient",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/CallOnClient",
      "@note Only the second argument is passed as argument and must be a string",
      "@warning This uses the @usermessage library internally, because of that, the combined length of the arguments of this function may not exceed 254 bytes/characters or the function will cease to function!",
      "@param {Weapon} this - no description",
      "@param {string} functionName - Name of function to call. If you want to call SWEP:MyFunc() on client, you type in \"MyFunc\"",
      "@param {string} arguments - Arguments for the function, separated by spaces.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "CallOnClient",
    "typings": [
      "(this: Weapon, functionName: string, arguments?: string): void"
    ]
  },
  {
    "comments": [
      "\nAllows overriding the position and angle of the viewmodel. This hook only works if you haven't overridden @GamemodeHooks:CalcViewModelView.\n",
      "@name WeaponHooks:CalcViewModelView",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/CalcViewModelView",
      "@param {Weapon} this - no description",
      "@param {Entity} ViewModel - The viewmodel entity",
      "@param {Vector} OldEyePos - Original position (before viewmodel bobbing and swaying)",
      "@param {Angle} OldEyeAng - Original angle (before viewmodel bobbing and swaying)",
      "@param {Vector} EyePos - Current position",
      "@param {Angle} EyeAng - Current angle",
      "@returns {Vector} - New position",
      "@returns {Angle} - New angle",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "CalcViewModelView",
    "typings": [
      "(this: Weapon, ViewModel: Entity, OldEyePos: Vector, OldEyeAng: Angle, EyePos: Vector, EyeAng: Angle): [Vector, Angle]"
    ]
  },
  {
    "comments": [
      "\nReturns how much of secondary ammo the player has.\n",
      "@name WeaponHooks:Ammo2",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/Ammo2",
      "@param {Weapon} this - no description",
      "@returns {number} - The amount of secondary ammo player has"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "Ammo2",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nAllows you to adjust player view while this weapon in use.\nThis hook is called from the default implementation of @GamemodeHooks:CalcView ([](https://github.com/garrynewman/garrysmod/blob/master/garrysmod/gamemodes/base/gamemode/cl_init.lua#L376-L383)). Therefore, it will not be called if any other hook added to CalcView returns any value, or if the current gamemode overrides the default hook and does not call the SWEP function.\n",
      "@name WeaponHooks:CalcView",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/CalcView",
      "@bug  SWEPs that define this function will not work with the [taunt camera.](https://wiki.garrysmod.com/page/Global/TauntCamera)",
      "@param {Weapon} this - no description",
      "@param {Player} ply - The owner of weapon",
      "@param {Vector} pos - Current position of players view",
      "@param {Angle} ang - Current angles of players view",
      "@param {number} fov - Current FOV of players view",
      "@returns {Vector} - New position of players view",
      "@returns {Angle} - New angle of players view",
      "@returns {number} - New FOV of players view",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "CalcView",
    "typings": [
      "(this: Weapon, ply: Player, pos: Vector, ang: Angle, fov: number): [Vector, Angle, number]"
    ]
  },
  {
    "comments": [
      "\nReturns how much of primary ammo the player has.\n",
      "@name WeaponHooks:Ammo1",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/Ammo1",
      "@param {Weapon} this - no description",
      "@returns {number} - The amount of primary ammo player has"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "Ammo1",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether the weapon allows to being switched from when a better ( @WeaponFuncs:GetWeight ) weapon is being picked up.\n",
      "@name WeaponFuncs:AllowsAutoSwitchFrom",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/AllowsAutoSwitchFrom",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Whether the weapon allows to being switched from."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "AllowsAutoSwitchFrom",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the weapon allows to being switched to when a better ( @WeaponFuncs:GetWeight ) weapon is being picked up.\n",
      "@name WeaponFuncs:AllowsAutoSwitchTo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Weapon/AllowsAutoSwitchTo",
      "@param {Weapon} this - no description",
      "@returns {boolean} - Whether the weapon allows to being switched to."
    ],
    "type": "class",
    "context": "WeaponFuncs",
    "extends": [
      "Entity"
    ],
    "name": "AllowsAutoSwitchTo",
    "typings": [
      "(this: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when another entity fires an event to this entity.\n",
      "@name WeaponHooks:AcceptInput",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/AcceptInput",
      "@param {Weapon} this - no description",
      "@param {string} inputName - The name of the input that was triggered.",
      "@param {Entity} activator - The initial cause for the input getting triggered.",
      "@param {Entity} called - The entity that directly trigger the input.",
      "@param {string} data - The data passed.",
      "@returns {boolean} - Should we suppress the default action for this input?"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "AcceptInput",
    "typings": [
      "(this: Weapon, inputName: string, activator: Entity, called: Entity, data: string): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows you to adjust the mouse sensitivity. This hook only works if you haven't overridden @GamemodeHooks:AdjustMouseSensitivity.\n",
      "@name WeaponHooks:AdjustMouseSensitivity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/WEAPON/AdjustMouseSensitivity",
      "@param {Weapon} this - no description",
      "@returns {number} - Sensitivity scale"
    ],
    "type": "class",
    "context": "WeaponHooks",
    "name": "AdjustMouseSensitivity",
    "typings": [
      "(this: Weapon): number"
    ]
  },
  {
    "comments": [
      "\nSets all components of the matrix to 0, also known as a [null matrix](https://en.wikipedia.org/wiki/Zero_matrix).\nThis function is more efficient than setting each element manually.\n",
      "@name VMatrix:Zero",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/Zero",
      "@param {VMatrix} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "Zero",
    "typings": [
      "(this: VMatrix): void"
    ]
  },
  {
    "comments": [
      "\nReturns each component of the matrix, expanding rows before columns.\n",
      "@name VMatrix:Unpack",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/Unpack",
      "@param {VMatrix} this - no description",
      "@returns {number} - @VMatrix:GetField(1, 1)",
      "@returns {number} - @VMatrix:GetField(1, 2)",
      "@returns {number} - @VMatrix:GetField(1, 3)",
      "@returns {number} - @VMatrix:GetField(1, 4)",
      "@returns {number} - @VMatrix:GetField(2, 1)",
      "@returns {number} - @VMatrix:GetField(2, 2)",
      "@returns {number} - @VMatrix:GetField(2, 3)",
      "@returns {number} - @VMatrix:GetField(2, 4)",
      "@returns {number} - @VMatrix:GetField(3, 1)",
      "@returns {number} - @VMatrix:GetField(3, 2)",
      "@returns {number} - @VMatrix:GetField(3, 3)",
      "@returns {number} - @VMatrix:GetField(3, 4)",
      "@returns {number} - @VMatrix:GetField(4, 1)",
      "@returns {number} - @VMatrix:GetField(4, 2)",
      "@returns {number} - @VMatrix:GetField(4, 3)",
      "@returns {number} - @VMatrix:GetField(4, 4)",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "Unpack",
    "typings": [
      "(this: VMatrix): [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number]"
    ]
  },
  {
    "comments": [
      "\nTranslates the matrix by the given vector aka. adds the vector to the translation.\nPostmultiplies the matrix by a translation matrix (A = AT).\n",
      "@name VMatrix:Translate",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/Translate",
      "@param {VMatrix} this - no description",
      "@param {Vector} translation - Vector to translate the matrix by.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "Translate",
    "typings": [
      "(this: VMatrix, translation: Vector): void"
    ]
  },
  {
    "comments": [
      "\nConverts the matrix to a 4x4 table. See @Matrix function function.\n",
      "@name VMatrix:ToTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/ToTable",
      "@param {VMatrix} this - no description",
      "@returns {table} - The 4x4 table."
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "ToTable",
    "typings": [
      "(this: VMatrix): table"
    ]
  },
  {
    "comments": [
      "\nSets the up direction of the matrix.\nie. The third column of the matrix, excluding the w coordinate.\n",
      "@name VMatrix:SetUp",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/SetUp",
      "@param {VMatrix} this - no description",
      "@param {Vector} forward - The up direction of the matrix.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "SetUp",
    "typings": [
      "(this: VMatrix, forward: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets each component of the matrix.\n",
      "@name VMatrix:SetUnpacked",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/SetUnpacked",
      "@param {VMatrix} this - no description",
      "@param {number} e11 - no description",
      "@param {number} e12 - no description",
      "@param {number} e13 - no description",
      "@param {number} e14 - no description",
      "@param {number} e21 - no description",
      "@param {number} e22 - no description",
      "@param {number} e23 - no description",
      "@param {number} e24 - no description",
      "@param {number} e31 - no description",
      "@param {number} e32 - no description",
      "@param {number} e33 - no description",
      "@param {number} e34 - no description",
      "@param {number} e41 - no description",
      "@param {number} e42 - no description",
      "@param {number} e43 - no description",
      "@param {number} e44 - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "SetUnpacked",
    "typings": [
      "(this: VMatrix, e11: number, e12: number, e13: number, e14: number, e21: number, e22: number, e23: number, e24: number, e31: number, e32: number, e33: number, e34: number, e41: number, e42: number, e43: number, e44: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the absolute translation of the matrix.\n",
      "@name VMatrix:SetTranslation",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/SetTranslation",
      "@param {VMatrix} this - no description",
      "@param {Vector} translation - New translation.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "SetTranslation",
    "typings": [
      "(this: VMatrix, translation: Vector): void"
    ]
  },
  {
    "comments": [
      "\nModifies the scale of the matrix while preserving the rotation and translation.\n",
      "@name VMatrix:SetScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/SetScale",
      "@param {VMatrix} this - no description",
      "@param {Vector} scale - The scale to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "SetScale",
    "typings": [
      "(this: VMatrix, scale: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the right direction of the matrix.\nie. The second column of the matrix, negated, excluding the w coordinate.\n",
      "@name VMatrix:SetRight",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/SetRight",
      "@param {VMatrix} this - no description",
      "@param {Vector} forward - The right direction of the matrix.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "SetRight",
    "typings": [
      "(this: VMatrix, forward: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the forward direction of the matrix.\nie. The first column of the matrix, excluding the w coordinate.\n",
      "@name VMatrix:SetForward",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/SetForward",
      "@param {VMatrix} this - no description",
      "@param {Vector} forward - The forward direction of the matrix.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "SetForward",
    "typings": [
      "(this: VMatrix, forward: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets a specific field in the matrix.\n",
      "@name VMatrix:SetField",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/SetField",
      "@param {VMatrix} this - no description",
      "@param {number} row - Row of the field to be set, from 1 to 4",
      "@param {number} column - Column of the field to be set, from 1 to 4",
      "@param {number} value - The value to set in that field",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "SetField",
    "typings": [
      "(this: VMatrix, row: number, column: number, value: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the absolute rotation of the matrix.\n",
      "@name VMatrix:SetAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/SetAngles",
      "@param {VMatrix} this - no description",
      "@param {Angle} angle - New angles.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "SetAngles",
    "typings": [
      "(this: VMatrix, angle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nCopies values from the given matrix object.\n",
      "@name VMatrix:Set",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/Set",
      "@param {VMatrix} this - no description",
      "@param {VMatrix} src - The matrix to copy values from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "Set",
    "typings": [
      "(this: VMatrix, src: VMatrix): void"
    ]
  },
  {
    "comments": [
      "\nScales the absolute translation with the given value.\n",
      "@name VMatrix:ScaleTranslation",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/ScaleTranslation",
      "@param {VMatrix} this - no description",
      "@param {number} scale - Value to scale the translation with.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "ScaleTranslation",
    "typings": [
      "(this: VMatrix, scale: number): void"
    ]
  },
  {
    "comments": [
      "\nScales the matrix by the given vector.\nPostmultiplies the matrix by a scaling matrix (A = AS).\n",
      "@name VMatrix:Scale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/Scale",
      "@param {VMatrix} this - no description",
      "@param {Vector} scale - Vector to scale with matrix with.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "Scale",
    "typings": [
      "(this: VMatrix, scale: Vector): void"
    ]
  },
  {
    "comments": [
      "\nRotates the matrix by the given angle.\nPostmultiplies the matrix by a rotation matrix (A = AR).\n",
      "@name VMatrix:Rotate",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/Rotate",
      "@param {VMatrix} this - no description",
      "@param {Angle} rotation - Rotation.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "Rotate",
    "typings": [
      "(this: VMatrix, rotation: Angle): void"
    ]
  },
  {
    "comments": [
      "\nChecks whenever all fields of the matrix are 0, aka if this is a [null matrix](https://en.wikipedia.org/wiki/Zero_matrix).\n",
      "@name VMatrix:IsZero",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/IsZero",
      "@param {VMatrix} this - no description",
      "@returns {boolean} - If the matrix is a null matrix."
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "IsZero",
    "typings": [
      "(this: VMatrix): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the matrix is a rotation matrix or not.\nTechnically it checks if the forward, right and up vectors are orthogonal and normalized.\n",
      "@name VMatrix:IsRotationMatrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/IsRotationMatrix",
      "@param {VMatrix} this - no description",
      "@returns {boolean} - Is the matrix a rotation matrix or not"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "IsRotationMatrix",
    "typings": [
      "(this: VMatrix): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the matrix is equal to Identity matrix or not.\n",
      "@name VMatrix:IsIdentity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/IsIdentity",
      "@param {VMatrix} this - no description",
      "@returns {boolean} - Is the matrix an Identity matrix or not"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "IsIdentity",
    "typings": [
      "(this: VMatrix): boolean"
    ]
  },
  {
    "comments": [
      "\nInverts the matrix. This function will not fail, but only works correctly on matrices that contain only translation and/or rotation.\nUsing this function on a matrix with modified scale may return an incorrect inverted matrix.\nTo invert a matrix that contains other modifications, see @VMatrix:Invert.\n",
      "@name VMatrix:InvertTR",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/InvertTR",
      "@param {VMatrix} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "InvertTR",
    "typings": [
      "(this: VMatrix): void"
    ]
  },
  {
    "comments": [
      "\nInverts the matrix.\nInverting the matrix will fail if its [determinant](https://en.wikipedia.org/wiki/Determinant) is 0 or close to 0. (ie. its \"scale\" in any direction is 0.)\nIf the matrix cannot be inverted, it does not get modified.\nSee also @VMatrix:InvertTR.\n",
      "@name VMatrix:Invert",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/Invert",
      "@param {VMatrix} this - no description",
      "@returns {boolean} - Whether the matrix was inverted or not"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "Invert",
    "typings": [
      "(this: VMatrix): boolean"
    ]
  },
  {
    "comments": [
      "\nInitializes the matrix as Identity matrix.\n",
      "@name VMatrix:Identity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/Identity",
      "@param {VMatrix} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "Identity",
    "typings": [
      "(this: VMatrix): void"
    ]
  },
  {
    "comments": [
      "\nReturns the absolute translation of the matrix.\n",
      "@name VMatrix:GetTranslation",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/GetTranslation",
      "@param {VMatrix} this - no description",
      "@returns {Vector} - Absolute translation of the matrix"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "GetTranslation",
    "typings": [
      "(this: VMatrix): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the absolute scale of the matrix.\n",
      "@name VMatrix:GetScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/GetScale",
      "@param {VMatrix} this - no description",
      "@returns {Vector} - Absolute scale of the matrix"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "GetScale",
    "typings": [
      "(this: VMatrix): Vector"
    ]
  },
  {
    "comments": [
      "\nGets the up direction of the matrix.\nie. The third column of the matrix, excluding the w coordinate.\n",
      "@name VMatrix:GetUp",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/GetUp",
      "@param {VMatrix} this - no description",
      "@returns {Vector} - The up direction of the matrix."
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "GetUp",
    "typings": [
      "(this: VMatrix): Vector"
    ]
  },
  {
    "comments": [
      "\nGets the right direction of the matrix.\nie. The second column of the matrix, negated, excluding the w coordinate.\n",
      "@name VMatrix:GetRight",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/GetRight",
      "@param {VMatrix} this - no description",
      "@returns {Vector} - The right direction of the matrix."
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "GetRight",
    "typings": [
      "(this: VMatrix): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns an inverted matrix without modifying the original matrix. This function will not fail, but only works correctly on matrices that contain only translation and/or rotation.\nUsing this function on a matrix with modified scale may return an incorrect inverted matrix.\nTo get the inverse of a matrix that contains other modifications, see @VMatrix:GetInverse.\n",
      "@name VMatrix:GetInverseTR",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/GetInverseTR",
      "@param {VMatrix} this - no description",
      "@returns {VMatrix} - The inverted matrix."
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "GetInverseTR",
    "typings": [
      "(this: VMatrix): VMatrix"
    ]
  },
  {
    "comments": [
      "\nReturns an inverted matrix without modifying the original matrix.\nInverting the matrix will fail if its [determinant](https://en.wikipedia.org/wiki/Determinant) is 0 or close to 0. (ie. its \"scale\" in any direction is 0.)\nSee also @VMatrix:GetInverseTR.\n",
      "@name VMatrix:GetInverse",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/GetInverse",
      "@param {VMatrix} this - no description",
      "@returns {VMatrix} - The inverted matrix if possible, nil otherwise"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "GetInverse",
    "typings": [
      "(this: VMatrix): VMatrix"
    ]
  },
  {
    "comments": [
      "\nReturns the absolute rotation of the matrix.\n",
      "@name VMatrix:GetAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/GetAngles",
      "@param {VMatrix} this - no description",
      "@returns {Angle} - Absolute rotation of the matrix"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "GetAngles",
    "typings": [
      "(this: VMatrix): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns a specific field in the matrix.\n",
      "@name VMatrix:GetField",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/GetField",
      "@param {VMatrix} this - no description",
      "@param {number} row - Row of the field whose value is to be retrieved, from 1 to 4",
      "@param {number} column - Column of the field whose value is to be retrieved, from 1 to 4",
      "@returns {number} - The value of the specified field"
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "GetField",
    "typings": [
      "(this: VMatrix, row: number, column: number): number"
    ]
  },
  {
    "comments": [
      "\nGets the forward direction of the matrix.\nie. The first column of the matrix, excluding the w coordinate.\n",
      "@name VMatrix:GetForward",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/VMatrix/GetForward",
      "@param {VMatrix} this - no description",
      "@returns {Vector} - The forward direction of the matrix."
    ],
    "type": "class",
    "context": "VMatrix",
    "name": "GetForward",
    "typings": [
      "(this: VMatrix): Vector"
    ]
  },
  {
    "comments": [
      "\nAttempts to create an @IVideoWriter type.\n",
      "@name video.Record",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/video/Record",
      "@param {void} this - no description",
      "@param {VideoData} config - The video config. See @VideoData structure.",
      "@returns {IVideoWriter} - The video object (returns **false** if there is an error)",
      "@returns {string} - The error string, if there is an error",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "video",
    "name": "Record",
    "typings": [
      "(this: void, config: VideoData): [IVideoWriter, string]"
    ]
  },
  {
    "comments": [
      "\nRegisters a table to use as a panel. All this function does is assigns Base key to your table and returns the table.\n",
      "@name vgui.RegisterTable",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/RegisterTable",
      "@param {void} this - no description",
      "@param {table} panel - The PANEL table",
      "@param {string} base - A base for the panel",
      "@returns {table} - The PANEL table"
    ],
    "type": "func",
    "context": "vgui",
    "name": "RegisterTable",
    "typings": [
      "(this: void, panel: table, base?: string): table"
    ]
  },
  {
    "comments": [
      "\nRegisters a new VGUI panel from a file.\n",
      "@name vgui.RegisterFile",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/RegisterFile",
      "@param {void} this - no description",
      "@param {string} file - The file to register",
      "@returns {table} - A table containing info about the panel. Can be supplied to @vgui.CreateFromTable"
    ],
    "type": "func",
    "context": "vgui",
    "name": "RegisterFile",
    "typings": [
      "(this: void, file: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the cursor is hovering the world panel.\n",
      "@name vgui.IsHoveringWorld",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/IsHoveringWorld",
      "@param {void} this - no description",
      "@returns {boolean} - isHoveringWorld"
    ],
    "type": "func",
    "context": "vgui",
    "name": "IsHoveringWorld",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nRegisters a panel for later creation.\n",
      "@name vgui.Register",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/Register",
      "@param {void} this - no description",
      "@param {string} classname - Classname of the panel to create.",
      "@param {table} panelTable - The table containg the panel information.",
      "@param {string} baseName - Name of the base of the panel.",
      "@returns {table} - The given panel table from second argument"
    ],
    "type": "func",
    "context": "vgui",
    "name": "Register",
    "typings": [
      "(this: void, classname: string, panelTable: table, baseName: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns the global world panel which is the parent to all others.\nSee also @GetHUDPanel function.\n",
      "@name vgui.GetWorldPanel",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/GetWorldPanel",
      "@param {void} this - no description",
      "@returns {Panel} - The world panel"
    ],
    "type": "func",
    "context": "vgui",
    "name": "GetWorldPanel",
    "typings": [
      "(this: void): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the panel which is currently receiving keyboard input.\n",
      "@name vgui.GetKeyboardFocus",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/GetKeyboardFocus",
      "@param {void} this - no description",
      "@returns {Panel} - The panel with keyboard focus"
    ],
    "type": "func",
    "context": "vgui",
    "name": "GetKeyboardFocus",
    "typings": [
      "(this: void): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the panel the cursor is hovering above.\n",
      "@name vgui.GetHoveredPanel",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/GetHoveredPanel",
      "@warning This returns a cached value that is only updated after rendering and *before* the next VGUI Think/Layout pass.\nie. it lags one frame behind panel layout and is completely unhelpful for @PanelHooks:Paint if your panels are moving around under the mouse a lot every frame.",
      "@param {void} this - no description",
      "@returns {Panel} - The panel that the user is currently hovering over with their cursor."
    ],
    "type": "func",
    "context": "vgui",
    "name": "GetHoveredPanel",
    "typings": [
      "(this: void): Panel"
    ]
  },
  {
    "comments": [
      "\nGets the method table of this panel. Does not return parent methods!\n",
      "@name vgui.GetControlTable",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/GetControlTable",
      "@param {void} this - no description",
      "@param {string} Panelname - The name of the panel",
      "@returns {table} - methods"
    ],
    "type": "func",
    "context": "vgui",
    "name": "GetControlTable",
    "typings": [
      "(this: void, Panelname: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns whether the currently focused panel is a child of the given one.\n",
      "@name vgui.FocusedHasParent",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/FocusedHasParent",
      "@param {void} this - no description",
      "@param {Panel} parent - The parent panel to check the currently focused one against. This doesn't need to be a direct parent (focused panel can be a child of a child and so on).",
      "@returns {boolean} - Whether or not the focused panel is a child of the passed one."
    ],
    "type": "func",
    "context": "vgui",
    "name": "FocusedHasParent",
    "typings": [
      "(this: void, parent: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the cursor is currently active and visible.\n",
      "@name vgui.CursorVisible",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/CursorVisible",
      "@param {void} this - no description",
      "@returns {boolean} - isCursorVisible"
    ],
    "type": "func",
    "context": "vgui",
    "name": "CursorVisible",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nCreates a engine panel.\n",
      "@name vgui.CreateX",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/CreateX",
      "@internal",
      "@param {void} this - no description",
      "@param {string} cls - Class of the panel to create",
      "@param {Panel} parent - If specified, parents created panel to given one",
      "@param {string} name - Name of the created panel",
      "@returns {Panel} - Created panel"
    ],
    "type": "func",
    "context": "vgui",
    "name": "CreateX",
    "typings": [
      "(this: void, cls: string, parent?: Panel, name?: string): Panel"
    ]
  },
  {
    "comments": [
      "\nCreates a panel from table.\n",
      "@name vgui.CreateFromTable",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/CreateFromTable",
      "@param {void} this - no description",
      "@param {table} metatable - Your PANEL table",
      "@param {Panel} parent - Which panel to parent the newly created panel to",
      "@param {string} name - Name of your panel",
      "@returns {Panel} - Created panel"
    ],
    "type": "func",
    "context": "vgui",
    "name": "CreateFromTable",
    "typings": [
      "(this: void, metatable: table, parent?: Panel, name?: string): Panel"
    ]
  },
  {
    "comments": [
      "\nStarts or stops the engine.\n",
      "@name Vehicle:StartEngine",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/StartEngine",
      "@param {Vehicle} this - no description",
      "@param {boolean} start - True to start, false to stop.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "StartEngine",
    "typings": [
      "(this: Vehicle, start: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCreates a panel by the specified classname.\n",
      "@name vgui.Create",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/vgui/Create",
      "@param {void} this - no description",
      "@param {string} classname - Classname of the panel to create. Valid classnames are listed at: [VGUI Element List](https://wiki.garrysmod.com/page/VGUI%20Element%20List).",
      "@param {Panel} parent - Parent of the created panel.",
      "@param {string} name - Name of the created panel.",
      "@returns {Panel} - panel"
    ],
    "type": "func",
    "context": "vgui",
    "name": "Create",
    "typings": [
      "(this: void, classname: string, parent?: Panel, name?: string): Panel"
    ]
  },
  {
    "comments": [
      "\nSets friction of given wheel.  This function may be broken.\n",
      "@name Vehicle:SetWheelFriction",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetWheelFriction",
      "@validate",
      "@param {Vehicle} this - no description",
      "@param {number} wheel - The wheel to change the friction of",
      "@param {number} friction - The new friction to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetWheelFriction",
    "typings": [
      "(this: Vehicle, wheel: number, friction: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the vehicle parameters for given vehicle.\n",
      "@name Vehicle:SetVehicleParams",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetVehicleParams",
      "@note Not all variables from the @VehicleParams structure can be set.",
      "@bug #2625 Because this method uses miles per hour but @Vehicle:GetVehicleParams returns Hammer units per second, this method incorrectly modifies the vehicle engine's \"boostMaxSpeed\", \"maxRevSpeed\" and \"maxSpeed\" even when not explicitly set in a call to this method.\n**Workaround**: In order to retain the original values for these fields, call @Vehicle:GetVehicleParams yourself, convert the mentioned fields from Hammer units per second to miles per hour (1 MPH ≈ 17.6 HU/s in this case) and add them to the table passed into the call to this setter. Avoid doing this repeatedly to avoid floating point inaccuracies over time (store the ready-calculated value for next time if possible).",
      "@param {Vehicle} this - no description",
      "@param {VehicleParams} params - The new new vehicle parameters. See @VehicleParams structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetVehicleParams",
    "typings": [
      "(this: Vehicle, params: VehicleParams): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the entry or exit camera animation should be played or not.\n",
      "@name Vehicle:SetVehicleEntryAnim",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetVehicleEntryAnim",
      "@param {Vehicle} this - no description",
      "@param {boolean} bOn - Whether the entry or exit camera animation should be played or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetVehicleEntryAnim",
    "typings": [
      "(this: Vehicle, bOn: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the throttle of the vehicle. It is possible that this function does not work with a valid driver in it.\n",
      "@name Vehicle:SetThrottle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetThrottle",
      "@param {Vehicle} this - no description",
      "@param {number} throttle - The new throttle.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetThrottle",
    "typings": [
      "(this: Vehicle, throttle: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the vehicle class name.\n",
      "@name Vehicle:SetVehicleClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetVehicleClass",
      "@internal",
      "@param {Vehicle} this - no description",
      "@param {string} cls - The vehicle class name to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetVehicleClass",
    "typings": [
      "(this: Vehicle, cls: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the third person mode state.\n",
      "@name Vehicle:SetThirdPersonMode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetThirdPersonMode",
      "@param {Vehicle} this - no description",
      "@param {boolean} enable - Enable or disable the third person mode for this vehicle",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetThirdPersonMode",
    "typings": [
      "(this: Vehicle, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum steering degrees of the vehicle\n",
      "@name Vehicle:SetSteeringDegrees",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetSteeringDegrees",
      "@param {Vehicle} this - no description",
      "@param {number} steeringDegrees - The new maximum steering degree",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetSteeringDegrees",
    "typings": [
      "(this: Vehicle, steeringDegrees: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the steering of the vehicle.\n",
      "@name Vehicle:SetSteering",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetSteering",
      "@validate",
      "@param {Vehicle} this - no description",
      "@param {number} front - Angle of the front wheels (-1 to 1)",
      "@param {number} rear - Angle of the rear wheels (-1 to 1)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetSteering",
    "typings": [
      "(this: Vehicle, front: number, rear: number): void"
    ]
  },
  {
    "comments": [
      "\nSets spring length of given wheel\n",
      "@name Vehicle:SetSpringLength",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetSpringLength",
      "@param {Vehicle} this - no description",
      "@param {number} wheel - The wheel to change spring length of",
      "@param {number} length - The new spring length",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetSpringLength",
    "typings": [
      "(this: Vehicle, wheel: number, length: number): void"
    ]
  },
  {
    "comments": [
      "\nSets maximum forward throttle\n",
      "@name Vehicle:SetMaxThrottle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetMaxThrottle",
      "@param {Vehicle} this - no description",
      "@param {number} maxThrottle - The new maximum throttle.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetMaxThrottle",
    "typings": [
      "(this: Vehicle, maxThrottle: number): void"
    ]
  },
  {
    "comments": [
      "\nSets maximum reverse throttle\n",
      "@name Vehicle:SetMaxReverseThrottle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetMaxReverseThrottle",
      "@param {Vehicle} this - no description",
      "@param {number} maxRevThrottle - The new maximum throttle. This number must be negative.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetMaxReverseThrottle",
    "typings": [
      "(this: Vehicle, maxRevThrottle: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether this vehicle has a brake pedal.\n",
      "@name Vehicle:SetHasBrakePedal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetHasBrakePedal",
      "@param {Vehicle} this - no description",
      "@param {boolean} brakePedal - Whether this vehicle has a brake pedal",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetHasBrakePedal",
    "typings": [
      "(this: Vehicle, brakePedal: boolean): void"
    ]
  },
  {
    "comments": [
      "\nTurns on or off the Jeep handbrake so it can roll without a driver inside.\nDoes nothing while the vehicle has a driver in it.\n",
      "@name Vehicle:SetHandbrake",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetHandbrake",
      "@param {Vehicle} this - no description",
      "@param {boolean} handbrake - true to turn on, false to turn off.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetHandbrake",
    "typings": [
      "(this: Vehicle, handbrake: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the third person camera distance of the vehicle.\n",
      "@name Vehicle:SetCameraDistance",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetCameraDistance",
      "@param {Vehicle} this - no description",
      "@param {number} distance - Camera distance to set to",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetCameraDistance",
    "typings": [
      "(this: Vehicle, distance: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the boost. It is possible that this function does not work while the vehicle has a valid driver in it.\n",
      "@name Vehicle:SetBoost",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/SetBoost",
      "@param {Vehicle} this - no description",
      "@param {number} boost - The new boost value",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "SetBoost",
    "typings": [
      "(this: Vehicle, boost: number): void"
    ]
  },
  {
    "comments": [
      "\nReleases the vehicle's handbrake (Jeep) so it can roll without any passengers.\nThis will be overwritten if the vehicle has a driver. Same as @Vehicle:SetHandbrake( false )\n",
      "@name Vehicle:ReleaseHandbrake",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/ReleaseHandbrake",
      "@param {Vehicle} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "ReleaseHandbrake",
    "typings": [
      "(this: Vehicle): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether this vehicle's engine is underwater or not. ( Internally the attachment point \"engine\" or \"vehicle_engine\" is checked )\n",
      "@name Vehicle:IsVehicleBodyInWater",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/IsVehicleBodyInWater",
      "@param {Vehicle} this - no description",
      "@returns {boolean} - Whether this vehicle's engine is underwater or not."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "IsVehicleBodyInWater",
    "typings": [
      "(this: Vehicle): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the vehicle object is a valid or not. This will return false when @Vehicle type functions are not usable on the vehicle.\n",
      "@name Vehicle:IsValidVehicle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/IsValidVehicle",
      "@param {Vehicle} this - no description",
      "@returns {boolean} - Is the vehicle a valid vehicle or not"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "IsValidVehicle",
    "typings": [
      "(this: Vehicle): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the engine is started or not.\n",
      "@name Vehicle:IsEngineStarted",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/IsEngineStarted",
      "@param {Vehicle} this - no description",
      "@returns {boolean} - Whether the engine is started or not."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "IsEngineStarted",
    "typings": [
      "(this: Vehicle): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the engine is enabled or not, i.e. whether it can be started.\n",
      "@name Vehicle:IsEngineEnabled",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/IsEngineEnabled",
      "@param {Vehicle} this - no description",
      "@returns {boolean} - Whether the engine is enabled"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "IsEngineEnabled",
    "typings": [
      "(this: Vehicle): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this vehicle is currently boosting or not.\n",
      "@name Vehicle:IsBoosting",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/IsBoosting",
      "@param {Vehicle} this - no description",
      "@returns {boolean} - Whether this vehicle is currently boosting or not."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "IsBoosting",
    "typings": [
      "(this: Vehicle): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this vehicle has a brake pedal. See @Vehicle:SetHasBrakePedal.\n",
      "@name Vehicle:HasBrakePedal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/HasBrakePedal",
      "@param {Vehicle} this - no description",
      "@returns {boolean} - Whether this vehicle has a brake pedal or not."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "HasBrakePedal",
    "typings": [
      "(this: Vehicle): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this vehicle has boost at all.\n",
      "@name Vehicle:HasBoost",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/HasBoost",
      "@param {Vehicle} this - no description",
      "@returns {boolean} - Whether this vehicle has boost at all."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "HasBoost",
    "typings": [
      "(this: Vehicle): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the total wheel height.\n",
      "@name Vehicle:GetWheelTotalHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetWheelTotalHeight",
      "@param {Vehicle} this - no description",
      "@param {number} wheel - The wheel to get the base wheel height of.",
      "@returns {number} - The total wheel height."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetWheelTotalHeight",
    "typings": [
      "(this: Vehicle, wheel: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the wheel count of the vehicle\n",
      "@name Vehicle:GetWheelCount",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetWheelCount",
      "@param {Vehicle} this - no description",
      "@returns {number} - The amount of wheels"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetWheelCount",
    "typings": [
      "(this: Vehicle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the wheel contact point.\n",
      "@name Vehicle:GetWheelContactPoint",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetWheelContactPoint",
      "@param {Vehicle} this - no description",
      "@param {number} wheel - The wheel to check",
      "@returns {Vector} - The contact position",
      "@returns {number} - The Surface Properties ID of hit surface.",
      "@returns {boolean} - Whether the wheel is on ground or not",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetWheelContactPoint",
    "typings": [
      "(this: Vehicle, wheel: number): [Vector, number, boolean]"
    ]
  },
  {
    "comments": [
      "\nReturns the base wheel height.\n",
      "@name Vehicle:GetWheelBaseHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetWheelBaseHeight",
      "@param {Vehicle} this - no description",
      "@param {number} wheel - The wheel to get the base wheel height of.",
      "@returns {number} - The base wheel height."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetWheelBaseHeight",
    "typings": [
      "(this: Vehicle, wheel: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the @PhysObj type of given wheel.\n",
      "@name Vehicle:GetWheel",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetWheel",
      "@param {Vehicle} this - no description",
      "@param {number} wheel - The wheel to retrieve",
      "@returns {PhysObj} - The wheel"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetWheel",
    "typings": [
      "(this: Vehicle, wheel: number): PhysObj"
    ]
  },
  {
    "comments": [
      "\nReturns the view position and forward angle of a given passenger seat.\n",
      "@name Vehicle:GetVehicleViewPosition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetVehicleViewPosition",
      "@param {Vehicle} this - no description",
      "@param {number} role - The passenger role. 0 is the driver. This parameter seems to be ignored by the game engine and is therefore optional.",
      "@returns {Vector} - The view position, will be 0, 0, 0 on failure",
      "@returns {Angle} - The view angles, will be 0, 0, 0 on failure",
      "@returns {number} - The field of view, will be 0 on failure",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetVehicleViewPosition",
    "typings": [
      "(this: Vehicle, role?: number): [Vector, Angle, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the vehicle parameters of given vehicle.\n",
      "@name Vehicle:GetVehicleParams",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetVehicleParams",
      "@param {Vehicle} this - no description",
      "@returns {VehicleParams} - The vehicle parameters. See @VehicleParams structure"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetVehicleParams",
    "typings": [
      "(this: Vehicle): VehicleParams"
    ]
  },
  {
    "comments": [
      "\nReturns the vehicle class name. This is only useful for Sandbox spawned vehicles or any vehicle that properly sets the vehicle class with @Vehicle:SetVehicleClass.\n",
      "@name Vehicle:GetVehicleClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetVehicleClass",
      "@param {Vehicle} this - no description",
      "@returns {string} - The class name of the vehicle."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetVehicleClass",
    "typings": [
      "(this: Vehicle): string"
    ]
  },
  {
    "comments": [
      "\nReturns the current throttle of the vehicle.\n",
      "@name Vehicle:GetThrottle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetThrottle",
      "@param {Vehicle} this - no description",
      "@returns {number} - The current throttle of the vehicle"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetThrottle",
    "typings": [
      "(this: Vehicle): number"
    ]
  },
  {
    "comments": [
      "\nReturns if vehicle has thirdperson mode enabled or not.\n",
      "@name Vehicle:GetThirdPersonMode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetThirdPersonMode",
      "@param {Vehicle} this - no description",
      "@returns {boolean} - Returns true if third person mode enabled, false otherwise"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetThirdPersonMode",
    "typings": [
      "(this: Vehicle): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the current steering of the vehicle.\n",
      "@name Vehicle:GetSteering",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetSteering",
      "@param {Vehicle} this - no description",
      "@returns {number} - The current steering of the vehicle."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetSteering",
    "typings": [
      "(this: Vehicle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum steering degree of the vehicle\n",
      "@name Vehicle:GetSteeringDegrees",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetSteeringDegrees",
      "@param {Vehicle} this - no description",
      "@returns {number} - The maximum steering degree of the vehicle"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetSteeringDegrees",
    "typings": [
      "(this: Vehicle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the current speed of the vehicle in MPH.\n",
      "@name Vehicle:GetSpeed",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetSpeed",
      "@param {Vehicle} this - no description",
      "@returns {number} - The speed of the vehicle in MPH"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetSpeed",
    "typings": [
      "(this: Vehicle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the current RPM of the vehicle. This value is fake and doesn't actually affect the vehicle movement.\n",
      "@name Vehicle:GetRPM",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetRPM",
      "@param {Vehicle} this - no description",
      "@returns {number} - The RPM."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetRPM",
    "typings": [
      "(this: Vehicle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the seat position and angle of a given passenger seat.\n",
      "@name Vehicle:GetPassengerSeatPoint",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetPassengerSeatPoint",
      "@param {Vehicle} this - no description",
      "@param {number} role - The passenger role. ( 1 is the driver )",
      "@returns {Vector} - The seat position",
      "@returns {Angle} - The seat angle",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetPassengerSeatPoint",
    "typings": [
      "(this: Vehicle, role: number): [Vector, Angle]"
    ]
  },
  {
    "comments": [
      "\nGets the passenger of the vehicle, returns NULL if no drivers is present.\n",
      "@name Vehicle:GetPassenger",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetPassenger",
      "@param {Vehicle} this - no description",
      "@param {number} passenger - The index of the passenger",
      "@returns {Entity} - The passenger"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetPassenger",
    "typings": [
      "(this: Vehicle, passenger: number): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns some info about the vehicle.\n",
      "@name Vehicle:GetOperatingParams",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetOperatingParams",
      "@param {Vehicle} this - no description",
      "@returns {OperatingParams} - The operating params. See @OperatingParams structure."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetOperatingParams",
    "typings": [
      "(this: Vehicle): OperatingParams"
    ]
  },
  {
    "comments": [
      "\nReturns the max speed of the vehicle in MPH.\n",
      "@name Vehicle:GetMaxSpeed",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetMaxSpeed",
      "@param {Vehicle} this - no description",
      "@returns {number} - The max speed of the vehicle in MPH"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetMaxSpeed",
    "typings": [
      "(this: Vehicle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the current speed of the vehicle in Half-Life Hammer Units (in/s). Same as @EntityFuncs:GetVelocity + @VectorFuncs:Length.\n",
      "@name Vehicle:GetHLSpeed",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetHLSpeed",
      "@param {Vehicle} this - no description",
      "@returns {number} - The speed of the vehicle"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetHLSpeed",
    "typings": [
      "(this: Vehicle): number"
    ]
  },
  {
    "comments": [
      "\nGets the driver of the vehicle, returns NULL if no driver is present.\n",
      "@name Vehicle:GetDriver",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetDriver",
      "@param {Vehicle} this - no description",
      "@returns {Entity} - The driver of the vehicle"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetDriver",
    "typings": [
      "(this: Vehicle): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns third person camera distance.\n",
      "@name Vehicle:GetCameraDistance",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetCameraDistance",
      "@param {Vehicle} this - no description",
      "@returns {number} - Camera distance"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetCameraDistance",
    "typings": [
      "(this: Vehicle): number"
    ]
  },
  {
    "comments": [
      "\nReturns information about the ammo of the vehicle\n",
      "@name Vehicle:GetAmmo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/GetAmmo",
      "@param {Vehicle} this - no description",
      "@returns {number} - Ammo type of the vehicle ammo",
      "@returns {number} - Clip size",
      "@returns {number} - Count",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "GetAmmo",
    "typings": [
      "(this: Vehicle): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nSets whether the engine is enabled or disabled, i.e. can be started or not.\n",
      "@name Vehicle:EnableEngine",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/EnableEngine",
      "@param {Vehicle} this - no description",
      "@param {boolean} enable - Enable or disable the engine",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "EnableEngine",
    "typings": [
      "(this: Vehicle, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nTries to find an Exit Point for leaving vehicle, if one is unobstructed in the direction given.\n",
      "@name Vehicle:CheckExitPoint",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/CheckExitPoint",
      "@param {Vehicle} this - no description",
      "@param {number} yaw - Yaw/roll from vehicle angle to check for exit",
      "@param {number} distance - Distance from origin to drop player",
      "@returns {Vector} - Returns the vector for exit position or nil if cannot exit that way."
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "CheckExitPoint",
    "typings": [
      "(this: Vehicle, yaw: number, distance: number): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the remaining boosting time left.\n",
      "@name Vehicle:BoostTimeLeft",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Vehicle/BoostTimeLeft",
      "@param {Vehicle} this - no description",
      "@returns {number} - The remaining boosting time left"
    ],
    "type": "class",
    "context": "Vehicle",
    "extends": [
      "Entity"
    ],
    "name": "BoostTimeLeft",
    "typings": [
      "(this: Vehicle): number"
    ]
  },
  {
    "comments": [
      "\nSets x, y and z to 0.\n",
      "@name VectorFuncs:Zero",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Zero",
      "@param {Vector} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Zero",
    "typings": [
      "(this: Vector): void"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the given vector is in a box created by the 2 other vectors.\n",
      "@name VectorFuncs:WithinAABox",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/WithinAABox",
      "@param {Vector} this - no description",
      "@param {Vector} boxStart - The first vector.",
      "@param {Vector} boxEnd - The second vector.",
      "@returns {boolean} - Is the vector in the box or not"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "WithinAABox",
    "typings": [
      "(this: Vector, boxStart: Vector, boxEnd: Vector): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the x, y, and z of the vector.\n",
      "@name VectorFuncs:Unpack",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Unpack",
      "@param {Vector} this - no description",
      "@returns {number} - x or Vector[1].",
      "@returns {number} - y or Vector[2].",
      "@returns {number} - z or Vector[3].",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Unpack",
    "typings": [
      "(this: Vector): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the vector as a table with three elements.\n",
      "@name VectorFuncs:ToTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/ToTable",
      "@param {Vector} this - no description",
      "@returns {table} - The table with elements 1 = x, 2 = y, 3 = z."
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "ToTable",
    "typings": [
      "(this: Vector): table"
    ]
  },
  {
    "comments": [
      "\nReturns where on the screen the specified position vector would appear. A related function is @gui.ScreenToVector, which converts a 2D coordinate to a 3D direction.\n",
      "@name VectorFuncs:ToScreen",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Vector/ToScreen",
      "@note Should be called from a 3D rendering environment or after @cam.Start3D or it may not work correctly.",
      "@bug #462 Errors in a render hook can make this value incorrect until the player restarts their game.",
      "@bug #1404 @cam.Start3D or 3D context @cam.Start with non-default parameters incorrectly sets the reference FOV for this function, causing incorrect return values. This can be fixed by creating and ending a default 3D context (@cam.Start3D with no arguments).",
      "@param {Vector} this - no description",
      "@returns {ToScreenData} - The created @ToScreenData structure."
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "ToScreen",
    "typings": [
      "(this: Vector): ToScreenData"
    ]
  },
  {
    "comments": [
      "\nTranslates the @Vector type (values ranging from 0 to 1) into a @IColor structure. This will also range the values from 0 - 1 to 0 - 255.\nx * 255 -> r\ny * 255 -> g\nz * 255 -> b\nThis is the opposite of @ColorFuncs:ToVector\n",
      "@name VectorFuncs:ToColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/ToColor",
      "@param {Vector} this - no description",
      "@returns {IColor} - The created @IColor structure."
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "ToColor",
    "typings": [
      "(this: Vector): IColor"
    ]
  },
  {
    "comments": [
      "\nSubstracts the values of the second vector from the orignal vector, this function can be used to avoid garbage collection.\n",
      "@name VectorFuncs:Sub",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Sub",
      "@param {Vector} this - no description",
      "@param {Vector} vector - The other vector.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Sub",
    "typings": [
      "(this: Vector, vector: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the x, y, and z of the vector.\n",
      "@name VectorFuncs:SetUnpacked",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/SetUnpacked",
      "@param {Vector} this - no description",
      "@param {number} x - The x component",
      "@param {number} y - The y component",
      "@param {number} z - The z component",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "SetUnpacked",
    "typings": [
      "(this: Vector, x: number, y: number, z: number): void"
    ]
  },
  {
    "comments": [
      "\nCopies the values from the second vector to the first vector.\n",
      "@name VectorFuncs:Set",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Set",
      "@param {Vector} this - no description",
      "@param {Vector} vector - The vector to copy from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Set",
    "typings": [
      "(this: Vector, vector: Vector): void"
    ]
  },
  {
    "comments": [
      "\nRotates a vector by the given angle.\nDoesn't return anything, but rather changes the original vector.\n",
      "@name VectorFuncs:Rotate",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Rotate",
      "@param {Vector} this - no description",
      "@param {Angle} rotation - The angle to rotate the vector by.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Rotate",
    "typings": [
      "(this: Vector, rotation: Angle): void"
    ]
  },
  {
    "comments": [
      "\nNormalizes the given vector. This changes the vector you call it on, if you want to return a normalized copy without affecting the original, use @VectorFuncs:GetNormalized.\n",
      "@name VectorFuncs:Normalize",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Normalize",
      "@param {Vector} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Normalize",
    "typings": [
      "(this: Vector): void"
    ]
  },
  {
    "comments": [
      "\nScales the vector by the given number, that means x, y and z are multiplied by that value.\n",
      "@name VectorFuncs:Mul",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Mul",
      "@param {Vector} this - no description",
      "@param {number} multiplier - The value to scale the vector with.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Mul",
    "typings": [
      "(this: Vector, multiplier: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the squared length of the vector, x² + y² + z².\nThis is faster than @VectorFuncs:Length as calculating the square root is an expensive process.\n",
      "@name VectorFuncs:LengthSqr",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/LengthSqr",
      "@param {Vector} this - no description",
      "@returns {number} - Squared length of the vector"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "LengthSqr",
    "typings": [
      "(this: Vector): number"
    ]
  },
  {
    "comments": [
      "\nReturns the squared length of the vectors x and y value, x² + y².\nThis is faster than @VectorFuncs:Length2D as calculating the square root is an expensive process.\n",
      "@name VectorFuncs:Length2DSqr",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Length2DSqr",
      "@param {Vector} this - no description",
      "@returns {number} - Squared length of the vector in two dimensions"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Length2DSqr",
    "typings": [
      "(this: Vector): number"
    ]
  },
  {
    "comments": [
      "\nReturns the length of the vector in two dimensions, without the Z axis.\n",
      "@name VectorFuncs:Length2D",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Length2D",
      "@param {Vector} this - no description",
      "@returns {number} - Length of the vector in two dimensions, √ x² + y²"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Length2D",
    "typings": [
      "(this: Vector): number"
    ]
  },
  {
    "comments": [
      "\nReturns the Euclidean length of the vector: √ x² + y² + z²\n",
      "@name VectorFuncs:Length",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Length",
      "@param {Vector} this - no description",
      "@returns {number} - Length of the vector."
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Length",
    "typings": [
      "(this: Vector): number"
    ]
  },
  {
    "comments": [
      "\nChecks whenever all fields of the vector are 0.\n",
      "@name VectorFuncs:IsZero",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/IsZero",
      "@param {Vector} this - no description",
      "@returns {boolean} - Do all fields of the vector equal 0 or not"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "IsZero",
    "typings": [
      "(this: Vector): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the vector is equal to another vector with the given tolerance.\n",
      "@name VectorFuncs:IsEqualTol",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/IsEqualTol",
      "@param {Vector} this - no description",
      "@param {Vector} compare - The vector to compare to.",
      "@param {number} tolerance - The tolerance range.",
      "@returns {boolean} - Are the vectors equal or not."
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "IsEqualTol",
    "typings": [
      "(this: Vector, compare: Vector, tolerance: number): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns a normalized version of the vector. Normalized means vector with same direction but with length of 1.\nThis does not affect the vector you call it on; to do this, use @VectorFuncs:Normalize.\n",
      "@name VectorFuncs:GetNormalized",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/GetNormalized",
      "@param {Vector} this - no description",
      "@returns {Vector} - Normalized version of the vector."
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "GetNormalized",
    "typings": [
      "(this: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns a normalized version of the vector. This is a alias of @VectorFuncs:GetNormalized.\n",
      "@name VectorFuncs:GetNormal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/GetNormal",
      "@param {Vector} this - no description",
      "@returns {Vector} - Normalized version of the vector."
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "GetNormal",
    "typings": [
      "(this: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the dot product of the two vectors.\n",
      "@name VectorFuncs:DotProduct",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/DotProduct",
      "@param {Vector} this - no description",
      "@param {Vector} Vector - The other vector.",
      "@returns {number} - Dot Product"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "DotProduct",
    "typings": [
      "(this: Vector, Vector: Vector): number"
    ]
  },
  {
    "comments": [
      "\nReturns the [dot product](https://en.wikipedia.org/wiki/Dot%20product#Geometric%20definition) of this vector and the passed one.\nThe dot product of two vectors is the product of their magnitudes (lengths), and the cosine of the angle between them:\n:**a · b** =\n",
      "@name VectorFuncs:Dot",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Dot",
      "@param {Vector} this - no description",
      "@param {Vector} otherVector - The vector to calculate the dot product with",
      "@returns {number} - The dot product between the two vectors"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Dot",
    "typings": [
      "(this: Vector, otherVector: Vector): number"
    ]
  },
  {
    "comments": [
      "\nDivide the vector by the given number, that means x, y and z are divided by that value. This will change the value of the original vector, see example 2 for division without changing the value.\n",
      "@name VectorFuncs:Div",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Div",
      "@param {Vector} this - no description",
      "@param {number} divisor - The value to divide the vector with.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Div",
    "typings": [
      "(this: Vector, divisor: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the squared distance of 2 vectors, this is faster than @VectorFuncs:Distance as calculating the square root is an expensive process.\n",
      "@name VectorFuncs:DistToSqr",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/DistToSqr",
      "@param {Vector} this - no description",
      "@param {Vector} otherVec - The vector to calculate the distance to.",
      "@returns {number} - Squared distance to the vector"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "DistToSqr",
    "typings": [
      "(this: Vector, otherVec: Vector): number"
    ]
  },
  {
    "comments": [
      "\nReturns the pythagorean distance between the vector and the other vector.\n",
      "@name VectorFuncs:Distance",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Distance",
      "@warning This is a relatively expensive process since it uses the square root. It is recommended that you use @VectorFuncs:DistToSqr whenever possible.",
      "@param {Vector} this - no description",
      "@param {Vector} otherVector - The vector to get the distance to.",
      "@returns {number} - Distance between the vectors."
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Distance",
    "typings": [
      "(this: Vector, otherVector: Vector): number"
    ]
  },
  {
    "comments": [
      "\nCalculates the cross product of this vector and the passed one.\nThe cross product of two vectors is a 3-dimensional vector with a direction perpendicular (at right angles) to both of them (according to the right-hand rule), and magnitude equal to the area of parallelogram they span. This is defined as the product of the magnitudes, the sine of the angle between them, and unit (normal) vector *n* defined by the right-hand rule:\n:**a** × **b** =\n",
      "@name VectorFuncs:Cross",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Cross",
      "@param {Vector} this - no description",
      "@param {Vector} otherVector - Vector to calculate the cross product with.",
      "@returns {Vector} - The cross product of the two vectors."
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Cross",
    "typings": [
      "(this: Vector, otherVector: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the angle of the vector, but instead of assuming that up is @Vector function( 0, 0, 1 ) (Like @VectorFuncs:Angle does) you can specify which direction is 'up' for the angle.\n",
      "@name VectorFuncs:AngleEx",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/AngleEx",
      "@param {Vector} this - no description",
      "@param {Vector} up - The up direction vector",
      "@returns {Angle} - The angle"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "AngleEx",
    "typings": [
      "(this: Vector, up: Vector): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns an angle representing the normal of the vector.\n",
      "@name VectorFuncs:Angle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Angle",
      "@param {Vector} this - no description",
      "@returns {Angle} - The angle/direction of the vector."
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Angle",
    "typings": [
      "(this: Vector): Angle"
    ]
  },
  {
    "comments": [
      "\nAdds the values of the argument vector to the orignal vector. This functions the same as vector1 + vector2 without creating a new vector object, skipping object construction and garbage collection.\n",
      "@name VectorFuncs:Add",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Vector/Add",
      "@param {Vector} this - no description",
      "@param {Vector} vector - The vector to add.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "VectorFuncs",
    "name": "Add",
    "typings": [
      "(this: Vector, vector: Vector): void"
    ]
  },
  {
    "comments": [
      "\nConverts a type to a (nice, but still parsable) string\n",
      "@name util.TypeToString",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/TypeToString",
      "@param {void} this - no description",
      "@param {any} input - What to convert",
      "@returns {string} - Converted string"
    ],
    "type": "func",
    "context": "util",
    "name": "TypeToString",
    "typings": [
      "(this: void, input: any): string"
    ]
  },
  {
    "comments": [
      "\nPerforms a trace with the given trace data.\n",
      "@name util.TraceLine",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/TraceLine",
      "@note Clientside entities will not be hit by traces.",
      "@param {void} this - no description",
      "@param {Trace} TraceData - The trace data to use. See @Trace structure",
      "@returns {TraceResult} - Trace result. See @TraceResult structure.\nCan return nil if @game.GetWorld or its [physics object](https://wiki.garrysmod.com/page/Entity/GetPhysicsObject) is invalid. This will be the case for any traces done before @GamemodeHooks:InitPostEntity is called."
    ],
    "type": "func",
    "context": "util",
    "name": "TraceLine",
    "typings": [
      "(this: void, TraceData: Trace): TraceResult"
    ]
  },
  {
    "comments": [
      "\nPerforms an AABB hull (axis-aligned bounding box, aka not rotated) trace with the given trace data.\n",
      "@name util.TraceHull",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/TraceHull",
      "@note Clientside entities will not be hit by traces.",
      "@note This function may not always give desired results clientside due to certain physics mechanisms not existing on the client. Use it serverside for accurate results.",
      "@param {void} this - no description",
      "@param {HullTrace} TraceData - The trace data to use. See @HullTrace structure",
      "@returns {TraceResult} - Trace result. See @TraceResult structure"
    ],
    "type": "func",
    "context": "util",
    "name": "TraceHull",
    "typings": [
      "(this: void, TraceData: HullTrace): TraceResult"
    ]
  },
  {
    "comments": [
      "\nTraces from one entity to another.\n",
      "@name util.TraceEntityHull",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/TraceEntityHull",
      "@param {void} this - no description",
      "@param {Entity} ent1 - The first entity to trace from",
      "@param {Entity} ent2 - The second entity to trace to",
      "@returns {TraceResult} - Trace result. See @TraceResult structure"
    ],
    "type": "func",
    "context": "util",
    "name": "TraceEntityHull",
    "typings": [
      "(this: void, ent1: Entity, ent2: Entity): TraceResult"
    ]
  },
  {
    "comments": [
      "\nRuns a trace using the entity's collisionmodel between two points. This does not take the entity's angles into account and will trace its unrotated collisionmodel.\n",
      "@name util.TraceEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/TraceEntity",
      "@note Clientside entities will not be hit by traces.",
      "@param {void} this - no description",
      "@param {Trace} tracedata - Trace data. See @Trace structure",
      "@param {Entity} ent - The entity to use",
      "@returns {TraceResult} - Trace result. See @TraceResult structure"
    ],
    "type": "func",
    "context": "util",
    "name": "TraceEntity",
    "typings": [
      "(this: void, tracedata: Trace, ent: Entity): TraceResult"
    ]
  },
  {
    "comments": [
      "\nConverts string or a number to a bool, if possible. Alias of @tobool function.\n",
      "@name util.tobool",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/tobool",
      "@param {void} this - no description",
      "@param {any} input - A string or a number to convert.",
      "@returns {boolean} - False if the input is equal to the string or boolean \"false\", if the input is equal to the string or number \"0\", or if the input is nil. Returns true otherwise."
    ],
    "type": "func",
    "context": "util",
    "name": "tobool",
    "typings": [
      "(this: void, input: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the time since this function has been last called\n",
      "@name util.TimerCycle",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/TimerCycle",
      "@param {void} this - no description",
      "@returns {number} - Time since this function has been last called in ms"
    ],
    "type": "func",
    "context": "util",
    "name": "TimerCycle",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nCreates a timer object.\n",
      "@name util.Timer",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/Timer",
      "@param {void} this - no description",
      "@param {number} startdelay - How long you want the timer to be.",
      "@returns {table} - A timer object. It has next methods:\n;Reset() - Resets the timer to nothing\n;Start( time ) - Starts the timer, call with end time\n;Started() - Returns true if the timer has been started\n;Elapsed() - Returns true if the time has elapsed"
    ],
    "type": "func",
    "context": "util",
    "name": "Timer",
    "typings": [
      "(this: void, startdelay?: number): table"
    ]
  },
  {
    "comments": [
      "\nConverts the given table into a key value string.\n",
      "@name util.TableToKeyValues",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/TableToKeyValues",
      "@param {void} this - no description",
      "@param {table} table - The table to convert.",
      "@returns {string} - KeyValueString"
    ],
    "type": "func",
    "context": "util",
    "name": "TableToKeyValues",
    "typings": [
      "(this: void, table: table): string"
    ]
  },
  {
    "comments": [
      "\nConverts a table to a JSON string.\n",
      "@name util.TableToJSON",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/TableToJSON",
      "@warning All integers will be converted to decimals (5 -> 5.0).",
      "@warning All keys are strings in the JSON format, so all keys will be converted to strings!",
      "@bug #3561 This will produce invalid JSON if the provided table contains nan or inf values.",
      "@param {void} this - no description",
      "@param {table} table - Table to convert.",
      "@param {boolean} prettyPrint - Format and indent the JSON.",
      "@returns {string} - A JSON formatted string containing the serialized data"
    ],
    "type": "func",
    "context": "util",
    "name": "TableToJSON",
    "typings": [
      "(this: void, table: table, prettyPrint?: boolean): string"
    ]
  },
  {
    "comments": [
      "\nGiven a STEAM_0 style Steam ID will return a 64bit Steam ID\n",
      "@name util.SteamIDTo64",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/SteamIDTo64",
      "@param {void} this - no description",
      "@param {string} id - The STEAM_0 style id",
      "@returns {string} - 64bit Steam ID"
    ],
    "type": "func",
    "context": "util",
    "name": "SteamIDTo64",
    "typings": [
      "(this: void, id: string): string"
    ]
  },
  {
    "comments": [
      "\nConverts a string to the specified type.\nThis can be useful when dealing with ConVars.\n",
      "@name util.StringToType",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/StringToType",
      "@param {void} this - no description",
      "@param {string} str - The string to convert",
      "@param {string} typename - The type to attempt to convert the string to. This can be vector, angle, float, int, bool, or string (case insensitive).",
      "@returns {any} - The result of the conversion, or nil if a bad type is specified."
    ],
    "type": "func",
    "context": "util",
    "name": "StringToType",
    "typings": [
      "(this: void, str: string, typename: string): any"
    ]
  },
  {
    "comments": [
      "\nGiven a 64bit SteamID will return a STEAM_0: style Steam ID\n",
      "@name util.SteamIDFrom64",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/SteamIDFrom64",
      "@param {void} this - no description",
      "@param {string} id - The 64 bit Steam ID",
      "@returns {string} - STEAM_0 style Steam ID"
    ],
    "type": "func",
    "context": "util",
    "name": "SteamIDFrom64",
    "typings": [
      "(this: void, id: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns a new @Stack type object\n",
      "@name util.Stack",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/Stack",
      "@param {void} this - no description",
      "@returns {Stack} - A brand new stack object"
    ],
    "type": "func",
    "context": "util",
    "name": "Stack",
    "typings": [
      "(this: void): Stack"
    ]
  },
  {
    "comments": [
      "\nAdds a trail to the specified entity.\n",
      "@name util.SpriteTrail",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/util/SpriteTrail",
      "@param {void} this - no description",
      "@param {Entity} ent - Entity to attach trail to",
      "@param {number} attachmentID - Attachment ID of the entitiys model to attach trail to. If you are not sure, set this to 0",
      "@param {Color} color - Color of the trail, use @Color function",
      "@param {boolean} additive - Should the trail be additive or not",
      "@param {number} startWidth - Start width of the trail",
      "@param {number} endWidth - End width of the trail",
      "@param {number} lifetime - How long it takes to transition from startWidth to endWidth",
      "@param {number} textureRes - The resolution of trails texture. A good value can be calculated using this formula: 1 / ( startWidth + endWidth ) * 0.5",
      "@param {string} texture - Path to the texture to use as a trail.",
      "@returns {Entity} - Entity of created trail ([env_spritetrail](https://developer.valvesoftware.com/wiki/Env_spritetrail))"
    ],
    "type": "func",
    "context": "util",
    "name": "SpriteTrail",
    "typings": [
      "(this: void, ent: Entity, attachmentID: number, color: Color, additive: boolean, startWidth: number, endWidth: number, lifetime: number, textureRes: number, texture: string): Entity"
    ]
  },
  {
    "comments": [
      "\nGenerates a random float value that should be the same on client and server.\n",
      "@name util.SharedRandom",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/SharedRandom",
      "@note This function is best used in a [Predicted Hook](https://wiki.garrysmod.com/page/Category:Predicted_Hooks)",
      "@param {void} this - no description",
      "@param {string} uniqueName - The seed for the random value",
      "@param {number} min - The minimum value of the random range",
      "@param {number} max - The maximum value of the random range",
      "@param {number} additionalSeed - The additional seed",
      "@returns {number} - The random float value"
    ],
    "type": "func",
    "context": "util",
    "name": "SharedRandom",
    "typings": [
      "(this: void, uniqueName: string, min: number, max: number, additionalSeed?: number): number"
    ]
  },
  {
    "comments": [
      "\nSets PData for offline player using his SteamID\n",
      "@name util.SetPData",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/SetPData",
      "@warning This function internally uses @Player:UniqueID, which can cause collisions (two or more players sharing the same PData entry). It's recommended that you don't use it. See the related wiki page for more information.",
      "@param {void} this - no description",
      "@param {string} steamID - SteamID of the player",
      "@param {string} name - Variable name to store the value in",
      "@param {any} value - The value to store",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "SetPData",
    "typings": [
      "(this: void, steamID: string, name: string, value: any): void"
    ]
  },
  {
    "comments": [
      "\nMakes the screen shake\n",
      "@name util.ScreenShake",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/ScreenShake",
      "@note Does nothing on client.",
      "@note Does nothing on client.",
      "@param {void} this - no description",
      "@param {Vector} pos - The origin of the effect.",
      "@param {number} amplitude - The strength of the effect",
      "@param {number} frequency - The frequency of the effect in hz",
      "@param {number} duration - The duration of the effect in seconds",
      "@param {number} radius - The range from the origin within which views will be affected, in Hammer Units",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "ScreenShake",
    "typings": [
      "(this: void, pos: Vector, amplitude: number, frequency: number, duration: number, radius: number): void"
    ]
  },
  {
    "comments": [
      "\nRemoves PData of offline player using his SteamID\n",
      "@name util.RemovePData",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/RemovePData",
      "@warning This function internally uses @Player:UniqueID, which can cause collisions (two or more players sharing the same PData entry). It's recommended that you don't use it. See the related wiki page for more information.",
      "@param {void} this - no description",
      "@param {string} steamID - SteamID of the player",
      "@param {string} name - Variable name to remove",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "RemovePData",
    "typings": [
      "(this: void, steamID: string, name: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the absolute system path the file relative to /garrysmod/.\n",
      "@name util.RelativePathToFull",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/RelativePathToFull",
      "@param {void} this - no description",
      "@param {string} file - The file to get the absolute path of.",
      "@returns {string} - absolutePath"
    ],
    "type": "func",
    "context": "util",
    "name": "RelativePathToFull",
    "typings": [
      "(this: void, file: string): string"
    ]
  },
  {
    "comments": [
      "\nPerforms a trace with the given origin, direction and filter.\n",
      "@name util.QuickTrace",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/QuickTrace",
      "@param {void} this - no description",
      "@param {Vector} origin - The origin of the trace.",
      "@param {Vector} endpos - The end point of the trace, relative to the start.\nThis is the direction of the trace times the distance of the trace.",
      "@param {Entity} filter - Entity which should be ignored by the trace. Can also be a table of entities or a function - see @Trace structure.",
      "@returns {TraceResult} - Trace result. See @TraceResult structure."
    ],
    "type": "func",
    "context": "util",
    "name": "QuickTrace",
    "typings": [
      "(this: void, origin: Vector, endpos: Vector, filter?: Entity): TraceResult"
    ]
  },
  {
    "comments": [
      "\nPrecaches a sound for later use. Sound is cached after being loaded once.\n",
      "@name util.PrecacheSound",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/PrecacheSound",
      "@note Soundcache is limited to 16384 unique sounds.",
      "@bug  Positively broken on purpose because it fills stringtables",
      "@bug  Ultimately does nothing on client, and only works with sound scripts, not direct paths",
      "@param {void} this - no description",
      "@param {string} soundName - The sound to precache.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "PrecacheSound",
    "typings": [
      "(this: void, soundName: string): void"
    ]
  },
  {
    "comments": [
      "\nPrecaches a model for later use. Model is cached after being loaded once.\n",
      "@name util.PrecacheModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/PrecacheModel",
      "@warning Modelprecache is limited to 4096 unique models. When it reaches the limit the game will crash.",
      "@param {void} this - no description",
      "@param {string} modelName - The model to precache.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "PrecacheModel",
    "typings": [
      "(this: void, modelName: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the contents of the position specified.\n",
      "@name util.PointContents",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/PointContents",
      "@param {void} this - no description",
      "@param {Vector} position - Position to get the contents sample from.",
      "@returns {CONTENTS} - Contents bitflag, see @CONTENTS enum"
    ],
    "type": "func",
    "context": "util",
    "name": "PointContents",
    "typings": [
      "(this: void, position: Vector): CONTENTS"
    ]
  },
  {
    "comments": [
      "\nReturns the visibility of a sphere in the world.\n",
      "@name util.PixelVisible",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/util/PixelVisible",
      "@warning Don't use the same handle twice per tick or it will give unpredictable results.",
      "@param {void} this - no description",
      "@param {Vector} position - The center of the visibility test.",
      "@param {number} radius - The radius of the sphere to check for visibility.",
      "@param {pixelvis_handle_t} PixVis - The PixVis handle created with @util.GetPixelVisibleHandle.",
      "@returns {number} - Visibility, ranges from 0-1. 0 when none of the area is visible, 1 when all of it is visible."
    ],
    "type": "func",
    "context": "util",
    "name": "PixelVisible",
    "typings": [
      "(this: void, position: Vector, radius: number, PixVis: pixelvis_handle_t): number"
    ]
  },
  {
    "comments": [
      "\nCreates a tracer effect with the given parameters.\n",
      "@name util.ParticleTracerEx",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/ParticleTracerEx",
      "@param {void} this - no description",
      "@param {string} name - The name of the tracer effect.",
      "@param {Vector} startPos - The start position of the tracer.",
      "@param {Vector} endPos - The end position of the tracer.",
      "@param {boolean} doWhiz - Play the hit miss(whiz) sound.",
      "@param {number} entityIndex - Entity index of the emitting entity.",
      "@param {number} attachmentIndex - Attachment index to be used as origin.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "ParticleTracerEx",
    "typings": [
      "(this: void, name: string, startPos: Vector, endPos: Vector, doWhiz: boolean, entityIndex: number, attachmentIndex: number): void"
    ]
  },
  {
    "comments": [
      "\nCreates a tracer effect with the given parameters.\n",
      "@name util.ParticleTracer",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/ParticleTracer",
      "@param {void} this - no description",
      "@param {string} name - The name of the tracer effect.",
      "@param {Vector} startPos - The start position of the tracer.",
      "@param {Vector} endPos - The end position of the tracer.",
      "@param {boolean} doWhiz - Play the hit miss(whiz) sound.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "ParticleTracer",
    "typings": [
      "(this: void, name: string, startPos: Vector, endPos: Vector, doWhiz: boolean): void"
    ]
  },
  {
    "comments": [
      "\nFormats a float by stripping off extra 0's and .'s\n",
      "@name util.NiceFloat",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/NiceFloat",
      "@param {void} this - no description",
      "@param {number} float - The float to format",
      "@returns {string} - Formatted float"
    ],
    "type": "func",
    "context": "util",
    "name": "NiceFloat",
    "typings": [
      "(this: void, float: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the networked ID associated with the given string from the string table.\n",
      "@name util.NetworkStringToID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/NetworkStringToID",
      "@param {void} this - no description",
      "@param {string} networkString - String to get the associated networked ID from.",
      "@returns {number} - The networked ID of the string, or 0 if it hasn't been networked with @util.AddNetworkString."
    ],
    "type": "func",
    "context": "util",
    "name": "NetworkStringToID",
    "typings": [
      "(this: void, networkString: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns the networked string associated with the given ID from the string table.\n",
      "@name util.NetworkIDToString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/NetworkIDToString",
      "@param {void} this - no description",
      "@param {number} stringTableID - ID to get the associated string from.",
      "@returns {string} - The networked string, or nil if it wasn't found."
    ],
    "type": "func",
    "context": "util",
    "name": "NetworkIDToString",
    "typings": [
      "(this: void, stringTableID: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns a vector in world coordinates based on an entity and local coordinates\n",
      "@name util.LocalToWorld",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/LocalToWorld",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity lpos is local to",
      "@param {Vector} lpos - Coordinates local to the ent",
      "@param {number} bonenum - The bonenumber of the ent lpos is local to",
      "@returns {Vector} - wpos"
    ],
    "type": "func",
    "context": "util",
    "name": "LocalToWorld",
    "typings": [
      "(this: void, ent: Entity, lpos: Vector, bonenum: number): Vector"
    ]
  },
  {
    "comments": [
      "\nSimilar to @util.KeyValuesToTable but it also preserves order of keys.\n",
      "@name util.KeyValuesToTablePreserveOrder",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/KeyValuesToTablePreserveOrder",
      "@param {void} this - no description",
      "@param {string} keyvals - The key value string",
      "@param {boolean} usesEscapeSequences - If set to true, will replace \\t, \\n, \\\" and \\\\ in the input text with their escaped variants",
      "@param {boolean} preserveKeyCase - Whether we should preserve key case or not.",
      "@returns {table} - The output table"
    ],
    "type": "func",
    "context": "util",
    "name": "KeyValuesToTablePreserveOrder",
    "typings": [
      "(this: void, keyvals: string, usesEscapeSequences?: boolean, preserveKeyCase?: boolean): table"
    ]
  },
  {
    "comments": [
      "\nConverts a KeyValue string to a Lua table.\n",
      "@name util.KeyValuesToTable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/KeyValuesToTable",
      "@note Table keys will not repeat, see @util.KeyValuesToTablePreserveOrder.",
      "@param {void} this - no description",
      "@param {string} keyValues - The KeyValue string to convert.",
      "@param {boolean} usesEscapeSequences - If set to true, will replace \\t, \\n, \\\" and \\\\ in the input text with their escaped variants",
      "@param {boolean} preserveKeyCase - Whether we should preserve key case or not.",
      "@returns {table} - The converted table"
    ],
    "type": "func",
    "context": "util",
    "name": "KeyValuesToTable",
    "typings": [
      "(this: void, keyValues: string, usesEscapeSequences?: boolean, preserveKeyCase?: boolean): table"
    ]
  },
  {
    "comments": [
      "\nConverts a JSON string to a Lua table.\n",
      "@name util.JSONToTable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/JSONToTable",
      "@warning This function converts keys to numbers whenever possible.",
      "@bug #3561 This will attempt cast the string keys \"inf\", \"nan\", \"true\", and \"false\" to their respective Lua values. This completely ignores nulls in arrays.",
      "@param {void} this - no description",
      "@param {string} json - The JSON string to convert.",
      "@returns {table} - The table containing converted information. Returns nothing on failure."
    ],
    "type": "func",
    "context": "util",
    "name": "JSONToTable",
    "typings": [
      "(this: void, json: string): table"
    ]
  },
  {
    "comments": [
      "\nChecks if the specified prop is valid.\n",
      "@name util.IsValidProp",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/IsValidProp",
      "@param {void} this - no description",
      "@param {string} modelName - Name/Path of the model to check.",
      "@returns {boolean} - Returns true if the specified prop is valid; otherwise false."
    ],
    "type": "func",
    "context": "util",
    "name": "IsValidProp",
    "typings": [
      "(this: void, modelName: string): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if given numbered physics object of given entity is valid or not. Most useful for ragdolls.\n",
      "@name util.IsValidPhysicsObject",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/IsValidPhysicsObject",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity",
      "@param {number} physobj - Number of the physics object to test",
      "@returns {boolean} - true is valid, false otherwise"
    ],
    "type": "func",
    "context": "util",
    "name": "IsValidPhysicsObject",
    "typings": [
      "(this: void, ent: Entity, physobj: number): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the specified model is valid.\nA model is considered invalid in following cases:\n* Starts with a space or **maps**\n* Doesn't start with **models**\n* Contains any of the following:\n** _gestures\n** _animations\n** _postures\n** _gst\n** _pst\n** _shd\n** _ss\n** _anm\n** .bsp\n** cs_fix\n* On server: If the model isn't precached, if the model file doesn't exist on the disk\n* If precache failed\n* Model is the error model\n",
      "@name util.IsValidModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/IsValidModel",
      "@param {void} this - no description",
      "@param {string} modelName - Name/Path of the model to check.",
      "@returns {boolean} - Whether the model is valid or not. Returns false clientside if the model is not precached by the server."
    ],
    "type": "func",
    "context": "util",
    "name": "IsValidModel",
    "typings": [
      "(this: void, modelName: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCheck whether the skybox is visibile from the point specified.\n",
      "@name util.IsSkyboxVisibleFromPoint",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/util/IsSkyboxVisibleFromPoint",
      "@note This will always return true in fullbright maps",
      "@param {void} this - no description",
      "@param {Vector} position - The position to check the skybox visibility from.",
      "@returns {boolean} - Whether the skybox is visible from the position."
    ],
    "type": "func",
    "context": "util",
    "name": "IsSkyboxVisibleFromPoint",
    "typings": [
      "(this: void, position: Vector): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the model is loaded in the game.\n",
      "@name util.IsModelLoaded",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/IsModelLoaded",
      "@param {void} this - no description",
      "@param {string} modelName - Name/Path of the model to check.",
      "@returns {boolean} - Returns true if the model is loaded in the game; otherwise false."
    ],
    "type": "func",
    "context": "util",
    "name": "IsModelLoaded",
    "typings": [
      "(this: void, modelName: string): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if a certain position in within the world bounds.\n",
      "@name util.IsInWorld",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/util/IsInWorld",
      "@param {void} this - no description",
      "@param {Vector} position - Position to check.",
      "@returns {boolean} - Whether the vector is in world."
    ],
    "type": "func",
    "context": "util",
    "name": "IsInWorld",
    "typings": [
      "(this: void, position: Vector): boolean"
    ]
  },
  {
    "comments": [
      "\nPerforms a [ray-plane intersection](https://en.wikipedia.org/wiki/Line%E2%80%93plane_intersection) and returns the hit position or nil.\n",
      "@name util.IntersectRayWithPlane",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/IntersectRayWithPlane",
      "@param {void} this - no description",
      "@param {Vector} rayOrigin - Origin/start position of the ray.",
      "@param {Vector} rayDirection - The direction of the ray.",
      "@param {Vector} planePosition - Any position of the plane.",
      "@param {Vector} planeNormal - The normal vector of the plane.",
      "@returns {Vector} - The position of intersection, nil if not hit."
    ],
    "type": "func",
    "context": "util",
    "name": "IntersectRayWithPlane",
    "typings": [
      "(this: void, rayOrigin: Vector, rayDirection: Vector, planePosition: Vector, planeNormal: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nChecks if the specified model name points to a valid ragdoll.\n",
      "@name util.IsValidRagdoll",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/IsValidRagdoll",
      "@param {void} this - no description",
      "@param {string} ragdollName - Name/Path of the ragdoll model to check.",
      "@returns {boolean} - Returns true if the specified model name points to a valid ragdoll; otherwise false."
    ],
    "type": "func",
    "context": "util",
    "name": "IsValidRagdoll",
    "typings": [
      "(this: void, ragdollName: string): boolean"
    ]
  },
  {
    "comments": [
      "\nPerforms a \"ray\" box intersection and returns position, normal and the fraction.\n",
      "@name util.IntersectRayWithOBB",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/IntersectRayWithOBB",
      "@param {void} this - no description",
      "@param {Vector} rayStart - Origin/start position of the ray.",
      "@param {Vector} rayDelta - The ray vector itself. This can be thought of as: the ray end point relative to the start point.\nNote that in this implementation, the ray is not infinite - it's only a segment.",
      "@param {Vector} boxOrigin - The center of the box.",
      "@param {Angle} boxAngles - The angles of the box.",
      "@param {Vector} boxMins - The min position of the box.",
      "@param {Vector} boxMaxs - The max position of the box.",
      "@returns {Vector} - Hit position, nil if not hit.",
      "@returns {Vector} - Normal/direction vector, nil if not hit.",
      "@returns {number} - Fraction of trace used, nil if not hit.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "util",
    "name": "IntersectRayWithOBB",
    "typings": [
      "(this: void, rayStart: Vector, rayDelta: Vector, boxOrigin: Vector, boxAngles: Angle, boxMins: Vector, boxMaxs: Vector): [Vector, Vector, number]"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all SteamIDs that have a usergroup.\n",
      "@name util.GetUserGroups",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/util/GetUserGroups",
      "@note This returns the original usergroups table, changes done to this table are not retroactive and will only affect newly connected users",
      "@param {void} this - no description",
      "@returns {IutilGetUserGroupsReturn} - The table of users. The table consists of SteamID-Table pairs, where the table has 2 fields:"
    ],
    "type": "func",
    "context": "util",
    "name": "GetUserGroups",
    "typings": [
      "(this: void): IutilGetUserGroupsReturn"
    ],
    "types": [
      {
        "comments": [
          "name - {string}: Players name"
        ],
        "type": "interface",
        "name": "name",
        "typing": "string",
        "context": "IutilGetUserGroupsReturn"
      },
      {
        "comments": [
          "group - {string}: The players user group"
        ],
        "type": "interface",
        "name": "group",
        "typing": "string",
        "context": "IutilGetUserGroupsReturn"
      }
    ]
  },
  {
    "comments": [
      "\nReturns the name of a surface property at given ID.\nSee also @util.GetSurfaceData and @util.GetSurfaceIndex for opposite function.\n",
      "@name util.GetSurfacePropName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/GetSurfacePropName",
      "@param {void} this - no description",
      "@param {number} id - Surface property ID. You can get it from @TraceResult structure.",
      "@returns {string} - The name or an empty string if there is no valid surface property at given index."
    ],
    "type": "func",
    "context": "util",
    "name": "GetSurfacePropName",
    "typings": [
      "(this: void, id: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the matching surface property index for the given surface property name.\nSee also @util.GetSurfaceData and @util.GetSurfacePropName for opposite function.\n",
      "@name util.GetSurfaceIndex",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/GetSurfaceIndex",
      "@param {void} this - no description",
      "@param {string} surfaceName - The name of the surface.",
      "@returns {number} - The surface property index, or -1 if name doesn't correspond to a valid surface property."
    ],
    "type": "func",
    "context": "util",
    "name": "GetSurfaceIndex",
    "typings": [
      "(this: void, surfaceName: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns data of a surface property at given ID.\n",
      "@name util.GetSurfaceData",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/GetSurfaceData",
      "@param {void} this - no description",
      "@param {number} id - Surface property ID. You can get it from @TraceResult structure.",
      "@returns {SurfacePropertyData} - The data or no value if there is no valid surface property at given index.\nSee @SurfacePropertyData structure"
    ],
    "type": "func",
    "context": "util",
    "name": "GetSurfaceData",
    "typings": [
      "(this: void, id: number): SurfacePropertyData"
    ]
  },
  {
    "comments": [
      "\nGets information about the sun position and obstruction or nil if there is no sun.\n",
      "@name util.GetSunInfo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/util/GetSunInfo",
      "@param {void} this - no description",
      "@returns {SunInfo} - The sun info. See @SunInfo structure"
    ],
    "type": "func",
    "context": "util",
    "name": "GetSunInfo",
    "typings": [
      "(this: void): SunInfo"
    ]
  },
  {
    "comments": [
      "\nUtility function to quickly generate a trace table that starts at the players view position, and ends 16384 units along a specified direction.\n",
      "@name util.GetPlayerTrace",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/GetPlayerTrace",
      "@param {void} this - no description",
      "@param {Player} ply - The player the trace should be based on",
      "@param {Vector} dir - The direction of the trace",
      "@returns {Trace} - The trace data. See @Trace structure"
    ],
    "type": "func",
    "context": "util",
    "name": "GetPlayerTrace",
    "typings": [
      "(this: void, ply: Player, dir?: Vector): Trace"
    ]
  },
  {
    "comments": [
      "\nCreates a new PixVis handle. See @util.PixelVisible.\n",
      "@name util.GetPixelVisibleHandle",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/util/GetPixelVisibleHandle",
      "@param {void} this - no description",
      "@returns {pixelvis_handle_t} - PixVis"
    ],
    "type": "func",
    "context": "util",
    "name": "GetPixelVisibleHandle",
    "typings": [
      "(this: void): pixelvis_handle_t"
    ]
  },
  {
    "comments": [
      "\nGets PData of an offline player using their SteamID\n",
      "@name util.GetPData",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/GetPData",
      "@warning This function internally uses @Player:UniqueID, which can cause collisions (two or more players sharing the same PData entry). It's recommended that you don't use it. See the related wiki page for more information.",
      "@param {void} this - no description",
      "@param {string} steamID - SteamID of the player",
      "@param {string} name - Variable name to get the value of",
      "@param {string} def - The default value, in case there's nothing stored",
      "@returns {string} - The stored value"
    ],
    "type": "func",
    "context": "util",
    "name": "GetPData",
    "typings": [
      "(this: void, steamID: string, name: string, def: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns a table of visual meshes of given model.\nSee also @EntityHooks:GetRenderMesh.\n",
      "@name util.GetModelMeshes",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/util/GetModelMeshes",
      "@note This does not work on brush models (***** models)",
      "@param {void} this - no description",
      "@param {string} model - The full path to a model to get the visual meshes of.",
      "@param {number} lod - no description",
      "@param {number} bodygroupMask - no description",
      "@returns {table[]} - A table of tables with the following format:\nEach @MeshVertex structure returned also has an extra table of tables field called \"weights\" with the following data:"
    ],
    "type": "func",
    "context": "util",
    "name": "GetModelMeshes",
    "typings": [
      "(this: void, model: string, lod?: number, bodygroupMask?: number): table[]"
    ]
  },
  {
    "comments": [
      "\nReturns a table containing the info about the model. It seems to be not working serverside, but still exists serverside.\n",
      "@name util.GetModelInfo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/GetModelInfo",
      "@note This function will silently fail if used on models with following strings in them:\n* _shared\n* _anims\n* _gestures\n* _anim\n* _postures\n* _gst\n* _pst\n* _shd\n* _ss\n* _anm\n* _include",
      "@param {void} this - no description",
      "@param {string} mdl - Model path",
      "@returns {IutilGetModelInfoReturn} - The model info as a table with the following keys:"
    ],
    "type": "func",
    "context": "util",
    "name": "GetModelInfo",
    "typings": [
      "(this: void, mdl: string): IutilGetModelInfoReturn"
    ],
    "types": [
      {
        "comments": [
          "SkinCount - {number}: Identical to @EntityFuncs:SkinCount."
        ],
        "type": "interface",
        "name": "SkinCount",
        "typing": "number",
        "context": "IutilGetModelInfoReturn"
      },
      {
        "comments": [
          "KeyValues - {string}: Valve key-value formatted info about the model's physics (Constraint Info, etc). This is limited to 4096 characters."
        ],
        "type": "interface",
        "name": "KeyValues",
        "typing": "string",
        "context": "IutilGetModelInfoReturn"
      },
      {
        "comments": [
          "ModelKeyValues - {string}: Valve key-value formatted info about the model ($keyvalues command in the .qc of the model), if present"
        ],
        "type": "interface",
        "name": "ModelKeyValues",
        "typing": "string",
        "context": "IutilGetModelInfoReturn"
      }
    ]
  },
  {
    "comments": [
      "\nCreates an effect with the specified data.\nYou can find a list of built-in engine effects [here](https://wiki.garrysmod.com/page/Effects). You can create your own. Example effects can be found [here](https://github.com/garrynewman/garrysmod/tree/master/garrysmod/gamemodes/sandbox/entities/effects) and [here](https://github.com/garrynewman/garrysmod/tree/master/garrysmod/gamemodes/base/entities/effects).\n",
      "@name util.Effect",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/Effect",
      "@note When dispatching an effect from the server, some values may be clamped for networking optimizations. Visit the Set accessors on @CEffectData type to see which ones are affected.",
      "@note You will need to couple this function with @IsFirstTimePredicted function should you use this in a [predicted hook](https://wiki.garrysmod.com/page/Category:Predicted_Hooks).",
      "@param {void} this - no description",
      "@param {string} effectName - The name of the effect to create.",
      "@param {CEffectData} effectData - The effect data describing the effect.",
      "@param {boolean} allowOverride - Whether Lua-defined effects should override engine-defined effects with the same name for this/single function call.",
      "@param {CRecipientFilter} ignorePredictionOrRecipientFilter - Can either be a boolean to ignore the prediction filter or a @CRecipientFilter type.\nSet this to true if you wish to call this function in multiplayer from server.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "Effect",
    "typings": [
      "(this: void, effectName: string, effectData: CEffectData, allowOverride?: boolean, ignorePredictionOrRecipientFilter?: CRecipientFilter): void"
    ]
  },
  {
    "comments": [
      "\nGets the distance between a line and a point in 3d space.\n",
      "@name util.DistanceToLine",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/DistanceToLine",
      "@param {void} this - no description",
      "@param {Vector} lineStart - Start of the line.",
      "@param {Vector} lineEnd - End of the line.",
      "@param {Vector} pointPos - The position of the point.",
      "@returns {number} - Distance from line.",
      "@returns {Vector} - Nearest point on line.",
      "@returns {number} - Distance along line from start.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "util",
    "name": "DistanceToLine",
    "typings": [
      "(this: void, lineStart: Vector, lineEnd: Vector, pointPos: Vector): [number, Vector, number]"
    ]
  },
  {
    "comments": [
      "\nDecompresses the given string using [LZMA](https://en.wikipedia.org/wiki/LZMA) algorithm. Used to decompress strings previously compressed with @util.Compress.\n",
      "@name util.Decompress",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/Decompress",
      "@param {void} this - no description",
      "@param {string} compressedString - The compressed string to decompress.",
      "@param {number} maxSize - The maximal size in bytes it will decompress.",
      "@returns {string} - The original, decompressed string or an empty string on failure or invalid input."
    ],
    "type": "func",
    "context": "util",
    "name": "Decompress",
    "typings": [
      "(this: void, compressedString: string, maxSize?: number): string"
    ]
  },
  {
    "comments": [
      "\nGets the full material path by the decal name. Used with @util.DecalEx.\n",
      "@name util.DecalMaterial",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/DecalMaterial",
      "@param {void} this - no description",
      "@param {string} decalName - Name of the decal.",
      "@returns {string} - Material path of the decal."
    ],
    "type": "func",
    "context": "util",
    "name": "DecalMaterial",
    "typings": [
      "(this: void, decalName: string): string"
    ]
  },
  {
    "comments": [
      "\nPerforms a trace and paints a decal to the surface hit.\n",
      "@name util.DecalEx",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/util/DecalEx",
      "@note This function has trouble spanning across multiple brushes on the map.",
      "@param {void} this - no description",
      "@param {IMaterial} material - The name of the decal to paint. Can be retrieved with @util.DecalMaterial.",
      "@param {Entity} ent - The entity to apply the decal to",
      "@param {Vector} position - The position of the decal.",
      "@param {Vector} normal - The direction of the decal.",
      "@param {Color} color - The color of the decal. Uses the @IColor structure.\nThis only works when used on a brush model and only if the decal material has set **$vertexcolor** to 1.",
      "@param {number} w - The width scale of the decal.",
      "@param {number} h - The height scale of the decal.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "DecalEx",
    "typings": [
      "(this: void, material: IMaterial, ent: Entity, position: Vector, normal: Vector, color: Color, w: number, h: number): void"
    ]
  },
  {
    "comments": [
      "\nPerforms a trace and paints a decal to the surface hit.\n",
      "@name util.Decal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/Decal",
      "@param {void} this - no description",
      "@param {string} name - The name of the decal to paint.",
      "@param {Vector} start - The start of the trace.",
      "@param {Vector} end - The end of the trace.",
      "@param {Entity} filter - If set, the decal will not be able to be placed on given entity. Can also be a table of entities.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "Decal",
    "typings": [
      "(this: void, name: string, start: Vector, end: Vector, filter?: Entity): void"
    ]
  },
  {
    "comments": [
      "\nReturns the current date formatted like '2012-10-31 18-00-00'\n",
      "@name util.DateStamp",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/DateStamp",
      "@param {void} this - no description",
      "@returns {string} - date"
    ],
    "type": "func",
    "context": "util",
    "name": "DateStamp",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nGenerates the [CRC checksum](https://en.wikipedia.org/wiki/Cyclic%20redundancy%20check) of the specified string.\n",
      "@name util.CRC",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/util/CRC",
      "@param {void} this - no description",
      "@param {string} stringToHash - The string to calculate the checksum of.",
      "@returns {string} - The unsigned 32 bit checksum."
    ],
    "type": "func",
    "context": "util",
    "name": "CRC",
    "typings": [
      "(this: void, stringToHash: string): string"
    ]
  },
  {
    "comments": [
      "\nCompresses the given string using the [LZMA](https://en.wikipedia.org/wiki/LZMA) algorithm.\nUse with @net.WriteData and @net.ReadData for networking and  @util.Decompress to decompress the data.\n",
      "@name util.Compress",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/Compress",
      "@param {void} this - no description",
      "@param {string} str - String to compress.",
      "@returns {string} - The compressed string, or nil if the input string was zero length (\"\")."
    ],
    "type": "func",
    "context": "util",
    "name": "Compress",
    "typings": [
      "(this: void, str: string): string"
    ]
  },
  {
    "comments": [
      "\nApplies spherical damage based on damage info to all entities in the specified radius.\n",
      "@name util.BlastDamageInfo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/util/BlastDamageInfo",
      "@param {void} this - no description",
      "@param {CTakeDamageInfo} dmg - The information about the damage",
      "@param {Vector} damageOrigin - Center of the spherical damage",
      "@param {number} damageRadius - The radius in which entities will be damaged.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "BlastDamageInfo",
    "typings": [
      "(this: void, dmg: CTakeDamageInfo, damageOrigin: Vector, damageRadius: number): void"
    ]
  },
  {
    "comments": [
      "\nEncodes the specified string to base64.\n",
      "@name util.Base64Encode",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/Base64Encode",
      "@param {void} this - no description",
      "@param {string} str - String to encode.",
      "@returns {string} - Base 64 encoded string."
    ],
    "type": "func",
    "context": "util",
    "name": "Base64Encode",
    "typings": [
      "(this: void, str: string): string"
    ]
  },
  {
    "comments": [
      "\nApplies explosion damage to all entities in the specified radius.\n",
      "@name util.BlastDamage",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/util/BlastDamage",
      "@param {void} this - no description",
      "@param {Entity} inflictor - The entity that caused the damage.",
      "@param {Entity} attacker - The entity that attacked.",
      "@param {Vector} damageOrigin - The center of the explosion",
      "@param {number} damageRadius - The radius in which entities will be damaged.",
      "@param {number} damage - The amount of damage to be applied.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util",
    "name": "BlastDamage",
    "typings": [
      "(this: void, inflictor: Entity, attacker: Entity, damageOrigin: Vector, damageRadius: number, damage: number): void"
    ]
  },
  {
    "comments": [
      "\nStarts picking an entity in the world. This will suppress the next mouse click, and instead use it as a direction in the trace sent to the callback.\n",
      "@name util.worldpicker.Start",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/util.worldpicker/Start",
      "@param {void} this - no description",
      "@param {function} callback - Function to call after an entity choice has been made. Argument is:",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util.worldpicker",
    "name": "Start",
    "typings": [
      "(this: void, callback: util_worldpickerStartCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type util_worldpickerStartCallback",
          "@param {void} this - no description",
          "@param {TraceResult} tr - @TraceResult structure from the mouse press. tr.Entity will return the entity clicked"
        ],
        "type": "type",
        "name": "util_worldpickerStartCallback",
        "typing": "(this: void, tr: TraceResult) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nFinishes the world picking. This is called when a user presses their mouse after calling @util.worldpicker.Start.\n",
      "@name util.worldpicker.Finish",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/util.worldpicker/Finish",
      "@internal",
      "@param {void} this - no description",
      "@param {TraceResult} tr - @TraceResult structure from the mouse press",
      "@returns {void}"
    ],
    "type": "func",
    "context": "util.worldpicker",
    "name": "Finish",
    "typings": [
      "(this: void, tr: TraceResult): void"
    ]
  },
  {
    "comments": [
      "\nReturns if the user is currently picking an entity.\n",
      "@name util.worldpicker.Active",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/util.worldpicker/Active",
      "@param {void} this - no description",
      "@returns {boolean} - Is world picking"
    ],
    "type": "func",
    "context": "util.worldpicker",
    "name": "Active",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nFunction used to calculate aim vector from 2D screen position. It is used in SuperDOF calculate Distance.\nEssentially a generic version of @gui.ScreenToVector.\n",
      "@name util.AimVector",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/util/AimVector",
      "@param {void} this - no description",
      "@param {Angle} ViewAngles - View angles",
      "@param {number} ViewFOV - View Field of View",
      "@param {number} x - Mouse X position",
      "@param {number} y - Mouse Y position",
      "@param {number} scrWidth - Screen width",
      "@param {number} scrHeight - Screen height",
      "@returns {Vector} - Calculated aim vector"
    ],
    "type": "func",
    "context": "util",
    "name": "AimVector",
    "typings": [
      "(this: void, ViewAngles: Angle, ViewFOV: number, x: number, y: number, scrWidth: number, scrHeight: number): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the byte-index of the n'th UTF-8-character after the given startPos (nil if none). startPos defaults to 1 when n is positive and -1 when n is negative. If n is zero, this function instead returns the byte-index of the UTF-8-character startPos lies within.\n",
      "@name utf8.offset",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/utf8/offset",
      "@param {void} this - no description",
      "@param {string} str - The string that you will get the byte position from.",
      "@param {number} n - The position to get the beginning byte position from.",
      "@param {number} startPos - The offset for n.",
      "@returns {number} - Starting byte-index of the given position."
    ],
    "type": "func",
    "context": "utf8",
    "name": "offset",
    "typings": [
      "(this: void, str: string, n: number, startPos?: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the number of UTF-8 sequences in the given string between positions startPos and endPos (both inclusive). If it finds any invalid UTF-8 byte sequence, returns false as well as the position of the first invalid byte.\n",
      "@name utf8.len",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/utf8/len",
      "@param {void} this - no description",
      "@param {string} str - The string to calculate the length of.",
      "@param {number} startPos - The starting position to get the length from.",
      "@param {number} endPos - The ending position to get the length from.",
      "@returns {number} - The number of UTF-8 characters in the string. If there are invalid bytes, this will be false.",
      "@returns {number} - The position of the first invalid byte. If there were no invalid bytes, this will be nil.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "utf8",
    "name": "len",
    "typings": [
      "(this: void, str: string, startPos?: number, endPos?: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nForces a string to contain only valid UTF-8 data. Invalid sequences are replaced with U+FFFD (the Unicode replacement character).\nThis is a lazy way for users to ensure a string contains only valid UTF-8 data.\n",
      "@name utf8.force",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/utf8/force",
      "@param {void} this - no description",
      "@param {string} str - The string that will become a valid UTF-8 string.",
      "@returns {string} - The UTF-8 string."
    ],
    "type": "func",
    "context": "utf8",
    "name": "force",
    "typings": [
      "(this: void, str: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns an iterator (like @string.gmatch) which returns both the position and codepoint of each utf8 character in the string. It raises an error if it meets any invalid byte sequence.\n",
      "@name utf8.codes",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/utf8/codes",
      "@param {void} this - no description",
      "@param {string} str - The string that you will get the codes from.",
      "@returns {function} - The iterator (to be used in a for loop)."
    ],
    "type": "func",
    "context": "utf8",
    "name": "codes",
    "typings": [
      "(this: void, str: string): UnknownFunc"
    ]
  },
  {
    "comments": [
      "\nReturns the codepoints (as numbers) from all characters in the given string that start between byte position startPos and endPos. It raises an error if it meets any invalid byte sequence. This functions similarly to @string.byte.\n",
      "@name utf8.codepoint",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/utf8/codepoint",
      "@param {void} this - no description",
      "@param {string} str - The string that you will get the code(s) from.",
      "@param {number} startPos - The starting byte of the string to get the codepoint of.",
      "@param {number} endPos - The ending byte of the string to get the codepoint of.",
      "@returns {any[]} - The codepoint number(s)."
    ],
    "type": "func",
    "context": "utf8",
    "name": "codepoint",
    "typings": [
      "(this: void, str: string, startPos?: number, endPos?: number): any[]"
    ]
  },
  {
    "comments": [
      "\nReceives zero or more integers, converts each one to its corresponding UTF-8 byte sequence and returns a string with the concatenation of all these sequences.\n",
      "@name utf8.char",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/utf8/char",
      "@param {void} this - no description",
      "@param {any[]} ...codepoints - Unicode code points to be converted in to a UTF-8 string.",
      "@returns {string} - UTF-8 string generated from given arguments."
    ],
    "type": "func",
    "context": "utf8",
    "name": "char",
    "typings": [
      "(this: void, ...codepoints: any[]): string"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine when a usermessage arrives, this method calls the hook function specified by @usermessage.Hook if any.\n",
      "@name usermessage.IncomingMessage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/usermessage/IncomingMessage",
      "@internal",
      "@param {void} this - no description",
      "@param {string} name - The message name.",
      "@param {bf_read} msg - The message.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "usermessage",
    "name": "IncomingMessage",
    "typings": [
      "(this: void, name: string, msg: bf_read): void"
    ]
  },
  {
    "comments": [
      "\nSets a hook for the specified to be called when a usermessage with the specified name arrives.\n",
      "@name usermessage.Hook",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/usermessage/Hook",
      "@warning Usermessages have a limit of only 256 bytes!",
      "@param {void} this - no description",
      "@param {string} name - The message name to hook to.",
      "@param {function} callback - The function to be called if the specified message was received.\nParameters (Optional):",
      "@param {any[]} ...preArgs - Arguments that are passed to the callback function when the hook is called. *ring ring*",
      "@returns {void}"
    ],
    "type": "func",
    "context": "usermessage",
    "name": "Hook",
    "typings": [
      "(this: void, name: string, callback: usermessageHookCallback, ...preArgs?: any[]): void"
    ],
    "types": [
      {
        "comments": [
          "@type usermessageHookCallback",
          "@param {void} this - no description",
          "@param {bf_read} msg - no description",
          "@param {any[]} ...preArgs - no description"
        ],
        "type": "type",
        "name": "usermessageHookCallback",
        "typing": "(this: void, msg: bf_read, ...preArgs: any[]) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nReturns a table of every usermessage hook\n",
      "@name usermessage.GetTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/usermessage/GetTable",
      "@param {void} this - no description",
      "@returns {table} - hooks"
    ],
    "type": "func",
    "context": "usermessage",
    "name": "GetTable",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nAdds a hook (CPanelPaint) to the control panel paint function so we can determine when it is being drawn.\n",
      "@name undo.SetupUI",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/undo/SetupUI",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "undo",
    "name": "SetupUI",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the player which the current undo block belongs to\n",
      "@name undo.SetPlayer",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/undo/SetPlayer",
      "@param {void} this - no description",
      "@param {Player} ply - The player responsible for undoing the block",
      "@returns {void}"
    ],
    "type": "func",
    "context": "undo",
    "name": "SetPlayer",
    "typings": [
      "(this: void, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nSets a custom undo text for the current undo block\n",
      "@name undo.SetCustomUndoText",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/undo/SetCustomUndoText",
      "@param {void} this - no description",
      "@param {string} customText - The text to display when the undo block is undone",
      "@returns {void}"
    ],
    "type": "func",
    "context": "undo",
    "name": "SetCustomUndoText",
    "typings": [
      "(this: void, customText: string): void"
    ]
  },
  {
    "comments": [
      "\nReplaces any instance of the \"from\" reference with the \"to\" reference, in any existing undo block. Returns true if something was replaced\n",
      "@name undo.ReplaceEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/undo/ReplaceEntity",
      "@param {void} this - no description",
      "@param {Entity} from - The old entity",
      "@param {Entity} to - The new entity to replace the old one",
      "@returns {boolean} - somethingReplaced"
    ],
    "type": "func",
    "context": "undo",
    "name": "ReplaceEntity",
    "typings": [
      "(this: void, from: Entity, to: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nMakes the UI dirty - it will re-create the controls the next time it is viewed. We also take this opportun\n",
      "@name undo.MakeUIDirty",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/undo/MakeUIDirty",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "undo",
    "name": "MakeUIDirty",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds the specified string to a string table, which will cache it and network it to all clients automatically.\nWhenever you want to create a net message with @net.Start, you must add the name of that message as a networked string via this function.\nIf the passed string already exists, nothing will happen and the ID of the existing item will be returned.\n",
      "@name util.AddNetworkString",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/util/AddNetworkString",
      "@note Each unique network name needs to be pooled once - do not put this function call into any other functions if you're using a constant string. Preferable place for this function is in a serverside lua file, or in a shared file with the @net.Receive function.",
      "@note The string table used for this function does not interfere with the engine string tables and has 2048 slots.",
      "@param {void} this - no description",
      "@param {string} str - Adds the specified string to the string table.",
      "@returns {number} - The id of the string that was added to the string table.\nSame as calling @util.NetworkStringToID."
    ],
    "type": "func",
    "context": "util",
    "name": "AddNetworkString",
    "typings": [
      "(this: void, str: string): number"
    ]
  },
  {
    "comments": [
      "\nServerside, returns a table containing all undo blocks of all players. Clientside, returns a table of the local player's undo blocks.\n",
      "@name undo.GetTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/undo/GetTable",
      "@param {void} this - no description",
      "@returns {table} - The undo table."
    ],
    "type": "func",
    "context": "undo",
    "name": "GetTable",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nProcesses an undo block (in table form). This is used internally by the undo manager when a player presses Z.\n",
      "@name undo.Do_Undo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/undo/Do Undo",
      "@param {void} this - no description",
      "@param {Undo} tab - The undo block to process as an @Undo structure",
      "@returns {number} - Number of removed entities"
    ],
    "type": "func",
    "context": "undo",
    "name": "Do_Undo",
    "typings": [
      "(this: void, tab: Undo): number"
    ]
  },
  {
    "comments": [
      "\nCompletes an undo entry, and registers it with the player's client\n",
      "@name undo.Finish",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/undo/Finish",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "undo",
    "name": "Finish",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nBegins a new undo entry\n",
      "@name undo.Create",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/undo/Create",
      "@param {void} this - no description",
      "@param {string} name - Name of the undo message to show to players",
      "@returns {void}"
    ],
    "type": "func",
    "context": "undo",
    "name": "Create",
    "typings": [
      "(this: void, name: string): void"
    ]
  },
  {
    "comments": [
      "\nAdds a function to call when the current undo block is undone\n",
      "@name undo.AddFunction",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/undo/AddFunction",
      "@param {void} this - no description",
      "@param {function} func - The function to call",
      "@param {any[]} ...arguments - Arguments to pass to the function (after the undo info table)",
      "@returns {void}"
    ],
    "type": "func",
    "context": "undo",
    "name": "AddFunction",
    "typings": [
      "(this: void, func: UnknownFunc, ...arguments: any[]): void"
    ]
  },
  {
    "comments": [
      "\nAdds an entity to the current undo block\n",
      "@name undo.AddEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/undo/AddEntity",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to add",
      "@returns {void}"
    ],
    "type": "func",
    "context": "undo",
    "name": "AddEntity",
    "typings": [
      "(this: void, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nWrites a vector normal to the usermessage.\n",
      "@name umsg.VectorNormal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/VectorNormal",
      "@param {void} this - no description",
      "@param {Vector} normal - The vector normal to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "VectorNormal",
    "typings": [
      "(this: void, normal: Vector): void"
    ]
  },
  {
    "comments": [
      "\nWrites a Vector to the usermessage.\n",
      "@name umsg.Vector",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/Vector",
      "@param {void} this - no description",
      "@param {Vector} vector - The vector to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "Vector",
    "typings": [
      "(this: void, vector: Vector): void"
    ]
  },
  {
    "comments": [
      "\nStarts a new usermessage.\n",
      "@name umsg.Start",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/Start",
      "@warning Usermessages have a limit of only 256 bytes!",
      "@param {void} this - no description",
      "@param {string} name - The name of the message to be sent.",
      "@param {CRecipientFilter} filter - If passed a player object, it will only be sent to the player, if passed a @CRecipientFilter type of players, it will be sent to all specified players, if passed nil (or another invalid value), the message will be sent to all players.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "Start",
    "typings": [
      "(this: void, name: string, filter: CRecipientFilter): void"
    ]
  },
  {
    "comments": [
      "\nWrites a null terminated string to the usermessage.\n",
      "@name umsg.String",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/String",
      "@param {void} this - no description",
      "@param {string} str - The string to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "String",
    "typings": [
      "(this: void, str: string): void"
    ]
  },
  {
    "comments": [
      "\nWrites a signed short (16 bit) to the usermessage.\n",
      "@name umsg.Short",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/Short",
      "@param {void} this - no description",
      "@param {number} short - The short to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "Short",
    "typings": [
      "(this: void, short: number): void"
    ]
  },
  {
    "comments": [
      "\nThe string specified will be networked to the client and receive a identifying number, which will be sent instead of the string to optimize networking.\n",
      "@name umsg.PoolString",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/PoolString",
      "@param {void} this - no description",
      "@param {string} str - The string to be pooled.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "PoolString",
    "typings": [
      "(this: void, str: string): void"
    ]
  },
  {
    "comments": [
      "\nWrites a signed int (32 bit) to the usermessage.\n",
      "@name umsg.Long",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/Long",
      "@param {void} this - no description",
      "@param {number} int - The int to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "Long",
    "typings": [
      "(this: void, int: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites a float to the usermessage.\n",
      "@name umsg.Float",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/Float",
      "@param {void} this - no description",
      "@param {number} float - The float to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "Float",
    "typings": [
      "(this: void, float: number): void"
    ]
  },
  {
    "comments": [
      "\nDispatches the usermessage to the client(s).\n",
      "@name umsg.End",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/End",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "End",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nWrites an entity object to the usermessage.\n",
      "@name umsg.Entity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/Entity",
      "@param {void} this - no description",
      "@param {Entity} entity - The entity to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "Entity",
    "typings": [
      "(this: void, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nWrites an angle to the usermessage.\n",
      "@name umsg.Angle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/Angle",
      "@param {void} this - no description",
      "@param {Angle} angle - The angle to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "Angle",
    "typings": [
      "(this: void, angle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nWrites a signed char to the usermessage.\n",
      "@name umsg.Char",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/Char",
      "@param {void} this - no description",
      "@param {number} char - The char to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "Char",
    "typings": [
      "(this: void, char: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites a bool to the usermessage.\n",
      "@name umsg.Bool",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/umsg/Bool",
      "@param {void} this - no description",
      "@param {boolean} bool - The bool to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "umsg",
    "name": "Bool",
    "typings": [
      "(this: void, bool: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUnpauses the timer.\n",
      "@name timer.UnPause",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/UnPause",
      "@param {void} this - no description",
      "@param {any} identifier - Identifier of the timer.",
      "@returns {boolean} - false if the timer didn't exist or was already running, true otherwise."
    ],
    "type": "func",
    "context": "timer",
    "name": "UnPause",
    "typings": [
      "(this: void, identifier: any): boolean"
    ]
  },
  {
    "comments": [
      "\nRuns either @timer.Pause or @timer.UnPause based on the timer's current status.\n",
      "@name timer.Toggle",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Toggle",
      "@param {void} this - no description",
      "@param {any} identifier - Identifier of the timer.",
      "@returns {boolean} - status of the timer."
    ],
    "type": "func",
    "context": "timer",
    "name": "Toggle",
    "typings": [
      "(this: void, identifier: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns amount of time left (in seconds) before the timer executes its function.\n",
      "@name timer.TimeLeft",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/TimeLeft",
      "@note If the timer is paused, the amount will be negative.",
      "@param {void} this - no description",
      "@param {any} identifier - Identifier of the timer.",
      "@returns {number} - The amount of time left (in seconds)."
    ],
    "type": "func",
    "context": "timer",
    "name": "TimeLeft",
    "typings": [
      "(this: void, identifier: any): number"
    ]
  },
  {
    "comments": [
      "\nRestarts the given timer.\n",
      "@name timer.Start",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Start",
      "@note Timers use @CurTime function for timing.",
      "@warning Timers won't advance while the client is timing out from the server.",
      "@param {void} this - no description",
      "@param {any} identifier - Identifier of the timer.",
      "@returns {boolean} - true if the timer exists, false if it doesn't."
    ],
    "type": "func",
    "context": "timer",
    "name": "Start",
    "typings": [
      "(this: void, identifier: any): boolean"
    ]
  },
  {
    "comments": [
      "\nStops the given timer and rewinds it.\n",
      "@name timer.Stop",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Stop",
      "@param {void} this - no description",
      "@param {any} identifier - Identifier of the timer.",
      "@returns {boolean} - false if the timer didn't exist or was already stopped, true otherwise."
    ],
    "type": "func",
    "context": "timer",
    "name": "Stop",
    "typings": [
      "(this: void, identifier: any): boolean"
    ]
  },
  {
    "comments": [
      "\nCreates a simple timer that runs the given function after a specified delay.\nFor a more advanced version that you can control after creation, see @timer.Create.\n",
      "@name timer.Simple",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Simple",
      "@note Timers use @CurTime function for timing.",
      "@warning Timers won't advance while the client is timing out from the server.",
      "@param {void} this - no description",
      "@param {number} delay - How long until the function should be ran (in seconds). Use 0 to have the function run in the next @GamemodeHooks:Think.",
      "@param {function} func - The function to run after the specified delay.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "timer",
    "name": "Simple",
    "typings": [
      "(this: void, delay: number, func: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nReturns amount of repetitions/executions left before the timer destroys itself.\n",
      "@name timer.RepsLeft",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/RepsLeft",
      "@param {void} this - no description",
      "@param {any} identifier - Identifier of the timer.",
      "@returns {number} - The amount of executions left."
    ],
    "type": "func",
    "context": "timer",
    "name": "RepsLeft",
    "typings": [
      "(this: void, identifier: any): number"
    ]
  },
  {
    "comments": [
      "\nPauses the given timer.\n",
      "@name timer.Pause",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Pause",
      "@param {void} this - no description",
      "@param {any} identifier - Identifier of the timer.",
      "@returns {boolean} - false if the timer didn't exist or was already paused, true otherwise."
    ],
    "type": "func",
    "context": "timer",
    "name": "Pause",
    "typings": [
      "(this: void, identifier: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the given timer exists or not.\n",
      "@name timer.Exists",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Exists",
      "@param {void} this - no description",
      "@param {string} identifier - Identifier of the timer.",
      "@returns {boolean} - Returns true if the timer exists, false if it doesn't"
    ],
    "type": "func",
    "context": "timer",
    "name": "Exists",
    "typings": [
      "(this: void, identifier: string): boolean"
    ]
  },
  {
    "comments": [
      "\nStops and destroys the given timer. Alias of @timer.Remove.\n",
      "@name timer.Destroy",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Destroy",
      "@param {void} this - no description",
      "@param {string} identifier - Identifier of the timer to destroy.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "timer",
    "name": "Destroy",
    "typings": [
      "(this: void, identifier: string): void"
    ]
  },
  {
    "comments": [
      "\nCreates a new timer that will repeat its function given amount of times.\nThis function also requires the timer to be named, which allows you to control it after it was created via the @timer library.\nFor a simple one-time timer with no identifiers, see @timer.Simple.\n",
      "@name timer.Create",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Create",
      "@note Timers use @CurTime function for timing.",
      "@warning Timers won't advance while the client is timing out from the server.",
      "@param {void} this - no description",
      "@param {string} identifier - Identifier of the timer to create. Must be unique. If a timer already exists with the same identifier, that timer will be updated to the new settings and reset.",
      "@param {number} delay - The delay interval in seconds. If the delay is too small, the timer will fire on the next frame/tick.",
      "@param {number} repetitions - The number of times to repeat the timer. Enter 0 for infinite repetitions.",
      "@param {function} func - Function called when timer has finished the countdown.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "timer",
    "name": "Create",
    "typings": [
      "(this: void, identifier: string, delay: number, repetitions: number, func: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nThis function does nothing.\n",
      "@name timer.Check",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Check",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "timer",
    "name": "Check",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdjusts the timer if the timer with the given identifier exists.\n",
      "@name timer.Adjust",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Adjust",
      "@param {void} this - no description",
      "@param {any} identifier - Identifier of the timer to adjust.",
      "@param {number} delay - The delay interval in seconds.",
      "@param {number} repetitions - Repetitions. Use 0 for infinite.",
      "@param {function} func - The new function.",
      "@returns {boolean} - true if succeeded"
    ],
    "type": "func",
    "context": "timer",
    "name": "Adjust",
    "typings": [
      "(this: void, identifier: any, delay: number, repetitions: number, func: UnknownFunc): boolean"
    ]
  },
  {
    "comments": [
      "\nUpdates the position and orientation of the ghost entity based on where the toolgun owner is looking along with data from object with id 1 set by @ToolFuncs:SetObject.\nThis should be called in the tool's @ToolHooks:Think hook.\nThis command is only used for tools that move props, such as easy weld, axis and motor. If you want to update a ghost like the thruster tool does it for example, check its [source code](https://github.com/Facepunch/garrysmod/blob/master/garrysmod/gamemodes/sandbox/entities/weapons/gmod_tool/stools/thruster.lua#L179).\n",
      "@name ToolFuncs:UpdateGhostEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/UpdateGhostEntity",
      "@param {ToolFuncs} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "UpdateGhostEntity",
    "typings": [
      "(this: ToolFuncs): void"
    ]
  },
  {
    "comments": [
      "\nSets the tool's stage to how many stored objects the tool has.\n",
      "@name ToolFuncs:UpdateData",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/UpdateData",
      "@internal Called on deploy automatically",
      "@param {ToolFuncs} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "UpdateData",
    "typings": [
      "(this: ToolFuncs): void"
    ]
  },
  {
    "comments": [
      "\nCalled when @WeaponHooks:Think of the toolgun is called. This only happens when the tool gun is currently equipped/selected by the player and the selected tool is this tool.\n",
      "@name ToolHooks:Think",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/TOOL/Think",
      "@param {_TOOL} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolHooks",
    "name": "Think",
    "typings": [
      "(this: _TOOL): void"
    ]
  },
  {
    "comments": [
      "\nInitializes the ghost entity based on the supplied entity.\n",
      "@name ToolFuncs:StartGhostEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/StartGhostEntity",
      "@param {ToolFuncs} this - no description",
      "@param {Entity} ent - The entity to copy ghost parameters off",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "StartGhostEntity",
    "typings": [
      "(this: ToolFuncs, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the current stage of the tool. Does nothing clientside.\nSee also @ToolFuncs:SetOperation.\n",
      "@name ToolFuncs:SetStage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/SetStage",
      "@param {ToolFuncs} this - no description",
      "@param {number} stage - The new stage to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "SetStage",
    "typings": [
      "(this: ToolFuncs, stage: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the current operation of the tool. Does nothing clientside. See also @ToolFuncs:SetStage.\nOperations and stages work as follows:\n* Operation 1\n** Stage 1\n** Stage 2\n** Stage 3\n* Operation 2\n** Stage 1\n** Stage 2\n** Stage ...\n",
      "@name ToolFuncs:SetOperation",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/SetOperation",
      "@param {ToolFuncs} this - no description",
      "@param {number} operation - The new operation ID to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "SetOperation",
    "typings": [
      "(this: ToolFuncs, operation: number): void"
    ]
  },
  {
    "comments": [
      "\nStops and removes a timer created by @timer.Create.\n",
      "@name timer.Remove",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/timer/Remove",
      "@param {void} this - no description",
      "@param {string} identifier - Identifier of the timer to remove.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "timer",
    "name": "Remove",
    "typings": [
      "(this: void, identifier: string): void"
    ]
  },
  {
    "comments": [
      "\nStores an @Entity type for later use in the tool.\nThe stored values can be retrieved by @ToolFuncs:GetEnt, @ToolFuncs:GetPos, @ToolFuncs:GetLocalPos, @ToolFuncs:GetPhys, @ToolFuncs:GetBone and @ToolFuncs:GetNormal\n",
      "@name ToolFuncs:SetObject",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/SetObject",
      "@note this position is in **global space** and is internally converted to **local space** relative to the object, so when you retrieve it later it will be corrected to the object's new position",
      "@param {ToolFuncs} this - no description",
      "@param {number} id - The id of the object to store.",
      "@param {Entity} ent - The entity to store.",
      "@param {Vector} pos - The position to store.",
      "@param {PhysObj} phys - The physics object to store.",
      "@param {number} bone - The hit bone to store.",
      "@param {Vector} normal - The hit normal to store.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "SetObject",
    "typings": [
      "(this: ToolFuncs, id: number, ent: Entity, pos: Vector, phys: PhysObj, bone: number, normal: Vector): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the user right clicks with the tool.\n",
      "@name ToolHooks:RightClick",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/TOOL/RightClick",
      "@param {_TOOL} this - no description",
      "@param {TraceResult} tr - A trace from users eyes to wherever he aims at. See @TraceResult structure",
      "@returns {boolean} - Return true to make the tool gun beam and play fire animations, false otherwise"
    ],
    "type": "class",
    "context": "ToolHooks",
    "name": "RightClick",
    "typings": [
      "(this: _TOOL, tr: TraceResult): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when the user presses the reload key with the tool out.\n",
      "@name ToolHooks:Reload",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/TOOL/Reload",
      "@param {_TOOL} this - no description",
      "@param {TraceResult} tr - A trace from users eyes to wherever he aims at. See @TraceResult structure",
      "@returns {boolean} - Return true to make the tool gun beam and play fire animations, false otherwise"
    ],
    "type": "class",
    "context": "ToolHooks",
    "name": "Reload",
    "typings": [
      "(this: _TOOL, tr: TraceResult): boolean"
    ]
  },
  {
    "comments": [
      "\nRemoves any ghost entity created for this tool.\n",
      "@name ToolFuncs:ReleaseGhostEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/ReleaseGhostEntity",
      "@param {ToolFuncs} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "ReleaseGhostEntity",
    "typings": [
      "(this: ToolFuncs): void"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of stored objects ( @Entity types ) the tool has.\n",
      "@name ToolFuncs:NumObjects",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/NumObjects",
      "@validate",
      "@param {ToolFuncs} this - no description",
      "@returns {number} - The amount of stored objects, or @ToolFuncs:GetStage clientide."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "NumObjects",
    "typings": [
      "(this: ToolFuncs): number"
    ]
  },
  {
    "comments": [
      "\nInitializes the ghost entity with the given model. Removes any old ghost entity if called multiple times.\nThe ghost is a regular prop_physics entity in singleplayer games, and a clientside prop in multiplayer games.\n",
      "@name ToolFuncs:MakeGhostEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/MakeGhostEntity",
      "@param {ToolFuncs} this - no description",
      "@param {string} model - The model of the new ghost entity",
      "@param {Vector} pos - Position to initialize the ghost entity at, usually not needed since this is updated in @ToolFuncs:UpdateGhostEntity.",
      "@param {Angle} angle - Angle to initialize the ghost entity at, usually not needed since this is updated in @ToolFuncs:UpdateGhostEntity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "MakeGhostEntity",
    "typings": [
      "(this: ToolFuncs, model: string, pos: Vector, angle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the user left clicks with the tool\n",
      "@name ToolHooks:LeftClick",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/TOOL/LeftClick",
      "@param {_TOOL} this - no description",
      "@param {TraceResult} tr - A trace from users eyes to wherever he aims at. See @TraceResult structure",
      "@returns {boolean} - Return true to make the tool gun beam and play fire animations, false otherwise"
    ],
    "type": "class",
    "context": "ToolHooks",
    "name": "LeftClick",
    "typings": [
      "(this: _TOOL, tr: TraceResult): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when @WeaponHooks:Holster of the toolgun is called, as well as when switching between different toolguns.\n",
      "@name ToolHooks:Holster",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/TOOL/Holster",
      "@param {_TOOL} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolHooks",
    "name": "Holster",
    "typings": [
      "(this: _TOOL): void"
    ]
  },
  {
    "comments": [
      "\nReturns the current stage of the tool set by @ToolFuncs:SetStage.\n",
      "@name ToolFuncs:GetStage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetStage",
      "@param {ToolFuncs} this - no description",
      "@returns {number} - The current stage of the current operation the tool is at."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetStage",
    "typings": [
      "(this: ToolFuncs): number"
    ]
  },
  {
    "comments": [
      "\nAttempts to grab a serverside tool @ConVar type.\nThis will not do anything on client, despite the function being defined shared.\n",
      "@name ToolFuncs:GetServerInfo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetServerInfo",
      "@param {ToolFuncs} this - no description",
      "@param {string} name - Name of the convar to retrieve. The function will automatically add the \"mytoolfilename_\" part to it.",
      "@returns {string} - The value of the requested @ConVar type."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetServerInfo",
    "typings": [
      "(this: ToolFuncs, name: string): string"
    ]
  },
  {
    "comments": [
      "\nRetrieves an vector previously stored using @ToolFuncs:SetObject. See also @ToolFuncs:GetLocalPos.\n",
      "@name ToolFuncs:GetPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetPos",
      "@param {ToolFuncs} this - no description",
      "@param {number} id - The id of the object which was set in @ToolFuncs:SetObject.",
      "@returns {Vector} - Associated vector with given id. The vector is converted from @ToolFuncs:GetLocalPos."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetPos",
    "typings": [
      "(this: ToolFuncs, id?: number): Vector"
    ]
  },
  {
    "comments": [
      "\nRetrieves an @PhysObj type previously stored using @ToolFuncs:SetObject.\nSee also @ToolFuncs:GetEnt.\n",
      "@name ToolFuncs:GetPhys",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetPhys",
      "@param {ToolFuncs} this - no description",
      "@param {number} id - The id of the object which was set in @ToolFuncs:SetObject.",
      "@returns {PhysObj} - Associated PhysObj with given id. If it wasn't specified, returns current @PhysObj type of associated Entity"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetPhys",
    "typings": [
      "(this: ToolFuncs, id: number): PhysObj"
    ]
  },
  {
    "comments": [
      "\nReturns the owner of this tool.\n",
      "@name ToolFuncs:GetOwner",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetOwner",
      "@param {ToolFuncs} this - no description",
      "@returns {Entity} - Player using the tool"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetOwner",
    "typings": [
      "(this: ToolFuncs): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the current operation of the tool set by @ToolFuncs:SetOperation.\n",
      "@name ToolFuncs:GetOperation",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetOperation",
      "@param {ToolFuncs} this - no description",
      "@returns {number} - The current operation the tool is at."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetOperation",
    "typings": [
      "(this: ToolFuncs): number"
    ]
  },
  {
    "comments": [
      "\nRetrieves an normal vector previously stored using @ToolFuncs:SetObject.\n",
      "@name ToolFuncs:GetNormal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetNormal",
      "@param {ToolFuncs} this - no description",
      "@param {number} id - The id of the object which was set in @ToolFuncs:SetObject.",
      "@returns {Vector} - Associated normal vector with given id."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetNormal",
    "typings": [
      "(this: ToolFuncs, id: number): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the current tool mode.\n",
      "@name ToolFuncs:GetMode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetMode",
      "@param {ToolFuncs} this - no description",
      "@returns {string} - The current tool mode."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetMode",
    "typings": [
      "(this: ToolFuncs): string"
    ]
  },
  {
    "comments": [
      "\nRetrieves an local vector previously stored using @ToolFuncs:SetObject.\nSee also @ToolFuncs:GetPos.\n",
      "@name ToolFuncs:GetLocalPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetLocalPos",
      "@param {ToolFuncs} this - no description",
      "@param {number} id - The id of the object which was set in @ToolFuncs:SetObject.",
      "@returns {Vector} - Associated local vector with given id."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetLocalPos",
    "typings": [
      "(this: ToolFuncs, id?: number): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns a language key based on this tool's name and the current stage it is on.\n",
      "@name ToolFuncs:GetHelpText",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetHelpText",
      "@param {ToolFuncs} this - no description",
      "@returns {string} - The returned language key, for example \"#tool.weld.1\"```"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetHelpText",
    "typings": [
      "(this: ToolFuncs): string"
    ]
  },
  {
    "comments": [
      "\nRetrieves an Entity previously stored using @ToolFuncs:SetObject.\n",
      "@name ToolFuncs:GetEnt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetEnt",
      "@param {ToolFuncs} this - no description",
      "@param {number} id - The id of the object which was set in @ToolFuncs:SetObject.",
      "@returns {Entity} - Associated Entity with given id."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetEnt",
    "typings": [
      "(this: ToolFuncs, id: number): Entity"
    ]
  },
  {
    "comments": [
      "\nAttempts to grab a clientside tool @ConVar type.\n",
      "@name ToolFuncs:GetClientNumber",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetClientNumber",
      "@param {ToolFuncs} this - no description",
      "@param {string} name - Name of the convar to retrieve. The function will automatically add the \"mytoolfilename_\" part to it.",
      "@param {number} def - The default value to return in case the lookup fails.",
      "@returns {number} - The value of the requested @ConVar type."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetClientNumber",
    "typings": [
      "(this: ToolFuncs, name: string, def?: number): number"
    ]
  },
  {
    "comments": [
      "\nAttempts to grab a clientside tool @ConVar type.\n",
      "@name ToolFuncs:GetClientInfo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetClientInfo",
      "@param {ToolFuncs} this - no description",
      "@param {string} name - Name of the convar to retrieve. The function will automatically add the \"mytoolfilename_\" part to it.",
      "@returns {string} - The value of the requested @ConVar type."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetClientInfo",
    "typings": [
      "(this: ToolFuncs, name: string): string"
    ]
  },
  {
    "comments": [
      "\nRetrieves a physics bone number previously stored using @ToolFuncs:SetObject.\n",
      "@name ToolFuncs:GetBone",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/GetBone",
      "@param {ToolFuncs} this - no description",
      "@param {number} id - The id of the object which was set in @ToolFuncs:SetObject.",
      "@returns {number} - Associated physics bone with given id."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "GetBone",
    "typings": [
      "(this: ToolFuncs, id: number): number"
    ]
  },
  {
    "comments": [
      "\nCalled when @WeaponHooks:Think of the toolgun is called, only when the user has this tool selected.\n",
      "@name ToolHooks:FreezeMovement",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/TOOL/FreezeMovement",
      "@param {_TOOL} this - no description",
      "@returns {boolean} - Return true to freeze the player"
    ],
    "type": "class",
    "context": "ToolHooks",
    "name": "FreezeMovement",
    "typings": [
      "(this: _TOOL): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled after the default tool screen has been drawn from @WeaponHooks:RenderScreen.\n",
      "@name ToolHooks:DrawToolScreen",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/TOOL/DrawToolScreen",
      "@note If this method exists on the TOOL object table, the default scrolling text will not be drawn",
      "@note Materials rendered in this hook require $ignorez parameter to draw properly.",
      "@param {_TOOL} this - no description",
      "@param {number} width - The width of the tool's screen in pixels.",
      "@param {number} height - The height of the tool's screen in pixels.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolHooks",
    "name": "DrawToolScreen",
    "typings": [
      "(this: _TOOL, width: number, height: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when @WeaponHooks:DrawHUD of the toolgun is called, only when the user has this tool selected.\n",
      "@name ToolHooks:DrawHUD",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/TOOL/DrawHUD",
      "@param {_TOOL} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolHooks",
    "name": "DrawHUD",
    "typings": [
      "(this: _TOOL): void"
    ]
  },
  {
    "comments": [
      "\nCalled when @WeaponHooks:Deploy of the toolgun is called.\nThis is also called when switching from another tool on the server.\n",
      "@name ToolHooks:Deploy",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/TOOL/Deploy",
      "@param {_TOOL} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolHooks",
    "name": "Deploy",
    "typings": [
      "(this: _TOOL): void"
    ]
  },
  {
    "comments": [
      "\nCreates clientside ConVars based on the ClientConVar table specified in the tool structure. Also creates the 'toolmode_allow_X' ConVar.\n",
      "@name ToolFuncs:CreateConVars",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/CreateConVars",
      "@internal This is called automatically for all tools.",
      "@param {ToolFuncs} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "CreateConVars",
    "typings": [
      "(this: ToolFuncs): void"
    ]
  },
  {
    "comments": [
      "\nInitializes the tool object\n",
      "@name ToolFuncs:Create",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/Create",
      "@internal This is called automatically for all tools.",
      "@param {ToolFuncs} this - no description",
      "@returns {Tool} - The created tool object."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "Create",
    "typings": [
      "(this: ToolFuncs): Tool"
    ]
  },
  {
    "comments": [
      "\nClears all objects previously set with @ToolFuncs:SetObject.\n",
      "@name ToolFuncs:ClearObjects",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/ClearObjects",
      "@param {ToolFuncs} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "ClearObjects",
    "typings": [
      "(this: ToolFuncs): void"
    ]
  },
  {
    "comments": [
      "\nChecks all added objects to see if they're still valid, if not, clears the list of objects.\n",
      "@name ToolFuncs:CheckObjects",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/CheckObjects",
      "@internal This is called automatically for most toolgun actions so you shouldn't need to use it.",
      "@param {ToolFuncs} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "CheckObjects",
    "typings": [
      "(this: ToolFuncs): void"
    ]
  },
  {
    "comments": [
      "\nBuilds a list of all ConVars set via the ClientConVar variable on the @ITool structure and their default values. This is used for the preset system.\n",
      "@name ToolFuncs:BuildConVarList",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/BuildConVarList",
      "@param {ToolFuncs} this - no description",
      "@returns {table} - A list of all convars and their default values."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "BuildConVarList",
    "typings": [
      "(this: ToolFuncs): table"
    ]
  },
  {
    "comments": [
      "\nChecks whether the tool is allowed on the server. This will always return true clientside and will not be affected by @SandboxHooks:CanTool.\nThis function uses **TOOL.AllowedCVar** which is a @ConVar type object pointing to  **toolmode_allow_**toolname**** convar.\n",
      "@name ToolFuncs:Allowed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Tool/Allowed",
      "@param {ToolFuncs} this - no description",
      "@returns {boolean} - Returns true if the tool is allowed."
    ],
    "type": "class",
    "context": "ToolFuncs",
    "extends": [
      "Entity"
    ],
    "name": "Allowed",
    "typings": [
      "(this: ToolFuncs): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the given team index is valid\n",
      "@name team.Valid",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/Valid",
      "@param {void} this - no description",
      "@param {number} index - Index of the team",
      "@returns {boolean} - Is valid"
    ],
    "type": "func",
    "context": "team",
    "name": "Valid",
    "typings": [
      "(this: void, index: number): boolean"
    ]
  },
  {
    "comments": [
      "\nGet's the total frags in a team.\n",
      "@name team.TotalFrags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/TotalFrags",
      "@param {void} this - no description",
      "@param {Entity} Entity_or_number - Entity or number.",
      "@returns {number} - index"
    ],
    "type": "func",
    "context": "team",
    "name": "TotalFrags",
    "typings": [
      "(this: void, Entity_or_number: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the sum of deaths of all players of the team.\n",
      "@name team.TotalDeaths",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/TotalDeaths",
      "@param {void} this - no description",
      "@param {number} teamIndex - The team index.",
      "@returns {number} - deathCount"
    ],
    "type": "func",
    "context": "team",
    "name": "TotalDeaths",
    "typings": [
      "(this: void, teamIndex: number): number"
    ]
  },
  {
    "comments": [
      "\nCreates a new team.\n",
      "@name team.SetUp",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/SetUp",
      "@param {void} this - no description",
      "@param {number} teamIndex - The team index.",
      "@param {string} teamName - The team name.",
      "@param {Color} teamColor - The team color. Uses the @IColor structure.",
      "@param {boolean} isJoinable - Whether the team is joinable or not.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "team",
    "name": "SetUp",
    "typings": [
      "(this: void, teamIndex: number, teamName: string, teamColor: Color, isJoinable?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets valid spawnpoint classes for use by a team.\n",
      "@name team.SetSpawnPoint",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/SetSpawnPoint",
      "@note GM.TeamBased must be set to true for this to work",
      "@param {void} this - no description",
      "@param {number} index - Index of the team",
      "@param {any} classes - A spawnpoint classname or table of spawnpoint classnames",
      "@returns {void}"
    ],
    "type": "func",
    "context": "team",
    "name": "SetSpawnPoint",
    "typings": [
      "(this: void, index: number, classes: any): void"
    ]
  },
  {
    "comments": [
      "\nSets the team's color.\n",
      "@name team.SetColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/SetColor",
      "@param {void} this - no description",
      "@param {number} teamIndex - The team index.",
      "@param {Color} color - The team's new color as a @IColor structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "team",
    "name": "SetColor",
    "typings": [
      "(this: void, teamIndex: number, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the score of the given team\n",
      "@name team.SetScore",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/SetScore",
      "@param {void} this - no description",
      "@param {number} index - Index of the team",
      "@param {number} score - The team's new score",
      "@returns {void}"
    ],
    "type": "func",
    "context": "team",
    "name": "SetScore",
    "typings": [
      "(this: void, index: number, score: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns if a team is joinable or not. This is set in @team.SetUp.\n",
      "@name team.Joinable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/Joinable",
      "@param {void} this - no description",
      "@param {number} index - The index of the team.",
      "@returns {boolean} - True if the team is joinable. False otherwise."
    ],
    "type": "func",
    "context": "team",
    "name": "Joinable",
    "typings": [
      "(this: void, index: number): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of players in a team.\n",
      "@name team.NumPlayers",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/NumPlayers",
      "@param {void} this - no description",
      "@param {number} teamIndex - The team index.",
      "@returns {number} - playerCount"
    ],
    "type": "func",
    "context": "team",
    "name": "NumPlayers",
    "typings": [
      "(this: void, teamIndex: number): number"
    ]
  },
  {
    "comments": [
      "\nSets valid classes for use by a team. Classes can be created using @player_manager.RegisterClass\n",
      "@name team.SetClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/SetClass",
      "@param {void} this - no description",
      "@param {number} index - Index of the team",
      "@param {any} classes - A class ID or table of class IDs",
      "@returns {void}"
    ],
    "type": "func",
    "context": "team",
    "name": "SetClass",
    "typings": [
      "(this: void, index: number, classes: any): void"
    ]
  },
  {
    "comments": [
      "\nReturns a table of valid spawnpoint entities the team can use. These are set with  @team.SetSpawnPoint.\n",
      "@name team.GetSpawnPoints",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/GetSpawnPoints",
      "@param {void} this - no description",
      "@param {number} index - Index of the team",
      "@returns {table} - Valid spawnpoint entities"
    ],
    "type": "func",
    "context": "team",
    "name": "GetSpawnPoints",
    "typings": [
      "(this: void, index: number): table"
    ]
  },
  {
    "comments": [
      "\nReturns a table of valid spawnpoint classes the team can use. These are set with @team.SetSpawnPoint.\n",
      "@name team.GetSpawnPoint",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/GetSpawnPoint",
      "@param {void} this - no description",
      "@param {number} index - Index of the team",
      "@returns {table} - Valid spawnpoint classes"
    ],
    "type": "func",
    "context": "team",
    "name": "GetSpawnPoint",
    "typings": [
      "(this: void, index: number): table"
    ]
  },
  {
    "comments": [
      "\nReturns the score of the team.\n",
      "@name team.GetScore",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/GetScore",
      "@param {void} this - no description",
      "@param {number} teamIndex - The team index.",
      "@returns {number} - score"
    ],
    "type": "func",
    "context": "team",
    "name": "GetScore",
    "typings": [
      "(this: void, teamIndex: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the team.\n",
      "@name team.GetName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/GetName",
      "@param {void} this - no description",
      "@param {number} teamIndex - The team index.",
      "@returns {string} - The team name. If the team is not defined, returns an empty string."
    ],
    "type": "func",
    "context": "team",
    "name": "GetName",
    "typings": [
      "(this: void, teamIndex: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns a table with all player of the specified team.\n",
      "@name team.GetPlayers",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/GetPlayers",
      "@param {void} this - no description",
      "@param {number} teamIndex - The team index.",
      "@returns {Player[]} - A table of @Player types that belong to the requested team."
    ],
    "type": "func",
    "context": "team",
    "name": "GetPlayers",
    "typings": [
      "(this: void, teamIndex: number): Player[]"
    ]
  },
  {
    "comments": [
      "\nReturns the selectable classes for the given team. This can be added to with [team/SetClass](https://wiki.garrysmod.com/page/team/SetClass)\n",
      "@name team.GetClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/GetClass",
      "@param {void} this - no description",
      "@param {number} index - Index of the team",
      "@returns {table} - Selectable classes"
    ],
    "type": "func",
    "context": "team",
    "name": "GetClass",
    "typings": [
      "(this: void, index: number): table"
    ]
  },
  {
    "comments": [
      "\nReturns a table consisting of information on every defined team\n",
      "@name team.GetAllTeams",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/GetAllTeams",
      "@param {void} this - no description",
      "@returns {table} - Team info"
    ],
    "type": "func",
    "context": "team",
    "name": "GetAllTeams",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nReturns the team index of the team with the least players. Falls back to TEAM_UNASSIGNED\n",
      "@name team.BestAutoJoinTeam",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/BestAutoJoinTeam",
      "@param {void} this - no description",
      "@returns {number} - Team index"
    ],
    "type": "func",
    "context": "team",
    "name": "BestAutoJoinTeam",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nIncreases the score of the given team\n",
      "@name team.AddScore",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/AddScore",
      "@param {void} this - no description",
      "@param {number} index - Index of the team",
      "@param {number} increment - Amount to increase the team's score by",
      "@returns {void}"
    ],
    "type": "func",
    "context": "team",
    "name": "AddScore",
    "typings": [
      "(this: void, index: number, increment: number): void"
    ]
  },
  {
    "comments": [
      "\nStarts the AI task as an NPC method.\n",
      "@name Task:Start_FName",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Task/Start FName",
      "@internal",
      "@param {Task} this - no description",
      "@param {NPC} target - The NPC to start the task on.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Task",
    "name": "Start_FName",
    "typings": [
      "(this: Task, target: NPC): void"
    ]
  },
  {
    "comments": [
      "\nStarts the AI task.\n",
      "@name Task:Start",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Task/Start",
      "@param {Task} this - no description",
      "@param {NPC} target - The NPC to start the task on.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Task",
    "name": "Start",
    "typings": [
      "(this: Task, target: NPC): void"
    ]
  },
  {
    "comments": [
      "\nRuns the AI task as an NPC method. This requires the task to be of type *TYPE_FNAME*.\n",
      "@name Task:Run_FName",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Task/Run FName",
      "@internal",
      "@param {Task} this - no description",
      "@param {NPC} target - The NPC to run the task on.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Task",
    "name": "Run_FName",
    "typings": [
      "(this: Task, target: NPC): void"
    ]
  },
  {
    "comments": [
      "\nRuns the AI task.\n",
      "@name Task:Run",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Task/Run",
      "@param {Task} this - no description",
      "@param {NPC} target - The NPC to run the task on.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Task",
    "name": "Run",
    "typings": [
      "(this: Task, target: NPC): void"
    ]
  },
  {
    "comments": [
      "\nDetermines if the task is an NPC method-based task (*TYPE_FNAME*, 2).\n",
      "@name Task:IsFNameType",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Task/IsFNameType",
      "@param {Task} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Task",
    "name": "IsFNameType",
    "typings": [
      "(this: Task): void"
    ]
  },
  {
    "comments": [
      "\nDetermines if the task is an engine task (*TYPE_ENGINE*, 1).\n",
      "@name Task:IsEngineType",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Task/IsEngineType",
      "@param {Task} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Task",
    "name": "IsEngineType",
    "typings": [
      "(this: Task): void"
    ]
  },
  {
    "comments": [
      "\nInitialises the AI task as NPC method-based.\n",
      "@name Task:InitFunctionName",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Task/InitFunctionName",
      "@param {Task} this - no description",
      "@param {string} startname - The name of the NPC method to call on task start.",
      "@param {string} runname - The name of the NPC method to call on task run.",
      "@param {number} taskdata - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Task",
    "name": "InitFunctionName",
    "typings": [
      "(this: Task, startname: string, runname: string, taskdata: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the team's color.\n",
      "@name team.GetColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/team/GetColor",
      "@param {void} this - no description",
      "@param {number} teamIndex - The team index.",
      "@returns {IColor} - The team's color as a @IColor structure."
    ],
    "type": "func",
    "context": "team",
    "name": "GetColor",
    "typings": [
      "(this: void, teamIndex: number): IColor"
    ]
  },
  {
    "comments": [
      "\nInitialises the AI task as an engine task.\n",
      "@name Task:InitEngine",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Task/InitEngine",
      "@param {Task} this - no description",
      "@param {string} taskname - The name of the task.",
      "@param {number} taskdata - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Task",
    "name": "InitEngine",
    "typings": [
      "(this: Task, taskname: string, taskdata: number): void"
    ]
  },
  {
    "comments": [
      "\nInitialises the AI task. Called by @ai_task.New.\n",
      "@name Task:Init",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Task/Init",
      "@internal",
      "@param {Task} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Task",
    "name": "Init",
    "typings": [
      "(this: Task): void"
    ]
  },
  {
    "comments": [
      "\nConverts a table into a string\n",
      "@name table.ToString",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/ToString",
      "@param {void} this - no description",
      "@param {table} tbl - The table to iterate over.",
      "@param {string} displayName - Optional. A name for the table.",
      "@param {boolean} niceFormatting - Adds new lines and tabs to the string.",
      "@returns {string} - The table formatted as a string."
    ],
    "type": "func",
    "context": "table",
    "name": "ToString",
    "typings": [
      "(this: void, tbl: table, displayName: string, niceFormatting: boolean): string"
    ]
  },
  {
    "comments": [
      "\nSorts a table in reverse order from @table.sort\n",
      "@name table.SortDesc",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/SortDesc",
      "@param {void} this - no description",
      "@param {table} tbl - The table to sort in descending order.",
      "@returns {table} - sorted"
    ],
    "type": "func",
    "context": "table",
    "name": "SortDesc",
    "typings": [
      "(this: void, tbl: table): table"
    ]
  },
  {
    "comments": [
      "\nSorts a table by a named member\n",
      "@name table.SortByMember",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/SortByMember",
      "@param {void} this - no description",
      "@param {table} tab - Table to sort",
      "@param {any} memberKey - The key used to identify the member",
      "@param {boolean} ascending - Whether or not the order should be ascending",
      "@returns {void}"
    ],
    "type": "func",
    "context": "table",
    "name": "SortByMember",
    "typings": [
      "(this: void, tab: table, memberKey: any, ascending?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSorts a table either ascending or by the given sort function.\n",
      "@name table.sort",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/sort",
      "@param {void} this - no description",
      "@param {table} tbl - The table to sort.",
      "@param {function} sorter - If specified, the function will be called with 2 parameters each.\nReturn true in this function if you want the first parameter to come first in the sorted array.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "table",
    "name": "sort",
    "typings": [
      "(this: void, tbl: table, sorter: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nReturns a list of keys sorted based on values of those keys.\nFor normal sorting see @table.sort.\n",
      "@name table.SortByKey",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/SortByKey",
      "@param {void} this - no description",
      "@param {table} tab - Table to sort. All values of this table must be of same type.",
      "@param {boolean} descending - Should the order be descending?",
      "@returns {table} - A table of keys sorted by values from supplied table."
    ],
    "type": "func",
    "context": "table",
    "name": "SortByKey",
    "typings": [
      "(this: void, tab: table, descending?: boolean): table"
    ]
  },
  {
    "comments": [
      "\nConverts @Vector types, @Angle types and @boolean types to be able to be converted to and from key-values. @table.DeSanitise does the opposite\n",
      "@name table.Sanitise",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/Sanitise",
      "@param {void} this - no description",
      "@param {table} tab - Table to sanitise",
      "@returns {table} - Sanitised table"
    ],
    "type": "func",
    "context": "table",
    "name": "Sanitise",
    "typings": [
      "(this: void, tab: table): table"
    ]
  },
  {
    "comments": [
      "\nReturns a reversed copy of a sequential table. Any non-sequential and non-numeric keyvalue pairs will not be copied.\n",
      "@name table.Reverse",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/Reverse",
      "@param {void} this - no description",
      "@param {table} tbl - Table to reverse.",
      "@returns {table} - A reversed copy of the table."
    ],
    "type": "func",
    "context": "table",
    "name": "Reverse",
    "typings": [
      "(this: void, tbl: table): table"
    ]
  },
  {
    "comments": [
      "\nRemoves the first instance of a given value from the specified table with @table.remove, then returns the key that the value was found at.\n",
      "@name table.RemoveByValue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/RemoveByValue",
      "@param {void} this - no description",
      "@param {table} tbl - The table that will be searched.",
      "@param {any} val - The value to find within the table.",
      "@returns {any} - The key at which the value was found, or false if the value was not found."
    ],
    "type": "func",
    "context": "table",
    "name": "RemoveByValue",
    "typings": [
      "(this: void, tbl: table, val: any): any"
    ]
  },
  {
    "comments": [
      "\nRemoves a value from a table and shifts any other values down to fill the gap.\n",
      "@name table.remove",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/remove",
      "@param {void} this - no description",
      "@param {table} tbl - The table to remove the value from.",
      "@param {number} index - The index of the value to remove.",
      "@returns {any} - The value that was removed."
    ],
    "type": "func",
    "context": "table",
    "name": "remove",
    "typings": [
      "(this: void, tbl: table, index?: number): any"
    ]
  },
  {
    "comments": [
      "\nMerges the contents of the second table with the content in the first one.\nSee @table.Inherit, which doesn't override existing values.\nSee also @table.Add, which simply adds values of one table to another.\n",
      "@name table.Merge",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/Merge",
      "@param {void} this - no description",
      "@param {table} destination - The table you want the source table to merge with",
      "@param {table} source - The table you want to merge with the destination table",
      "@returns {table} - Destination table"
    ],
    "type": "func",
    "context": "table",
    "name": "Merge",
    "typings": [
      "(this: void, destination: table, source: table): table"
    ]
  },
  {
    "comments": [
      "\nReturns the highest numerical key.\n",
      "@name table.maxn",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/maxn",
      "@param {void} this - no description",
      "@param {table} tbl - The table to search.",
      "@returns {number} - The highest numerical key."
    ],
    "type": "func",
    "context": "table",
    "name": "maxn",
    "typings": [
      "(this: void, tbl: table): number"
    ]
  },
  {
    "comments": [
      "\nReturns a random value from the supplied table.\n",
      "@name table.Random",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/Random",
      "@note This function iterates over the given table **twice**, therefore with sequential tables you should instead use following:\n```mytable[ math.random( #mytable ) ]```",
      "@param {void} this - no description",
      "@param {table} haystack - The table to choose from.",
      "@returns {any} - A random value from the table.",
      "@returns {any} - The key associated with the random value.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "table",
    "name": "Random",
    "typings": [
      "(this: void, haystack: table): [any, any]"
    ]
  },
  {
    "comments": [
      "\nReturns a copy of the input table with all string keys converted to be lowercase recursively\n",
      "@name table.LowerKeyNames",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/LowerKeyNames",
      "@param {void} this - no description",
      "@param {table} tbl - Table to convert",
      "@returns {table} - New table"
    ],
    "type": "func",
    "context": "table",
    "name": "LowerKeyNames",
    "typings": [
      "(this: void, tbl: table): table"
    ]
  },
  {
    "comments": [
      "\nReturns a table of keys containing the supplied value\n",
      "@name table.KeysFromValue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/KeysFromValue",
      "@param {void} this - no description",
      "@param {table} tab - Table to search",
      "@param {any} value - Value to search for",
      "@returns {table} - Keys"
    ],
    "type": "func",
    "context": "table",
    "name": "KeysFromValue",
    "typings": [
      "(this: void, tab: table, value: any): table"
    ]
  },
  {
    "comments": [
      "\nReturns the first key found to be containing the supplied value\n",
      "@name table.KeyFromValue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/KeyFromValue",
      "@param {void} this - no description",
      "@param {table} tab - Table to search",
      "@param {any} value - Value to search for",
      "@returns {any} - Key"
    ],
    "type": "func",
    "context": "table",
    "name": "KeyFromValue",
    "typings": [
      "(this: void, tab: table, value: any): any"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the given table is empty.\nThis works on both sequential and non-sequential tables, and is a lot faster to use than table.Count(tbl) == 0```.\n",
      "@name table.IsEmpty",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/IsEmpty",
      "@param {void} this - no description",
      "@param {table} tab - Table to check",
      "@returns {boolean} - Is empty"
    ],
    "type": "func",
    "context": "table",
    "name": "IsEmpty",
    "typings": [
      "(this: void, tab: table): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the table's keys are sequential\n",
      "@name table.IsSequential",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/IsSequential",
      "@param {void} this - no description",
      "@param {table} tab - Table to check",
      "@returns {boolean} - Is sequential"
    ],
    "type": "func",
    "context": "table",
    "name": "IsSequential",
    "typings": [
      "(this: void, tab: table): boolean"
    ]
  },
  {
    "comments": [
      "\nInserts a value into a table at the end of the table or at the given position.\n",
      "@name table.insert",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/insert",
      "@param {void} this - no description",
      "@param {table} tbl - The table to insert the variable into.",
      "@param {number} position - The position in the table to insert the variable. If the third argument is nil this argument becomes the value to insert at the end of given table.",
      "@param {any} value - The variable to insert into the table.",
      "@returns {number} - The index the object was placed at."
    ],
    "type": "func",
    "context": "table",
    "name": "insert",
    "typings": [
      "(this: void, tbl: table, position: number, value: any): number"
    ]
  },
  {
    "comments": [
      "\nCopies any missing data from base to target, and sets the target's *BaseClass* member to the base table's pointer.\nSee @table.Merge, which overrides existing values and doesn't add a BaseClass member.\nSee also @table.Add, which simply adds values of one table to another.\n",
      "@name table.Inherit",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/Inherit",
      "@bug  Sub-tables aren't inherited. The target's table value will take priority.",
      "@param {void} this - no description",
      "@param {table} target - Table to copy data to",
      "@param {table} base - Table to copy data from",
      "@returns {table} - Target"
    ],
    "type": "func",
    "context": "table",
    "name": "Inherit",
    "typings": [
      "(this: void, target: table, base: table): table"
    ]
  },
  {
    "comments": [
      "\nChecks if a table has a value.\n",
      "@name table.HasValue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/HasValue",
      "@note For optimization, functions that look for a value by sorting the table should never be needed if you work on a table that you built yourself.",
      "@warning This function is **very inefficient for large tables** (O(n)) and should probably not be called in things that run each frame. Instead, consider a table structure such as example 2 below.",
      "@param {void} this - no description",
      "@param {table} tbl - Table to check",
      "@param {any} value - Value to search for",
      "@returns {boolean} - Returns true if the table has that value, false otherwise"
    ],
    "type": "func",
    "context": "table",
    "name": "HasValue",
    "typings": [
      "(this: void, tbl: table, value: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns a key of the supplied table with the highest number value.\n",
      "@name table.GetWinningKey",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/GetWinningKey",
      "@param {void} this - no description",
      "@param {table} inputTable - The table to search in.",
      "@returns {any} - winningKey"
    ],
    "type": "func",
    "context": "table",
    "name": "GetWinningKey",
    "typings": [
      "(this: void, inputTable: table): any"
    ]
  },
  {
    "comments": [
      "\nReturns the last value found in the given table\n",
      "@name table.GetLastValue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/GetLastValue",
      "@param {void} this - no description",
      "@param {table} tab - Table to retrieve value from",
      "@returns {any} - Value"
    ],
    "type": "func",
    "context": "table",
    "name": "GetLastValue",
    "typings": [
      "(this: void, tab: table): any"
    ]
  },
  {
    "comments": [
      "\nReturns the length of the table.\n",
      "@name table.getn",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/getn",
      "@param {void} this - no description",
      "@param {table} tbl - The table to check.",
      "@returns {number} - Sequential length."
    ],
    "type": "func",
    "context": "table",
    "name": "getn",
    "typings": [
      "(this: void, tbl: table): number"
    ]
  },
  {
    "comments": [
      "\nReturns the last key found in the given table\n",
      "@name table.GetLastKey",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/GetLastKey",
      "@param {void} this - no description",
      "@param {table} tab - Table to retrieve key from",
      "@returns {any} - Key"
    ],
    "type": "func",
    "context": "table",
    "name": "GetLastKey",
    "typings": [
      "(this: void, tab: table): any"
    ]
  },
  {
    "comments": [
      "\nReturns the first value found in the given table\n",
      "@name table.GetFirstValue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/GetFirstValue",
      "@param {void} this - no description",
      "@param {table} tab - Table to retrieve value from",
      "@returns {any} - Value"
    ],
    "type": "func",
    "context": "table",
    "name": "GetFirstValue",
    "typings": [
      "(this: void, tab: table): any"
    ]
  },
  {
    "comments": [
      "\nReturns all keys of a table.\n",
      "@name table.GetKeys",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/GetKeys",
      "@param {void} this - no description",
      "@param {table} tabl - The table to get keys of",
      "@returns {table} - Table of keys"
    ],
    "type": "func",
    "context": "table",
    "name": "GetKeys",
    "typings": [
      "(this: void, tabl: table): table"
    ]
  },
  {
    "comments": [
      "\nIterates for each numeric index in the table in order.\nThis is inherited from the original Lua implementation and is deprecated in Lua as of 5.1; see [here](http://lua-users.org/wiki/TableLibraryTutorial). You should use @ipairs function() instead.\n",
      "@name table.foreachi",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/foreachi",
      "@param {void} this - no description",
      "@param {table} table - The table to iterate over.",
      "@param {function} func - The function to run for each index.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "table",
    "name": "foreachi",
    "typings": [
      "(this: void, table: table, func: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nReturns the first key found in the given table\n",
      "@name table.GetFirstKey",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/GetFirstKey",
      "@param {void} this - no description",
      "@param {table} tab - Table to retrieve key from",
      "@returns {any} - Key"
    ],
    "type": "func",
    "context": "table",
    "name": "GetFirstKey",
    "typings": [
      "(this: void, tab: table): any"
    ]
  },
  {
    "comments": [
      "\nIterates over a table and calls the given function for each key and value found. Unlike @table.foreach, this ignores the value returned by the function.\n",
      "@name table.ForEach",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/ForEach",
      "@param {void} this - no description",
      "@param {table} tab - Table to iterate over.",
      "@param {function} callback - Function to call for every key-value pair. Arguments passed are:",
      "@returns {void}"
    ],
    "type": "func",
    "context": "table",
    "name": "ForEach",
    "typings": [
      "(this: void, tab: table, callback: tableForEachCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type tableForEachCallback",
          "@param {void} this - no description",
          "@param {any} key - no description",
          "@param {any} value - no description"
        ],
        "type": "type",
        "name": "tableForEachCallback",
        "typing": "(this: void, key: any, value: any) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nIterates for each key-value pair in the table, calling the function with the key and value of the pair. If the function returns anything, the loop is broken.\nThis is inherited from the original Lua implementation and is deprecated in Lua as of 5.1; see [here](http://lua-users.org/wiki/TableLibraryTutorial). You should use @pairs function() instead. The GLua interpretation of this is @table.ForEach.\n",
      "@name table.foreach",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/foreach",
      "@param {void} this - no description",
      "@param {table} tbl - The table to iterate over.",
      "@param {function} callback - The function to run for each key and value.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "table",
    "name": "foreach",
    "typings": [
      "(this: void, tbl: table, callback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nReturns the value positioned before the supplied value in a table. If it isn't found then the last element in the table is returned\n",
      "@name table.FindPrev",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/FindPrev",
      "@param {void} this - no description",
      "@param {table} tbl - Table to search",
      "@param {any} value - Value to return element before",
      "@returns {any} - Found element"
    ],
    "type": "func",
    "context": "table",
    "name": "FindPrev",
    "typings": [
      "(this: void, tbl: table, value: any): any"
    ]
  },
  {
    "comments": [
      "\nReturns the value positioned after the supplied value in a table. If it isn't found then the first element in the table is returned\n",
      "@name table.FindNext",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/FindNext",
      "@param {void} this - no description",
      "@param {table} tbl - Table to search",
      "@param {any} value - Value to return element after",
      "@returns {any} - Found element"
    ],
    "type": "func",
    "context": "table",
    "name": "FindNext",
    "typings": [
      "(this: void, tbl: table, value: any): any"
    ]
  },
  {
    "comments": [
      "\nInserts a value in to the given table even if the table is non-existent\n",
      "@name table.ForceInsert",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/ForceInsert",
      "@param {void} this - no description",
      "@param {table} tab - Table to insert value in to",
      "@param {any} value - Value to insert",
      "@returns {table} - The supplied or created table"
    ],
    "type": "func",
    "context": "table",
    "name": "ForceInsert",
    "typings": [
      "(this: void, tab?: table, value: any): table"
    ]
  },
  {
    "comments": [
      "\nRemoves all values from a table.\n",
      "@name table.Empty",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/Empty",
      "@param {void} this - no description",
      "@param {table} tbl - The table to empty.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "table",
    "name": "Empty",
    "typings": [
      "(this: void, tbl: table): void"
    ]
  },
  {
    "comments": [
      "\nConverts a table that has been sanitised with @table.Sanitise back to its original form\n",
      "@name table.DeSanitise",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/DeSanitise",
      "@param {void} this - no description",
      "@param {table} tbl - Table to be de-sanitised",
      "@returns {table} - De-sanitised table"
    ],
    "type": "func",
    "context": "table",
    "name": "DeSanitise",
    "typings": [
      "(this: void, tbl: table): table"
    ]
  },
  {
    "comments": [
      "\nEmpties the target table, and merges all values from the source table into it.\n",
      "@name table.CopyFromTo",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/CopyFromTo",
      "@param {void} this - no description",
      "@param {table} source - The table to copy from.",
      "@param {table} target - The table to write to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "table",
    "name": "CopyFromTo",
    "typings": [
      "(this: void, source: table, target: table): void"
    ]
  },
  {
    "comments": [
      "\nCreates a deep copy and returns that copy.\n",
      "@name table.Copy",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/Copy",
      "@warning This function does NOT copy userdata, such as @Vector types and @Angle types!",
      "@param {void} this - no description",
      "@param {table} originalTable - The table to be copied.",
      "@returns {table} - A deep copy of the original table"
    ],
    "type": "func",
    "context": "table",
    "name": "Copy",
    "typings": [
      "(this: void, originalTable: table): table"
    ]
  },
  {
    "comments": [
      "\nCounts the amount of keys in a table. This should only be used when a table is not numerically and sequentially indexed. For those tables, consider the length (**#**) operator.\nIf you only want to test if the table is empty or not, use @table.IsEmpty instead as it is a lot faster.\n",
      "@name table.Count",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/Count",
      "@param {void} this - no description",
      "@param {table} tbl - The table to count the keys of.",
      "@returns {number} - The number of keyvalue pairs. This includes non-numeric and non-sequential keys, unlike the length (**#**) operator."
    ],
    "type": "func",
    "context": "table",
    "name": "Count",
    "typings": [
      "(this: void, tbl: table): number"
    ]
  },
  {
    "comments": [
      "\nConcatenates the contents of a table to a string.\n",
      "@name table.concat",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/concat",
      "@param {void} this - no description",
      "@param {table} tbl - The table to concatenate.",
      "@param {string} concatenator - A seperator to insert between strings",
      "@param {number} startPos - The key to start at",
      "@param {number} endPos - The key to end at",
      "@returns {string} - Concatenated values"
    ],
    "type": "func",
    "context": "table",
    "name": "concat",
    "typings": [
      "(this: void, tbl: table, concatenator?: string, startPos?: number, endPos?: number): string"
    ]
  },
  {
    "comments": [
      "\nCollapses a table with keyvalue structure\n",
      "@name table.CollapseKeyValue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/CollapseKeyValue",
      "@param {void} this - no description",
      "@param {table} input - Input table",
      "@returns {table} - Output table"
    ],
    "type": "func",
    "context": "table",
    "name": "CollapseKeyValue",
    "typings": [
      "(this: void, input: table): table"
    ]
  },
  {
    "comments": [
      "\nChanges all keys to sequential integers. This creates a new table object and does not affect the original.\n",
      "@name table.ClearKeys",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/ClearKeys",
      "@param {void} this - no description",
      "@param {table} table - The original table to modify.",
      "@param {boolean} saveKeys - Save the keys within each member table. This will insert a new field *__key* into each value, and should not be used if the table contains non-table values.",
      "@returns {table} - Table with integer keys."
    ],
    "type": "func",
    "context": "table",
    "name": "ClearKeys",
    "typings": [
      "(this: void, table: table, saveKeys?: boolean): table"
    ]
  },
  {
    "comments": [
      "\nAdds the contents from one table into another. The target table will be modified.\nSee also @table.Inherit and @table.Merge.\n",
      "@name table.Add",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/table/Add",
      "@param {void} this - no description",
      "@param {table} target - The table to insert the new values into.",
      "@param {table} source - The table to retrieve the values from.",
      "@returns {table} - The target table."
    ],
    "type": "func",
    "context": "table",
    "name": "Add",
    "typings": [
      "(this: void, target: table, source: table): table"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of seconds since the Steam user last moved their mouse.\nThis is a direct binding to ISteamUtils->GetSecondsSinceComputerActive, and is most likely related to Steam's automatic \"Away\" online status.\n",
      "@name system.UpTime",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/system/UpTime",
      "@note This function does not work on Dedicated Servers and will instead return no value.",
      "@param {void} this - no description",
      "@returns {number} - The amount of seconds since the Steam user last moved their mouse."
    ],
    "type": "func",
    "context": "system",
    "name": "UpTime",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the synchronized Steam time. This is the number of seconds since the [Unix epoch](http://en.wikipedia.org/wiki/Unix_time).\n",
      "@name system.SteamTime",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/system/SteamTime",
      "@note This function does not work on Dedicated Servers and will instead return no value.",
      "@param {void} this - no description",
      "@returns {number} - Current Steam-synchronized Unix time."
    ],
    "type": "func",
    "context": "system",
    "name": "SteamTime",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether the current OS is Windows.\n",
      "@name system.IsWindows",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/system/IsWindows",
      "@param {void} this - no description",
      "@returns {boolean} - Whether the system the game runs on is Windows or not."
    ],
    "type": "func",
    "context": "system",
    "name": "IsWindows",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the game is being run in a window or in fullscreen (you can change this by opening the menu, clicking 'Options', then clicking the 'Video' tab, and changing the Display Mode using the dropdown menu):\n[300px](https://wiki.garrysmod.com/page/Image:DisplayModeDropdown.jpeg)\n",
      "@name system.IsWindowed",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/system/IsWindowed",
      "@param {void} this - no description",
      "@returns {boolean} - Is the game running in a window?"
    ],
    "type": "func",
    "context": "system",
    "name": "IsWindowed",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the current OS is OSX.\n",
      "@name system.IsOSX",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/system/IsOSX",
      "@param {void} this - no description",
      "@returns {boolean} - Whether or not the game is running on OSX."
    ],
    "type": "func",
    "context": "system",
    "name": "IsOSX",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the current OS is Linux.\n",
      "@name system.IsLinux",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/system/IsLinux",
      "@param {void} this - no description",
      "@returns {boolean} - Whether or not the game is running on Linux."
    ],
    "type": "func",
    "context": "system",
    "name": "IsLinux",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the country code of this computer, determined by the localisation settings of the OS.\n",
      "@name system.GetCountry",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/system/GetCountry",
      "@note This function does not work on Dedicated Servers and will instead return no value.",
      "@param {void} this - no description",
      "@returns {string} - Two-letter country code, using [ISO 3166-1](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) standard."
    ],
    "type": "func",
    "context": "system",
    "name": "GetCountry",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nFlashes the window. Currently works only on Windows.\n",
      "@name system.FlashWindow",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/system/FlashWindow",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "system",
    "name": "FlashWindow",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the game window has focus.\nReturns true 100% of the time on OS X.\n",
      "@name system.HasFocus",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/system/HasFocus",
      "@note This function does not work on dedicated servers and will instead return no value.",
      "@bug #2424 This will return true when minimized in windowed-mode.",
      "@param {void} this - no description",
      "@returns {boolean} - Whether or not the game window has focus."
    ],
    "type": "func",
    "context": "system",
    "name": "HasFocus",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the current battery power.\n",
      "@name system.BatteryPower",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/system/BatteryPower",
      "@param {void} this - no description",
      "@returns {number} - 0-100 if on battery power.\nIf plugged in, the value will be 255 regardless of charging state."
    ],
    "type": "func",
    "context": "system",
    "name": "BatteryPower",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the total uptime of the current application as reported by Steam.\nThis will return a similar value to @SysTime function.\n",
      "@name system.AppTime",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/system/AppTime",
      "@note This function does not work on Dedicated Servers and will instead return no value.",
      "@param {void} this - no description",
      "@returns {number} - Seconds of game uptime as an integer."
    ],
    "type": "func",
    "context": "system",
    "name": "AppTime",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nChecks if the brush surface is water.\nThis internally checks the **SURFDRAW_WATER** flag.\n",
      "@name SurfaceInfo:IsWater",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/SurfaceInfo/IsWater",
      "@param {SurfaceInfo} this - no description",
      "@returns {boolean} - Returns true if the surface is water."
    ],
    "type": "class",
    "context": "SurfaceInfo",
    "name": "IsWater",
    "typings": [
      "(this: SurfaceInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the brush surface is displaying the skybox.\nThis internally checks the **SURFDRAW_SKY** flag.\n",
      "@name SurfaceInfo:IsSky",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/SurfaceInfo/IsSky",
      "@param {SurfaceInfo} this - no description",
      "@returns {boolean} - Returns true if the surface is the sky."
    ],
    "type": "class",
    "context": "SurfaceInfo",
    "name": "IsSky",
    "typings": [
      "(this: SurfaceInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the brush surface is a nodraw surface, meaning it will not be drawn by the engine.\nThis internally checks the SURFDRAW_NODRAW flag.\n",
      "@name SurfaceInfo:IsNoDraw",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/SurfaceInfo/IsNoDraw",
      "@param {SurfaceInfo} this - no description",
      "@returns {boolean} - Returns true if this surface won't be drawn."
    ],
    "type": "class",
    "context": "SurfaceInfo",
    "name": "IsNoDraw",
    "typings": [
      "(this: SurfaceInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the brush surface's material.\n",
      "@name SurfaceInfo:GetMaterial",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/SurfaceInfo/GetMaterial",
      "@param {SurfaceInfo} this - no description",
      "@returns {IMaterial} - Material of one portion of a brush model."
    ],
    "type": "class",
    "context": "SurfaceInfo",
    "name": "GetMaterial",
    "typings": [
      "(this: SurfaceInfo): IMaterial"
    ]
  },
  {
    "comments": [
      "\nReturns a list of vertices the brush surface is built from.\n",
      "@name SurfaceInfo:GetVertices",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/SurfaceInfo/GetVertices",
      "@param {SurfaceInfo} this - no description",
      "@returns {Vector[]} - A list of @Vector type points. This will usually be 4 corners of a quadrilateral in counter-clockwise order."
    ],
    "type": "class",
    "context": "SurfaceInfo",
    "name": "GetVertices",
    "typings": [
      "(this: SurfaceInfo): Vector[]"
    ]
  },
  {
    "comments": [
      "\nSets the texture to be used in all upcoming draw operations using the surface library.\nSee also @surface.SetMaterial for an @IMaterial type alternative.\n",
      "@name surface.SetTexture",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/SetTexture",
      "@param {void} this - no description",
      "@param {number} textureID - The ID of the texture to draw with returned by @surface.GetTextureID.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "SetTexture",
    "typings": [
      "(this: void, textureID: number): void"
    ]
  },
  {
    "comments": [
      "\nSet the top-left position to draw any future text at.\n",
      "@name surface.SetTextPos",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/SetTextPos",
      "@param {void} this - no description",
      "@param {number} x - The X integer co-ordinate.",
      "@param {number} y - The Y integer co-ordinate.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "SetTextPos",
    "typings": [
      "(this: void, x: number, y: number): void"
    ]
  },
  {
    "comments": [
      "\nSet the color of any future text to be drawn, can be set by either using r, g, b, a as separate values or by a @IColor structure. Using a color structure is not recommended to be created procedurally.\n",
      "@name surface.SetTextColor",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/SetTextColor",
      "@param {void} this - no description",
      "@param {number} r - The red value of color, or a @IColor structure.",
      "@param {number} g - The green value of color",
      "@param {number} b - The blue value of color",
      "@param {number} a - The alpha value of color",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "SetTextColor",
    "typings": [
      "(this: void, r: number, g: number, b: number, a?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the material to be used in all upcoming draw operations using the surface library.\nNot to be confused with @render.SetMaterial.\nSee also @surface.SetTexture.\n",
      "@name surface.SetMaterial",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/SetMaterial",
      "@warning @Material function function calls are expensive to be done inside this function or inside rendering context, you should be caching the results of @Material function calls",
      "@param {void} this - no description",
      "@param {IMaterial} material - The material to be used.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "SetMaterial",
    "typings": [
      "(this: void, material: IMaterial): void"
    ]
  },
  {
    "comments": [
      "\nSet the current font to be used for text operations later.\nThe fonts must first be created with @surface.CreateFont or be one of the [Default Fonts](https://wiki.garrysmod.com/page/Default%20Fonts).\n",
      "@name surface.SetFont",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/SetFont",
      "@param {void} this - no description",
      "@param {string} fontName - The name of the font to use.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "SetFont",
    "typings": [
      "(this: void, fontName: string): void"
    ]
  },
  {
    "comments": [
      "\nSet the color of any future shapes to be drawn, can be set by either using r, g, b, a as separate values or by a @IColor structure. Using a color structure is not recommended to be created procedurally.\n",
      "@name surface.SetDrawColor",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/SetDrawColor",
      "@param {void} this - no description",
      "@param {number} r - The red value of color, or a @IColor structure.",
      "@param {number} g - The green value of color. Unused if a @IColor structure was given.",
      "@param {number} b - The blue value of color. Unused if a @IColor structure was given.",
      "@param {number} a - The alpha value of color. Unused if a @IColor structure was given.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "SetDrawColor",
    "typings": [
      "(this: void, r: number, g: number, b: number, a?: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the height of the current client's screen.\n",
      "@name surface.ScreenHeight",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/ScreenHeight",
      "@param {void} this - no description",
      "@returns {number} - screenHeight"
    ],
    "type": "func",
    "context": "surface",
    "name": "ScreenHeight",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the width of the current client's screen.\n",
      "@name surface.ScreenWidth",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/ScreenWidth",
      "@param {void} this - no description",
      "@returns {number} - screenWidth"
    ],
    "type": "func",
    "context": "surface",
    "name": "ScreenWidth",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nSets the alpha multiplier that will influence all upcoming drawing operations.\n",
      "@name surface.SetAlphaMultiplier",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/SetAlphaMultiplier",
      "@param {void} this - no description",
      "@param {number} multiplier - The multiplier ranging from 0 to 1.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "SetAlphaMultiplier",
    "typings": [
      "(this: void, multiplier: number): void"
    ]
  },
  {
    "comments": [
      "\nPlay a sound file directly on the client (such as UI sounds, etc).\n",
      "@name surface.PlaySound",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/PlaySound",
      "@param {void} this - no description",
      "@param {string} soundfile - The path to the sound file, which must be relative to the sound/ folder.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "PlaySound",
    "typings": [
      "(this: void, soundfile: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the width and height (in pixels) of the given text, but only if the font has been set with @surface.SetFont.\n",
      "@name surface.GetTextSize",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/GetTextSize",
      "@param {void} this - no description",
      "@param {string} text - The string to check the size of.",
      "@returns {number} - Width of the provided text",
      "@returns {number} - Height of the provided text",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "surface",
    "name": "GetTextSize",
    "typings": [
      "(this: void, text: string): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the texture id of the material with the given name/path.\n",
      "@name surface.GetTextureID",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/GetTextureID",
      "@note This function will not work with .png or .jpg images. For that, see @Material function",
      "@param {void} this - no description",
      "@param {string} name_path - Name or path of the texture.",
      "@returns {number} - The texture ID"
    ],
    "type": "func",
    "context": "surface",
    "name": "GetTextureID",
    "typings": [
      "(this: void, name_path: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns the size of the texture with the associated texture ID.\n",
      "@name surface.GetTextureSize",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/GetTextureSize",
      "@param {void} this - no description",
      "@param {number} textureID - The texture ID, returned by @surface.GetTextureID.",
      "@returns {number} - The texture width.",
      "@returns {number} - The texture height.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "surface",
    "name": "GetTextureSize",
    "typings": [
      "(this: void, textureID: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the current color affecting text draw operations.\n",
      "@name surface.GetTextColor",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/GetTextColor",
      "@bug #2407 The returned color will not have the color metatable.",
      "@param {void} this - no description",
      "@returns {IColor} - The color that text drawing operations will use as a @IColor structure."
    ],
    "type": "func",
    "context": "surface",
    "name": "GetTextColor",
    "typings": [
      "(this: void): IColor"
    ]
  },
  {
    "comments": [
      "\nGets the HUD texture with the specified name.\n",
      "@name surface.GetHUDTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/surface/GetHUDTexture",
      "@param {void} this - no description",
      "@param {string} name - The name of the texture.",
      "@returns {ITexture} - text"
    ],
    "type": "func",
    "context": "surface",
    "name": "GetHUDTexture",
    "typings": [
      "(this: void, name: string): ITexture"
    ]
  },
  {
    "comments": [
      "\nReturns the current color affecting draw operations.\n",
      "@name surface.GetDrawColor",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/GetDrawColor",
      "@bug #2407 The returned color will not have the color metatable.",
      "@param {void} this - no description",
      "@returns {IColor} - The color that drawing operations will use as a @IColor structure."
    ],
    "type": "func",
    "context": "surface",
    "name": "GetDrawColor",
    "typings": [
      "(this: void): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns the current alpha multiplier affecting drawing operations.\n",
      "@name surface.GetAlphaMultiplier",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/GetAlphaMultiplier",
      "@param {void} this - no description",
      "@returns {number} - The multiplier ranging from 0 to 1."
    ],
    "type": "func",
    "context": "surface",
    "name": "GetAlphaMultiplier",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nDraws a textured rectangle with a repeated or partial texture.\nu and v refer to texture coordinates.\n* (u, v) = (0, 0) is the top left\n* (u, v) = (1, 0) is the top right\n* (u, v) = (1, 1) is the bottom right\n* (u, v) = (0, 1) is the bottom left\nUsing a start point of (1, 0) and an end point to (0, 1), you can draw an image flipped horizontally, same goes with other directions. Going above 1 will tile the texture. Negative values are allowed as well.\nHere's a helper image: http://i.imgur.com/SIKlpp4.png\n",
      "@name surface.DrawTexturedRectUV",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/DrawTexturedRectUV",
      "@rendering function:2d",
      "@note If you are using a .png image, you need supply the \"noclamp\" flag as second parameter for @Material function if you intend to use tiling.",
      "@note If you find that surface.DrawTexturedRectUV is getting your texture coordinates (u0, v0), (u1, v1) wrong and you're rendering with a material created with @CreateMaterial function, try adjusting them with the following code:\n```\nlocal du = 0.5 / 32 -- half pixel anticorrection\nlocal dv = 0.5 / 32 -- half pixel anticorrection\nlocal u0, v0 = (u0 - du) / (1 - 2 * du), (v0 - dv) / (1 - 2 * dv)\nlocal u1, v1 = (u1 - du) / (1 - 2 * du), (v1 - dv) / (1 - 2 * dv)\n```\n**Explanation:**\nsurface.DrawTexturedRectUV tries to correct the texture coordinates by half a pixel (something to do with sampling) and computes the correction using IMaterial::GetMappingWidth()/GetMappingHeight(). If the material was created without a $basetexture, then GetMappingWidth()/GetMappingHeight() uses the width and height of the error material (which is 32x32).",
      "@bug #3173 The UV offsets might require (sub-)pixel correction for accurate tiling results.",
      "@param {void} this - no description",
      "@param {number} x - The X integer coordinate.",
      "@param {number} y - The Y integer coordinate.",
      "@param {number} width - The integer width of the rectangle.",
      "@param {number} height - The integer height of the rectangle.",
      "@param {number} startU - The U texture mapping of the rectangle origin.",
      "@param {number} startV - The V texture mapping of the rectangle origin.",
      "@param {number} endU - The U texture mapping of the rectangle end.",
      "@param {number} endV - The V texture mapping of the rectangle end.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "DrawTexturedRectUV",
    "typings": [
      "(this: void, x: number, y: number, width: number, height: number, startU: number, startV: number, endU: number, endV: number): void"
    ]
  },
  {
    "comments": [
      "\nDraw a textured rotated rectangle with the given position and dimensions and angle on the screen, using the current active texture.\n",
      "@name surface.DrawTexturedRectRotated",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/DrawTexturedRectRotated",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {number} x - The X integer co-ordinate, representing the center of the rectangle.",
      "@param {number} y - The Y integer co-ordinate, representing the center of the rectangle.",
      "@param {number} width - The integer width of the rectangle.",
      "@param {number} height - The integer height of the rectangle.",
      "@param {number} rotation - The rotation of the rectangle, in degrees.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "DrawTexturedRectRotated",
    "typings": [
      "(this: void, x: number, y: number, width: number, height: number, rotation: number): void"
    ]
  },
  {
    "comments": [
      "\nDraw the specified text on the screen, using the previously set position, font and color.\n",
      "@name surface.DrawText",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/DrawText",
      "@rendering function:2d",
      "@note This function does not handle newlines properly",
      "@param {void} this - no description",
      "@param {string} text - The text to be rendered.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "DrawText",
    "typings": [
      "(this: void, text: string): void"
    ]
  },
  {
    "comments": [
      "\nDraws a solid rectangle on the screen.\n",
      "@name surface.DrawRect",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/DrawRect",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {number} x - The X integer co-ordinate.",
      "@param {number} y - The Y integer co-ordinate.",
      "@param {number} width - The integer width of the rectangle.",
      "@param {number} height - The integer height of the rectangle.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "DrawRect",
    "typings": [
      "(this: void, x: number, y: number, width: number, height: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws a textured polygon (secretly a triangle fan) with a maximum of 256 vertices.\nOnly works properly with convex polygons. You may try to render concave polygons, but there is no guarantee that things wont get messed up.\nUnlike most surface library functions, non-integer coordinates are not rounded.\n",
      "@name surface.DrawPoly",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/DrawPoly",
      "@rendering function:2d",
      "@warning You must reset the drawing color and texture before calling the function to ensure consistent results. See examples below.",
      "@param {void} this - no description",
      "@param {PolygonVertex} vertices - A table containing integer vertices. See the @PolygonVertex structure.\n**The vertices must be in clockwise order.**",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "DrawPoly",
    "typings": [
      "(this: void, vertices: PolygonVertex): void"
    ]
  },
  {
    "comments": [
      "\nDraws a hollow box with a border width of 1 px.\n",
      "@name surface.DrawOutlinedRect",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/DrawOutlinedRect",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {number} x - The start x integer coordinate.",
      "@param {number} y - The start y integer coordinate.",
      "@param {number} w - The integer width.",
      "@param {number} h - The integer height.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "DrawOutlinedRect",
    "typings": [
      "(this: void, x: number, y: number, w: number, h: number): void"
    ]
  },
  {
    "comments": [
      "\nDraw a textured rectangle with the given position and dimensions on the screen, using the current active texture set with @surface.SetMaterial. It is also affected by @surface.SetDrawColor.\nSee also @render.SetMaterial and @render.DrawScreenQuadEx.\nSee also @surface.DrawTexturedRectUV.\n",
      "@name surface.DrawTexturedRect",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/DrawTexturedRect",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {number} x - The X integer co-ordinate.",
      "@param {number} y - The Y integer co-ordinate.",
      "@param {number} width - The integer width of the rectangle.",
      "@param {number} height - The integer height of the rectangle.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "DrawTexturedRect",
    "typings": [
      "(this: void, x: number, y: number, width: number, height: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws a line from one point to another.\n",
      "@name surface.DrawLine",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/DrawLine",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {number} startX - The start x integer coordinate.",
      "@param {number} startY - The start y integer coordinate.",
      "@param {number} endX - The end x integer coordinate.",
      "@param {number} endY - The end y integer coordinate.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "DrawLine",
    "typings": [
      "(this: void, startX: number, startY: number, endX: number, endY: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws a hollow circle, made of dots. For a filled circle, see examples for @surface.DrawPoly.\n",
      "@name surface.DrawCircle",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/DrawCircle",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {number} originX - The center x integer coordinate.",
      "@param {number} originY - The center y integer coordinate.",
      "@param {number} radius - The radius of the circle.",
      "@param {number} r - The red value of the color to draw the circle with, or a @IColor structure.",
      "@param {number} g - The green value of the color to draw the circle with. Unused if a @IColor structure was given.",
      "@param {number} b - The blue value of the color to draw the circle with. Unused if a @IColor structure was given.",
      "@param {number} a - The alpha value of the color to draw the circle with. Unused if a @IColor structure was given.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "DrawCircle",
    "typings": [
      "(this: void, originX: number, originY: number, radius: number, r: number, g: number, b: number, a?: number): void"
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/ViewData",
      "@interface ViewData",
      "@description Table structure used for @render.RenderView.\nUnless stated otherwise, the default values for all these keys would be inherited from the engine's CViewSetup and do not have static representations."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "ViewData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@origin {Vector}: The view's original position"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "origin",
        "typing": "Vector"
      },
      {
        "comments": [
          "@angles {Angle}: The view's angles"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "angles",
        "typing": "Angle"
      },
      {
        "comments": [
          "@aspectratio {number}: Default width divided by height"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "aspectratio",
        "typing": "number"
      },
      {
        "comments": [
          "@x {number}: The x position of the viewport to render in"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "x",
        "typing": "number"
      },
      {
        "comments": [
          "@y {number}: The y position of the viewport to render in"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "y",
        "typing": "number"
      },
      {
        "comments": [
          "@w {number}: The width of the viewport to render in"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "w",
        "typing": "number"
      },
      {
        "comments": [
          "@h {number}: The height of the viewport to render in"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "h",
        "typing": "number"
      },
      {
        "comments": [
          "@drawhud {boolean}: Draw the HUD and call the hud painting related hooks"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "drawhud",
        "typing": "boolean"
      },
      {
        "comments": [
          "@drawmonitors {boolean}: Draw monitors"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "drawmonitors",
        "typing": "boolean"
      },
      {
        "comments": [
          "@drawviewmodel {boolean}: The weapon's viewmodel"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "drawviewmodel",
        "typing": "boolean"
      },
      {
        "comments": [
          "@viewmodelfov {number}: The viewmodel's FOV"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "viewmodelfov",
        "typing": "number"
      },
      {
        "comments": [
          "@fov {number}: The main view's FOV"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "fov",
        "typing": "number"
      },
      {
        "comments": [
          "@ortho {boolean}: Render the view orthogonal. Can also be a table with these keys: ( In which case orthogonal view is automatically set to true )\n* left\n* right\n* top\n* bottom"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "ortho",
        "typing": "boolean"
      },
      {
        "comments": [
          "@ortholeft {number}: Coordinate for the left clipping plane"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "ortholeft",
        "typing": "number"
      },
      {
        "comments": [
          "@orthoright {number}: Coordinate for the right clipping plane"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "orthoright",
        "typing": "number"
      },
      {
        "comments": [
          "@orthotop {number}: Coordinate for the top clipping plane"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "orthotop",
        "typing": "number"
      },
      {
        "comments": [
          "@orthobottom {number}: Coordinate for the bottom clipping plane"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "orthobottom",
        "typing": "number"
      },
      {
        "comments": [
          "@znear {number}: The distance of the view's origin to the near clipping plane"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "znear",
        "typing": "number"
      },
      {
        "comments": [
          "@zfar {number}: The distance of the view's origin to the far clipping plane"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "zfar",
        "typing": "number"
      },
      {
        "comments": [
          "@znearviewmodel {number}: The distance of the view's origin to the near clipping plane for the viewmodel"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "znearviewmodel",
        "typing": "number"
      },
      {
        "comments": [
          "@zfarviewmodel {number}: The distance of the view's origin to the far clipping plane for the viewmodel"
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "zfarviewmodel",
        "typing": "number"
      },
      {
        "comments": [
          "@dopostprocess {boolean}: Currently works identically to the \"bloomtone\" option (it also overrides it if you set this to false)."
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "dopostprocess",
        "typing": "boolean"
      },
      {
        "comments": [
          "@bloomtone {boolean}: Disables default engine bloom and pauses the \"brightness changes\" on HDR maps."
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "bloomtone",
        "typing": "boolean"
      },
      {
        "comments": [
          "@offcenter {table}: This allows you to \"zoom in\" on a part of the screen - for example, the top-left quarter of the screen. This is similar to how [poster splits the screen](https://garry.tv/2012/02/25/poster-screenshots/) into separate renders.\nIt's a table with 4 keys, controlling what portion of the screen to draw:\n* left - where the left edge starts. Natural value is 0.\n* right - where the right edge ends. Natural value is equal to w (the width of the viewport).\n* top - where the *bottom* edge starts. Natural value is 0.\n* bottom - where the *top* edge ends. Natural value is equal to h (the height of the viewport).\nNote that top and bottom are reversed.\nValues outside the viewport are allowed, but not recommended - instead you should increase the view FOV."
        ],
        "context": "ViewData",
        "type": "interface",
        "name": "offcenter",
        "typing": "table"
      }
    ]
  },
  {
    "comments": [
      "\nCreates a new font.\nTo prevent the font from displaying incorrectly when using the \"outline\" setting, set \"antialias\" to false. This will ensure the text properly fills out the entire outline.\nBe sure to check the [List of Default Fonts](https://wiki.garrysmod.com/page/Default_Fonts) first! Those fonts can be used without using this function.\n",
      "@name surface.CreateFont",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/CreateFont",
      "@warning Due to the static nature of fonts, do **NOT** create the font more than once. You should only be creating them once, it is recommended to create them at the top of your script. **Do not use this function within **@GamemodeHooks:HUDPaint**!**",
      "@param {void} this - no description",
      "@param {string} fontName - The new font name.",
      "@param {FontData} fontData - The font properties. See the @FontData structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "CreateFont",
    "typings": [
      "(this: void, fontName: string, fontData: FontData): void"
    ]
  },
  {
    "comments": [
      "\nEnables or disables the clipping used by the VGUI that limits the drawing operations to a panels bounds.\nSee also @DisableClipping function and @Panel:NoClipping.\n",
      "@name surface.DisableClipping",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/surface/DisableClipping",
      "@param {void} this - no description",
      "@param {boolean} disable - True to disable, false to enable the clipping",
      "@returns {void}"
    ],
    "type": "func",
    "context": "surface",
    "name": "DisableClipping",
    "typings": [
      "(this: void, disable: boolean): void"
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/VideoData",
      "@interface VideoData",
      "@description Table used by @video.Record."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "VideoData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@container {string}: The video container format.**Valid options are:** webm, ogg"
        ],
        "context": "VideoData",
        "type": "interface",
        "name": "container",
        "typing": "string"
      },
      {
        "comments": [
          "@video {string}: The video codec.**Valid options are:** vp8, theora"
        ],
        "context": "VideoData",
        "type": "interface",
        "name": "video",
        "typing": "string"
      },
      {
        "comments": [
          "@audio {string}: The audio codec.**Valid options are:** vorbis"
        ],
        "context": "VideoData",
        "type": "interface",
        "name": "audio",
        "typing": "string"
      },
      {
        "comments": [
          "@quality {number}: The video quality"
        ],
        "context": "VideoData",
        "type": "interface",
        "name": "quality",
        "typing": "number"
      },
      {
        "comments": [
          "@bitrate {number}: The record bitrate"
        ],
        "context": "VideoData",
        "type": "interface",
        "name": "bitrate",
        "typing": "number"
      },
      {
        "comments": [
          "@fps {number}: Frames per second"
        ],
        "context": "VideoData",
        "type": "interface",
        "name": "fps",
        "typing": "number"
      },
      {
        "comments": [
          "@lockfps {boolean}: Lock the frame count per second"
        ],
        "context": "VideoData",
        "type": "interface",
        "name": "lockfps",
        "typing": "boolean"
      },
      {
        "comments": [
          "@name {string}: The file name for the video"
        ],
        "context": "VideoData",
        "type": "interface",
        "name": "name",
        "typing": "string"
      },
      {
        "comments": [
          "@width {number}: The videos width"
        ],
        "context": "VideoData",
        "type": "interface",
        "name": "width",
        "typing": "number"
      },
      {
        "comments": [
          "@height {number}: The videos height"
        ],
        "context": "VideoData",
        "type": "interface",
        "name": "height",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/VehicleParamsSteering",
      "@interface VehicleParamsSteering",
      "@description The structure used by @VehicleParams structure."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "VehicleParamsSteering",
    "typings": [],
    "types": [
      {
        "comments": [
          "@boostSteeringRateFactor {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "boostSteeringRateFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@boostSteeringRestRateFactor {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "boostSteeringRestRateFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@brakeSteeringRateFactor {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "brakeSteeringRateFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@degreesBoost {number}: The maximum angle at which the vehicle can turn while boosting"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "degreesBoost",
        "typing": "number"
      },
      {
        "comments": [
          "@degreesFast {number}: The maximum angle at which the vehicle can turn while moving at max speed and not boosting"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "degreesFast",
        "typing": "number"
      },
      {
        "comments": [
          "@degreesSlow {number}: The maximum angle at which the vehicle can turn while moving slowest"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "degreesSlow",
        "typing": "number"
      },
      {
        "comments": [
          "@dustCloud {boolean}: Disabled in Garry's Mod. In Half-Life 2: Episode 2 this dictates whether the vehicle should leave wheel dust effects when driving around"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "dustCloud",
        "typing": "boolean"
      },
      {
        "comments": [
          "@isSkidAllowed {boolean}: Whether the vehicle is allowed to skid/drift"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "isSkidAllowed",
        "typing": "boolean"
      },
      {
        "comments": [
          "@powerSlideAccel {number}: In Hammer Units"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "powerSlideAccel",
        "typing": "number"
      },
      {
        "comments": [
          "@speedFast {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "speedFast",
        "typing": "number"
      },
      {
        "comments": [
          "@speedSlow {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "speedSlow",
        "typing": "number"
      },
      {
        "comments": [
          "@steeringExponent {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "steeringExponent",
        "typing": "number"
      },
      {
        "comments": [
          "@steeringRateFast {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "steeringRateFast",
        "typing": "number"
      },
      {
        "comments": [
          "@steeringRateSlow {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "steeringRateSlow",
        "typing": "number"
      },
      {
        "comments": [
          "@steeringRestRateFast {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "steeringRestRateFast",
        "typing": "number"
      },
      {
        "comments": [
          "@steeringRestRateSlow {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "steeringRestRateSlow",
        "typing": "number"
      },
      {
        "comments": [
          "@throttleSteeringRestRateFactor {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "throttleSteeringRestRateFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@turnThrottleReduceFast {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "turnThrottleReduceFast",
        "typing": "number"
      },
      {
        "comments": [
          "@turnThrottleReduceSlow {number}: no description"
        ],
        "context": "VehicleParamsSteering",
        "type": "interface",
        "name": "turnThrottleReduceSlow",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/VehicleParamsEngine",
      "@warning The @Vehicle:SetVehicleParams function takes this in **miles per hour**, but @Vehicle:GetVehicleParams returns this in **hammer units per second**!\n1 MPH is roughly 17.6 HU/s.",
      "@warning Attempts to exceed the max RPM will force the active gear ratio to be that of the 1st gear, which will provide even more torque. This is the opposite of a rev limiter. This value is only used for the calculation of the effectively applied torque.",
      "@warning The @Vehicle:SetVehicleParams function takes this in **miles per hour**, but @Vehicle:GetVehicleParams returns this in **hammer units per second**!\n1 MPH is roughly 17.6 HU/s.",
      "@warning The @Vehicle:SetVehicleParams function takes this in **miles per hour**, but @Vehicle:GetVehicleParams returns this in **hammer units per second**!\n1 MPH is roughly 17.6 HU/s.",
      "@interface VehicleParamsEngine",
      "@description The structure used by @VehicleParams structure."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "VehicleParamsEngine",
    "typings": [],
    "types": [
      {
        "comments": [
          "@autobrakeSpeedFactor {number}: no description"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "autobrakeSpeedFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@autobrakeSpeedGain {number}: no description"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "autobrakeSpeedGain",
        "typing": "number"
      },
      {
        "comments": [
          "@axleRatio {number}: This acts as the final ratio of the gearbox.\nIt's like a master coefficient of the gearbox."
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "axleRatio",
        "typing": "number"
      },
      {
        "comments": [
          "@boostDelay {number}: Amount of seconds between being able to use the boost ( by pressing Shift key by default )"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "boostDelay",
        "typing": "number"
      },
      {
        "comments": [
          "@boostDuration {number}: Duration of the boost in seconds"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "boostDuration",
        "typing": "number"
      },
      {
        "comments": [
          "@boostForce {number}: no description"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "boostForce",
        "typing": "number"
      },
      {
        "comments": [
          "@boostMaxSpeed {number}: Maximum speed while boosting"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "boostMaxSpeed",
        "typing": "number"
      },
      {
        "comments": [
          "@gearCount {number}: Amount of gears this vehicle has"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "gearCount",
        "typing": "number"
      },
      {
        "comments": [
          "@gearRatio {table}: A table of numbers, of gear rations.Table length is equal to \"gearCount\" member of this table."
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "gearRatio",
        "typing": "table"
      },
      {
        "comments": [
          "@horsepower {number}: The HP amount of the vehicle\nThis value is used to calculate the effectively applied torque, along with ratios and *maxRPM*."
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "horsepower",
        "typing": "number"
      },
      {
        "comments": [
          "@isAutoTransmission {boolean}: If *true*, the gearbox shifts gears, if *false* the gearbox stays stuck to the 1st gear (gear number 0)."
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "isAutoTransmission",
        "typing": "boolean"
      },
      {
        "comments": [
          "@maxRPM {number}: Maximum RPM of the vehicle.Despite this being a maximum value, the vehicle can exceed it."
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "maxRPM",
        "typing": "number"
      },
      {
        "comments": [
          "@maxRevSpeed {number}: Maximum reverse speed of the vehicle"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "maxRevSpeed",
        "typing": "number"
      },
      {
        "comments": [
          "@maxSpeed {number}: Maximum forward going speed of the vehicle without boosting"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "maxSpeed",
        "typing": "number"
      },
      {
        "comments": [
          "@shiftDownRPM {number}: Amount of RPM to automatically shift one gear down"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "shiftDownRPM",
        "typing": "number"
      },
      {
        "comments": [
          "@shiftUpRPM {number}: Amount of RPM to automatically shift one gear up"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "shiftUpRPM",
        "typing": "number"
      },
      {
        "comments": [
          "@throttleTime {number}: no description"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "throttleTime",
        "typing": "number"
      },
      {
        "comments": [
          "@torqueBoost {boolean}: no description"
        ],
        "context": "VehicleParamsEngine",
        "type": "interface",
        "name": "torqueBoost",
        "typing": "boolean"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/VehicleParamsBody",
      "@interface VehicleParamsBody",
      "@description The structure used by @VehicleParams structure."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "VehicleParamsBody",
    "typings": [],
    "types": [
      {
        "comments": [
          "@addGravity {number}: Additional gravity to be applied to the vehicle"
        ],
        "context": "VehicleParamsBody",
        "type": "interface",
        "name": "addGravity",
        "typing": "number"
      },
      {
        "comments": [
          "@counterTorqueFactor {number}: no description"
        ],
        "context": "VehicleParamsBody",
        "type": "interface",
        "name": "counterTorqueFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@keepUprightTorque {number}: no description"
        ],
        "context": "VehicleParamsBody",
        "type": "interface",
        "name": "keepUprightTorque",
        "typing": "number"
      },
      {
        "comments": [
          "@massCenterOverride {Vector}: Mass center override"
        ],
        "context": "VehicleParamsBody",
        "type": "interface",
        "name": "massCenterOverride",
        "typing": "Vector"
      },
      {
        "comments": [
          "@massOverride {number}: Mass override"
        ],
        "context": "VehicleParamsBody",
        "type": "interface",
        "name": "massOverride",
        "typing": "number"
      },
      {
        "comments": [
          "@maxAngularVelocity {number}: Maximum angular velocity"
        ],
        "context": "VehicleParamsBody",
        "type": "interface",
        "name": "maxAngularVelocity",
        "typing": "number"
      },
      {
        "comments": [
          "@tiltForce {number}: no description"
        ],
        "context": "VehicleParamsBody",
        "type": "interface",
        "name": "tiltForce",
        "typing": "number"
      },
      {
        "comments": [
          "@tiltForceHeight {number}: no description"
        ],
        "context": "VehicleParamsBody",
        "type": "interface",
        "name": "tiltForceHeight",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/VehicleParamsAxle",
      "@interface VehicleParamsAxle",
      "@description The structure used by @VehicleParams structure."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "VehicleParamsAxle",
    "typings": [],
    "types": [
      {
        "comments": [
          "@brakeFactor {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "brakeFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@offset {Vector}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "offset",
        "typing": "Vector"
      },
      {
        "comments": [
          "@raytraceCenterOffset {Vector}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "raytraceCenterOffset",
        "typing": "Vector"
      },
      {
        "comments": [
          "@raytraceOffset {Vector}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "raytraceOffset",
        "typing": "Vector"
      },
      {
        "comments": [
          "@suspension_maxBodyForce {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "suspension_maxBodyForce",
        "typing": "number"
      },
      {
        "comments": [
          "@suspension_springConstant {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "suspension_springConstant",
        "typing": "number"
      },
      {
        "comments": [
          "@suspension_springDamping {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "suspension_springDamping",
        "typing": "number"
      },
      {
        "comments": [
          "@suspension_springDampingCompression {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "suspension_springDampingCompression",
        "typing": "number"
      },
      {
        "comments": [
          "@suspension_stabilizerConstant {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "suspension_stabilizerConstant",
        "typing": "number"
      },
      {
        "comments": [
          "@torqueFactor {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "torqueFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@wheelOffset {Vector}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheelOffset",
        "typing": "Vector"
      },
      {
        "comments": [
          "@wheels_brakeMaterialIndex {number}: Material index of braking material of the wheels. Upon braking, the wheels will be set to this material."
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheels_brakeMaterialIndex",
        "typing": "number"
      },
      {
        "comments": [
          "@wheels_damping {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheels_damping",
        "typing": "number"
      },
      {
        "comments": [
          "@wheels_frictionScale {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheels_frictionScale",
        "typing": "number"
      },
      {
        "comments": [
          "@wheels_inertia {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheels_inertia",
        "typing": "number"
      },
      {
        "comments": [
          "@wheels_mass {number}: Mass of each wheel."
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheels_mass",
        "typing": "number"
      },
      {
        "comments": [
          "@wheels_materialIndex {number}: Material index of the wheels by default."
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheels_materialIndex",
        "typing": "number"
      },
      {
        "comments": [
          "@wheels_radius {number}: Radius of the wheels."
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheels_radius",
        "typing": "number"
      },
      {
        "comments": [
          "@wheels_rotdamping {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheels_rotdamping",
        "typing": "number"
      },
      {
        "comments": [
          "@wheels_skidMaterialIndex {number}: Material index of skid material of the wheels. Upon skidding ( pressing Space and sliding the vehicle ), the wheels will be set to this material."
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheels_skidMaterialIndex",
        "typing": "number"
      },
      {
        "comments": [
          "@wheels_springAdditionalLength {number}: no description"
        ],
        "context": "VehicleParamsAxle",
        "type": "interface",
        "name": "wheels_springAdditionalLength",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/VehicleParams",
      "@interface VehicleParams",
      "@description The structure used by @Vehicle:SetVehicleParams and @Vehicle:GetVehicleParams."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "VehicleParams",
    "typings": [],
    "types": [
      {
        "comments": [
          "@wheelsPerAxle {number}: Wheels per axle"
        ],
        "context": "VehicleParams",
        "type": "interface",
        "name": "wheelsPerAxle",
        "typing": "number"
      },
      {
        "comments": [
          "@axleCount {number}: Number of axles"
        ],
        "context": "VehicleParams",
        "type": "interface",
        "name": "axleCount",
        "typing": "number"
      },
      {
        "comments": [
          "@axles {VehicleParamsAxle[]}: A table of @VehicleParamsAxle structure tables."
        ],
        "context": "VehicleParams",
        "type": "interface",
        "name": "axles",
        "typing": "VehicleParamsAxle[]"
      },
      {
        "comments": [
          "@body {VehicleParamsBody}: See @VehicleParamsBody structure"
        ],
        "context": "VehicleParams",
        "type": "interface",
        "name": "body",
        "typing": "VehicleParamsBody"
      },
      {
        "comments": [
          "@engine {VehicleParamsEngine}: See @VehicleParamsEngine structure"
        ],
        "context": "VehicleParams",
        "type": "interface",
        "name": "engine",
        "typing": "VehicleParamsEngine"
      },
      {
        "comments": [
          "@steering {VehicleParamsSteering}: See @VehicleParamsSteering structure"
        ],
        "context": "VehicleParams",
        "type": "interface",
        "name": "steering",
        "typing": "VehicleParamsSteering"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/Undo",
      "@interface Undo",
      "@description Table structure used by @undo.Do_Undo."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "Undo",
    "typings": [],
    "types": [
      {
        "comments": [
          "@Owner {Player}: The player responsible who owns the undo"
        ],
        "context": "Undo",
        "type": "interface",
        "name": "Owner",
        "typing": "Player"
      },
      {
        "comments": [
          "@Name {string}: The name of the text to report to the player"
        ],
        "context": "Undo",
        "type": "interface",
        "name": "Name",
        "typing": "string"
      },
      {
        "comments": [
          "@Entities {table}: A table of entities to be removed by the undo"
        ],
        "context": "Undo",
        "type": "interface",
        "name": "Entities",
        "typing": "table"
      },
      {
        "comments": [
          "@Functions {table}: A table of {function_to_call, func_arg2, func_arg3}"
        ],
        "context": "Undo",
        "type": "interface",
        "name": "Functions",
        "typing": "table"
      },
      {
        "comments": [
          "@CustomUndoText {string}: A custom undo text to show the client"
        ],
        "context": "Undo",
        "type": "interface",
        "name": "CustomUndoText",
        "typing": "string"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/UGCFileInfo",
      "@interface UGCFileInfo",
      "@description Table structure used by @steamworks.FileInfo."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "UGCFileInfo",
    "typings": [],
    "types": [
      {
        "comments": [
          "@id {number}: The Workshop item ID"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "id",
        "typing": "number"
      },
      {
        "comments": [
          "@title {string}: The title of the Workshop item"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "title",
        "typing": "string"
      },
      {
        "comments": [
          "@description {string}: The description of the Workshop item"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "description",
        "typing": "string"
      },
      {
        "comments": [
          "@fileid {number}: The internal File ID of the workshop item, if any"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "fileid",
        "typing": "number"
      },
      {
        "comments": [
          "@previewid {number}: The internal File ID of the workshop item preview, if any"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "previewid",
        "typing": "number"
      },
      {
        "comments": [
          "@owner {number}: The SteamID64 of the original uploader of the addon"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "owner",
        "typing": "number"
      },
      {
        "comments": [
          "@created {number}: Unix timestamp of when the item was created"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "created",
        "typing": "number"
      },
      {
        "comments": [
          "@updated {number}: Unix timestamp of when the file was last updated"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "updated",
        "typing": "number"
      },
      {
        "comments": [
          "@banned {boolean}: Whether the file is banned or not"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "banned",
        "typing": "boolean"
      },
      {
        "comments": [
          "@tags {string}: Comma (,) separated list of tags, may be truncated to some length"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "tags",
        "typing": "string"
      },
      {
        "comments": [
          "@size {number}: File size of the workshop item contents"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "size",
        "typing": "number"
      },
      {
        "comments": [
          "@previewsize {number}: Filesize of the preview file"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "previewsize",
        "typing": "number"
      },
      {
        "comments": [
          "@installed {boolean}: If the addon is subscribed, this value represents whether it is installed on the client and its files are accessible, false otherwise."
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "installed",
        "typing": "boolean"
      },
      {
        "comments": [
          "@disabled {boolean}: If the addon is subscribed, this value represents whether it is disabled on the client, false otherwise."
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "disabled",
        "typing": "boolean"
      },
      {
        "comments": [
          "@children {table}: A list of child Workshop Items for this item.\nFor collections this will be sub-collections, for workshop items this will be the items they depend on."
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "children",
        "typing": "table"
      },
      {
        "comments": [
          "@ownername {string}: The \"nice\" name of the Uploader, or \"Unnammed Player\" if we failed to get the data for some reason.\nDo not use this field as it will most likely not be updated in time. Use @steamworks.RequestPlayerInfo instead."
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "ownername",
        "typing": "string"
      },
      {
        "comments": [
          "@error {number}: If this key is set, no other data will be present in the response.\nValues above 0 represent Steam Error codes, values below 0 mean the following:\n* -1 means Failed to create query\n* -2 means Failed to send query\n* -3 means Received 0 or more than 1 result\n* -4 means Failed to get item data from the response\n* -5 means Workshop item ID in the response is invalid\n* -6 means Workshop item ID in response is mismatching the requested file ID"
        ],
        "context": "UGCFileInfo",
        "type": "interface",
        "name": "error",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/Trace",
      "@warning Using a function here is super slow - try to avoid it.",
      "@interface Trace",
      "@description Table structure used for @util.TraceLine."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "Trace",
    "typings": [],
    "types": [
      {
        "comments": [
          "@start {Vector}: The start position of the trace"
        ],
        "context": "Trace",
        "type": "interface",
        "name": "start",
        "typing": "Vector"
      },
      {
        "comments": [
          "@endpos {Vector}: The end position of the trace"
        ],
        "context": "Trace",
        "type": "interface",
        "name": "endpos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@filter {Entity}: Things the trace should not hit. Can also be a table of entities or a function with one argument:\nReturn true in the function to hit the entity, false to skip it."
        ],
        "context": "Trace",
        "type": "interface",
        "name": "filter",
        "typing": "Entity"
      },
      {
        "comments": [
          "@mask {MASK | CONTENTS}: The trace mask @MASK enum. This determines what the trace should hit and what it shouldn't hit. A mask is a combination of @CONTENTS enum - you can use these for more advanced masks."
        ],
        "context": "Trace",
        "type": "interface",
        "name": "mask",
        "typing": "MASK | CONTENTS"
      },
      {
        "comments": [
          "@collisiongroup {COLLISION_GROUP}: The collision group @COLLISION_GROUP enum. This determines what the trace should hit in regards to the entity's collision group."
        ],
        "context": "Trace",
        "type": "interface",
        "name": "collisiongroup",
        "typing": "COLLISION_GROUP"
      },
      {
        "comments": [
          "@ignoreworld {boolean}: Should the trace ignore world or not"
        ],
        "context": "Trace",
        "type": "interface",
        "name": "ignoreworld",
        "typing": "boolean"
      },
      {
        "comments": [
          "@output {table}: If set, the trace result will be written to the supplied table instead of returning a new table"
        ],
        "context": "Trace",
        "type": "interface",
        "name": "output",
        "typing": "table"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/TraceResult",
      "@interface TraceResult",
      "@description Table structure used as trace result. Default values are when the trace hits nothing."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "TraceResult",
    "typings": [],
    "types": [
      {
        "comments": [
          "@Entity {Entity}: The entity hit by the trace."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "Entity",
        "typing": "Entity"
      },
      {
        "comments": [
          "@Fraction {number}: This indicates the how much of your trace length was used from 0-1 (resultLength/originalLength)."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "Fraction",
        "typing": "number"
      },
      {
        "comments": [
          "@FractionLeftSolid {number}: Given the trace started in a solid enviroment, this will return at what distance the trace left the solid from 0-1. Doesn't work if the trace hit a non-worldspawn entity."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "FractionLeftSolid",
        "typing": "number"
      },
      {
        "comments": [
          "@Hit {boolean}: Indicates whether the trace hit something."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "Hit",
        "typing": "boolean"
      },
      {
        "comments": [
          "@HitBox {number}: The ID of the hitbox hit by the trace."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "HitBox",
        "typing": "number"
      },
      {
        "comments": [
          "@HitGroup {HITGROUP}: @HITGROUP enum describing what hitgroup the trace hit (not the same as HitBox)."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "HitGroup",
        "typing": "HITGROUP"
      },
      {
        "comments": [
          "@HitNoDraw {boolean}: Indicates whenever the trace hit a no-draw brush."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "HitNoDraw",
        "typing": "boolean"
      },
      {
        "comments": [
          "@HitNonWorld {boolean}: Indicates whenever the trace did not hit the world."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "HitNonWorld",
        "typing": "boolean"
      },
      {
        "comments": [
          "@HitNormal {Vector}: The direction of the surface that was hit as a normal vector (vector with [length](https://wiki.garrysmod.com/page/Vector/Length) of 1)."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "HitNormal",
        "typing": "Vector"
      },
      {
        "comments": [
          "@HitPos {Vector}: The position the trace stopped. This will be the provided endpos if the trace hit nothing."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "HitPos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@HitSky {boolean}: Indicates whenever the trace hit the sky."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "HitSky",
        "typing": "boolean"
      },
      {
        "comments": [
          "@HitTexture {string}: The surface material (not texture) of whatever the trace hit. Will be \"**displacement**\" if the trace hit a displacement, and **studio** if it hit a prop."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "HitTexture",
        "typing": "string"
      },
      {
        "comments": [
          "@HitWorld {boolean}: Indicates whenever the trace hit the world."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "HitWorld",
        "typing": "boolean"
      },
      {
        "comments": [
          "@MatType {MAT}: @MAT enum of the material hit by the trace."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "MatType",
        "typing": "MAT"
      },
      {
        "comments": [
          "@Normal {Vector}: The direction of the trace as a normal vector (vector with [length](https://wiki.garrysmod.com/page/Vector/Length) of 1)."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "Normal",
        "typing": "Vector"
      },
      {
        "comments": [
          "@PhysicsBone {number}: The @PhysObj type ID that was hit.\nUsed for @EntityFuncs:GetPhysicsObjectNum."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "PhysicsBone",
        "typing": "number"
      },
      {
        "comments": [
          "@StartPos {Vector}: The origin of the trace. Will match the provided startpos."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "StartPos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@SurfaceProps {number}: ID of hit surface property from scripts/surfaceproperties.txt.\nYou can get the name using @util.GetSurfacePropName.\nUsed for @CEffectData:SetSurfaceProp."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "SurfaceProps",
        "typing": "number"
      },
      {
        "comments": [
          "@StartSolid {boolean}: Indicates whenever the trace started in a solid enviroment."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "StartSolid",
        "typing": "boolean"
      },
      {
        "comments": [
          "@AllSolid {boolean}: True if the entire trace is inside a solid."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "AllSolid",
        "typing": "boolean"
      },
      {
        "comments": [
          "@SurfaceFlags {SURF}: The surface flags of the hit surface. See @SURF enum."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "SurfaceFlags",
        "typing": "SURF"
      },
      {
        "comments": [
          "@DispFlags {DISPSURF}: The displacement flags of the hit surface. See @DISPSURF enum."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "DispFlags",
        "typing": "DISPSURF"
      },
      {
        "comments": [
          "@Contents {CONTENTS}: The contents of the hit surface. See @CONTENTS enum."
        ],
        "context": "TraceResult",
        "type": "interface",
        "name": "Contents",
        "typing": "CONTENTS"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/ToScreenData",
      "@interface ToScreenData",
      "@description Table returned by @VectorFuncs:ToScreen."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "ToScreenData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@x {number}: The x coordinate on the players screen"
        ],
        "context": "ToScreenData",
        "type": "interface",
        "name": "x",
        "typing": "number"
      },
      {
        "comments": [
          "@y {number}: The y coordinate on the players screen"
        ],
        "context": "ToScreenData",
        "type": "interface",
        "name": "y",
        "typing": "number"
      },
      {
        "comments": [
          "@visible {boolean}: The coordinate is not behind the player. **This does not mean the coordinate is on the screen.** When this is false, it means that the coordinate would not be on the screen even if the player had a full 180 degree FOV."
        ],
        "context": "ToScreenData",
        "type": "interface",
        "name": "visible",
        "typing": "boolean"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/TextureData",
      "@interface TextureData",
      "@description Used for @draw.TexturedQuad."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "TextureData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@texture {number}: surface.GetTextureID number of the texture to be drawn."
        ],
        "context": "TextureData",
        "type": "interface",
        "name": "texture",
        "typing": "number"
      },
      {
        "comments": [
          "@x {number}: The x Coordinate."
        ],
        "context": "TextureData",
        "type": "interface",
        "name": "x",
        "typing": "number"
      },
      {
        "comments": [
          "@y {number}: The y Coordinate."
        ],
        "context": "TextureData",
        "type": "interface",
        "name": "y",
        "typing": "number"
      },
      {
        "comments": [
          "@w {number}: The width of the texture."
        ],
        "context": "TextureData",
        "type": "interface",
        "name": "w",
        "typing": "number"
      },
      {
        "comments": [
          "@h {number}: The height of the texture."
        ],
        "context": "TextureData",
        "type": "interface",
        "name": "h",
        "typing": "number"
      },
      {
        "comments": [
          "@color {Color}: The texture color. See @IColor structure."
        ],
        "context": "TextureData",
        "type": "interface",
        "name": "color",
        "typing": "Color"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/TOOL",
      "@note You can use the spawnmenu_reload``` console command to rebuild tool CPanels.",
      "@interface ITool",
      "@description The TOOL table is used in Sandbox tool creation. You can find a list of callbacks on the [TOOL Hooks](https://wiki.garrysmod.com/page/Category:TOOL%20Hooks) page and a list of methods on the [Tool Functions](https://wiki.garrysmod.com/page/Category:Tool) page. Do note that some of the fields below have no effect on server-side operations.\nThe tool information box drawn on the HUD while your tool is selected has 2 values that are set by @language.Add.\n\"tool.[tool mode].name\" - The tool name (Note this is NOT the same as TOOL.Name)\n\"tool.[tool mode].desc\" - The tool description\nEnsure that all tool file names are entirely lowercase.  Including capital letters can lead to unintended behavior."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "ITool",
    "typings": [],
    "types": [
      {
        "comments": [
          "@AddToMenu {boolean}: If set to false, the tool won't be added to the tool menu and players will have to access it by other means."
        ],
        "context": "ITool",
        "type": "interface",
        "name": "AddToMenu",
        "typing": "boolean"
      },
      {
        "comments": [
          "@Category {string}: The tool menu category under which the tool should be listed."
        ],
        "context": "ITool",
        "type": "interface",
        "name": "Category",
        "typing": "string"
      },
      {
        "comments": [
          "@Command {string}: The console command to execute upon being selected in the Q menu."
        ],
        "context": "ITool",
        "type": "interface",
        "name": "Command",
        "typing": "string"
      },
      {
        "comments": [
          "@Name {string}: The name of the tool in the Q menu.\nCommon practice is to set this to \"#tool.[lua filename].name\" to match the name displayed in the tool information box."
        ],
        "context": "ITool",
        "type": "interface",
        "name": "Name",
        "typing": "string"
      },
      {
        "comments": [
          "@ClientConVar {table}: A key-value ( convar name-default value ) table containing the client-side convars to create. All convars will be prefixed with the filename of the tool.\nYou can later use @ToolFuncs:GetClientNumber or @ToolFuncs:GetClientInfo to retrieve these values."
        ],
        "context": "ITool",
        "type": "interface",
        "name": "ClientConVar",
        "typing": "table"
      },
      {
        "comments": [
          "@ServerConVar {table}: Same as above, but created server-side instead."
        ],
        "context": "ITool",
        "type": "interface",
        "name": "ServerConVar",
        "typing": "table"
      },
      {
        "comments": [
          "@BuildCPanel {DForm}: The function that is called to build the context menu for your tool. It has one argument, namely the context menu's base panel to which all of your custom panels are going to be parented to.\nWhile it might sound like a hook, it isn't - you won't receive a self argument inside the function. The only argument you will receive is a @DForm type that represents the CPanel."
        ],
        "context": "ITool",
        "type": "interface",
        "name": "BuildCPanel",
        "typing": "DForm"
      },
      {
        "comments": [
          "@Information {table}: Allows you to override the tool usage information shown when the tool is equipped.\nSee [Tool Information Display](https://wiki.garrysmod.com/page/Tool%20Information%20Display) for more information."
        ],
        "context": "ITool",
        "type": "interface",
        "name": "Information",
        "typing": "table"
      },
      {
        "comments": [
          "@Mode {string}: Class name of the tool. (name of the .lua file)\nThis is set automatically."
        ],
        "context": "ITool",
        "type": "interface",
        "name": "Mode",
        "typing": "string"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/TextData",
      "@interface TextData",
      "@description Used for @draw.Text."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "TextData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@text {string}: Text to be drawn."
        ],
        "context": "TextData",
        "type": "interface",
        "name": "text",
        "typing": "string"
      },
      {
        "comments": [
          "@font {string}: The font to draw with. List of default fonts can be found [here](https://wiki.garrysmod.com/page/Default_Fonts)."
        ],
        "context": "TextData",
        "type": "interface",
        "name": "font",
        "typing": "string"
      },
      {
        "comments": [
          "@pos {table}: This holds the X and Y coordinates. Key value 1 is x, key value 2 is y."
        ],
        "context": "TextData",
        "type": "interface",
        "name": "pos",
        "typing": "table"
      },
      {
        "comments": [
          "@xalign {TEXT_ALIGN}: The alignment of the X position. See @TEXT_ALIGN enum"
        ],
        "context": "TextData",
        "type": "interface",
        "name": "xalign",
        "typing": "TEXT_ALIGN"
      },
      {
        "comments": [
          "@yalign {TEXT_ALIGN}: The alignment of the Y position. See @TEXT_ALIGN enum"
        ],
        "context": "TextData",
        "type": "interface",
        "name": "yalign",
        "typing": "TEXT_ALIGN"
      },
      {
        "comments": [
          "@color {Color}: The text color"
        ],
        "context": "TextData",
        "type": "interface",
        "name": "color",
        "typing": "Color"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/TeamData",
      "@interface TeamData",
      "@description Table is one element from @team.GetAllTeams."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "TeamData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@Color {Color}: Color of the team"
        ],
        "context": "TeamData",
        "type": "interface",
        "name": "Color",
        "typing": "Color"
      },
      {
        "comments": [
          "@Joinable {boolean}: Whether the team is joinable or not."
        ],
        "context": "TeamData",
        "type": "interface",
        "name": "Joinable",
        "typing": "boolean"
      },
      {
        "comments": [
          "@Name {string}: Name of the team"
        ],
        "context": "TeamData",
        "type": "interface",
        "name": "Name",
        "typing": "string"
      },
      {
        "comments": [
          "@Score {number}: Score of the team"
        ],
        "context": "TeamData",
        "type": "interface",
        "name": "Score",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/SurfacePropertyData",
      "@validate",
      "@interface SurfacePropertyData",
      "@description Table returned by @util.GetSurfaceData."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "SurfacePropertyData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@name {string}: The name of the surface property, identical to @util.GetSurfacePropName."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "name",
        "typing": "string"
      },
      {
        "comments": [
          "@hardnessFactor {number}: How hard a surface is. If this is greater than or equal to another surfaces's hardThreshold, a hard impact sound will be used."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "hardnessFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@hardThreshold {number}: Hardness threshold for impact sounds. HitSurface.hardnessFactor >= InflictorSurface.hardThreshold - hard impact sound (depends on hardVelocityThreshold's value), HitSurface.hardnessFactor = HitSurface.hardVelocityThreshold - hard impact sound (depends on hardThreshold's value), impactSpeed = InflictorSurface.roughThreshold - rough friction sound, HitSurface.roughnessFactor  0 - true."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "hardThreshold",
        "typing": "number"
      },
      {
        "comments": [
          "@jumpFactor {number}: Scalar multiplier for player jump height - or more accurately, applied z-axis velocity on a surface. For example, 1 - normal jump, 2 - twice as high, and 0.5 - half as high."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "jumpFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@material {MAT}: The surface material. See @MAT enum."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "material",
        "typing": "MAT"
      },
      {
        "comments": [
          "@maxSpeedFactor {number}: Scalar multiplier for player speed. Achieves this by multiplying @CMoveData:SetMaxSpeed in @GamemodeHooks:Move."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "maxSpeedFactor",
        "typing": "number"
      },
      {
        "comments": [
          "@dampening {number}: This is the physical drag on an object when in contact with this surface (0 - x, 0 none to x a lot)."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "dampening",
        "typing": "number"
      },
      {
        "comments": [
          "@density {number}: Material density in kg / m^3 (water is 1000). If a surface's density is < 1000, it will float in water. This is used to calculate the total mass of an object."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "density",
        "typing": "number"
      },
      {
        "comments": [
          "@elasticity {number}: Collision elasticity - used to compute coefficient of restitution represented as a number 0.0 - 1.0. 0.01 is soft, 1.0 is hard."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "elasticity",
        "typing": "number"
      },
      {
        "comments": [
          "@friction {number}: Physical friction used to slow entities touching the surface represented as a number 0.0 - 1.0. 0.01 is slick, 1.0 is completely rough."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "friction",
        "typing": "number"
      },
      {
        "comments": [
          "@thickness {number}: Material thickness. If this is 0, the material is not volumetrically solid, and thus the object mass will be calculated as \"volume * 0.0254^3 * density\" where 0.0254 is meters per inch. If non-zero, the mass will be \"surfacearea * thickness * 0.0254^3 * density\"."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "thickness",
        "typing": "number"
      },
      {
        "comments": [
          "@breakSound {string}: Sound to play when a prop or func_breakable is broken."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "breakSound",
        "typing": "string"
      },
      {
        "comments": [
          "@bulletImpactSound {string}: Bullet impact sound with this surface."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "bulletImpactSound",
        "typing": "string"
      },
      {
        "comments": [
          "@impactHardSound {string}: Physical impact sound when hitting surfaces hard."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "impactHardSound",
        "typing": "string"
      },
      {
        "comments": [
          "@impactSoftSound {string}: Physical impact sound when hitting surfaces softly."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "impactSoftSound",
        "typing": "string"
      },
      {
        "comments": [
          "@rollingSound {string}: Unused sound."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "rollingSound",
        "typing": "string"
      },
      {
        "comments": [
          "@scrapeRoughSound {string}: Friction sound when roughly scraping against an entity."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "scrapeRoughSound",
        "typing": "string"
      },
      {
        "comments": [
          "@scrapeSmoothSound {string}: Friction sound when smoothly scraping against an entity."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "scrapeSmoothSound",
        "typing": "string"
      },
      {
        "comments": [
          "@stepLeftSound {string}: Footstep sound for left foot."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "stepLeftSound",
        "typing": "string"
      },
      {
        "comments": [
          "@stepRightSound {string}: Footstep sound for right foot."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "stepRightSound",
        "typing": "string"
      },
      {
        "comments": [
          "@strainSound {string}: Unused sound."
        ],
        "context": "SurfacePropertyData",
        "type": "interface",
        "name": "strainSound",
        "typing": "string"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/SWEP",
      "@warning The gamemode and view models **must** support this feature for it to work!\nYou can find more information here: [Using Viewmodel Hands](https://wiki.garrysmod.com/page/Using_Viewmodel_Hands)",
      "@interface IWeapon",
      "@description Information about a SWEP, used by @SandboxHooks:PlayerGiveSWEP and SWEP creation. For list of callbacks, see [Category:WEAPON_Hooks](https://wiki.garrysmod.com/page/Category:WEAPON_Hooks).\nWhile some of the fields may be serverside or clientside only, it is recommended to provide them on both so addons could use their values."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "IWeapon",
    "typings": [],
    "types": [
      {
        "comments": [
          "@ClassName {string}: Entity class name of the SWEP (file or folder name of your SWEP). This is set automatically"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "ClassName",
        "typing": "string"
      },
      {
        "comments": [
          "@Category {string}: (Clientside) Category the SWEP is in"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Category",
        "typing": "string"
      },
      {
        "comments": [
          "@Spawnable {boolean}: Whether this SWEP should be displayed in the Q menu"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Spawnable",
        "typing": "boolean"
      },
      {
        "comments": [
          "@AdminOnly {boolean}: Whether or not only admins can spawn the SWEP from their Q menu"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "AdminOnly",
        "typing": "boolean"
      },
      {
        "comments": [
          "@PrintName {string}: Nice name of the SWEP"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "PrintName",
        "typing": "string"
      },
      {
        "comments": [
          "@Base {string}: The base weapon to derive from. This **must** be a Lua weapon"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Base",
        "typing": "string"
      },
      {
        "comments": [
          "@m_WeaponDeploySpeed {number}: Multiplier of deploy speed"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "m_WeaponDeploySpeed",
        "typing": "number"
      },
      {
        "comments": [
          "@Owner {Entity}: The entity that owns/wields this SWEP, if any"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Owner",
        "typing": "Entity"
      },
      {
        "comments": [
          "@Author {string}: (Clientside) The author of the SWEP to be shown in weapon selection"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Author",
        "typing": "string"
      },
      {
        "comments": [
          "@Contact {string}: (Clientside) The contacts of the SWEP creator to be shown in weapon selection"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Contact",
        "typing": "string"
      },
      {
        "comments": [
          "@Purpose {string}: (Clientside) The purpose of the SWEP creator to be shown in weapon selection"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Purpose",
        "typing": "string"
      },
      {
        "comments": [
          "@Instructions {string}: (Clientside) How to use your weapon, to be shown in weapon selection"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Instructions",
        "typing": "string"
      },
      {
        "comments": [
          "@ViewModel {string}: Path to the view model for your SWEP (what the wielder will see)"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "ViewModel",
        "typing": "string"
      },
      {
        "comments": [
          "@ViewModelFlip {boolean}: (Clientside) Should we flip the view model? This is needed for some CS:S view models"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "ViewModelFlip",
        "typing": "boolean"
      },
      {
        "comments": [
          "@ViewModelFlip1 {boolean}: (Clientside) Same as ViewModelFlip, but for the second viewmodel"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "ViewModelFlip1",
        "typing": "boolean"
      },
      {
        "comments": [
          "@ViewModelFlip2 {boolean}: (Clientside) Same as ViewModelFlip, but for the third viewmodel"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "ViewModelFlip2",
        "typing": "boolean"
      },
      {
        "comments": [
          "@ViewModelFOV {number}: (Clientside) An angle of FOV used for the view model (Half-Life value is 90; Half-Life 2 is 54; Counter-Strike: Source is 74; Day of Defeat: Source is 45)"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "ViewModelFOV",
        "typing": "number"
      },
      {
        "comments": [
          "@WorldModel {string}: The world model for your SWEP (what you will see in other players hands)"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "WorldModel",
        "typing": "string"
      },
      {
        "comments": [
          "@AutoSwitchFrom {boolean}: (Serverside) Whether this weapon can be autoswitched away from when the player runs out of ammo in this weapon or picks up another weapon or ammo"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "AutoSwitchFrom",
        "typing": "boolean"
      },
      {
        "comments": [
          "@AutoSwitchTo {boolean}: (Serverside) Whether this weapon can be autoswitched to when the player runs out of ammo in their current weapon or they pick this weapon up"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "AutoSwitchTo",
        "typing": "boolean"
      },
      {
        "comments": [
          "@Weight {number}: (Serverside) Decides whether we should switch from/to this"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Weight",
        "typing": "number"
      },
      {
        "comments": [
          "@BobScale {number}: (Clientside) The scale of the viewmodel bob (viewmodel movement from left to right when walking around)"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "BobScale",
        "typing": "number"
      },
      {
        "comments": [
          "@SwayScale {number}: (Clientside) The scale of the viewmodel sway (viewmodel position lerp when looking around)."
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "SwayScale",
        "typing": "number"
      },
      {
        "comments": [
          "@BounceWeaponIcon {boolean}: (Clientside) Should the weapon icon bounce in weapon selection?"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "BounceWeaponIcon",
        "typing": "boolean"
      },
      {
        "comments": [
          "@DrawWeaponInfoBox {boolean}: (Clientside) Should draw the weapon selection info box, containing SWEP.Instructions, etc."
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "DrawWeaponInfoBox",
        "typing": "boolean"
      },
      {
        "comments": [
          "@DrawAmmo {boolean}: (Clientside) Should we draw the default HL2 ammo counter?"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "DrawAmmo",
        "typing": "boolean"
      },
      {
        "comments": [
          "@DrawCrosshair {boolean}: (Clientside) Should we draw the default crosshair?"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "DrawCrosshair",
        "typing": "boolean"
      },
      {
        "comments": [
          "@RenderGroup {RENDERGROUP}: (Clientside) The SWEP render group, see @RENDERGROUP enum"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "RenderGroup",
        "typing": "RENDERGROUP"
      },
      {
        "comments": [
          "@Slot {number}: Slot in the weapon selection menu, starts with 0"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Slot",
        "typing": "number"
      },
      {
        "comments": [
          "@SlotPos {number}: Position in the slot, should be in the range 0-128"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "SlotPos",
        "typing": "number"
      },
      {
        "comments": [
          "@SpeechBubbleLid {number}: (Clientside) Internal variable for drawing the info box in weapon selection"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "SpeechBubbleLid",
        "typing": "number"
      },
      {
        "comments": [
          "@WepSelectIcon {number}: (Clientside) Path to an texture. Override this in your SWEP to set the icon in the weapon selection. This must be the texture ID, see @surface.GetTextureID"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "WepSelectIcon",
        "typing": "number"
      },
      {
        "comments": [
          "@CSMuzzleFlashes {boolean}: (Clientside) Should we use Counter-Strike muzzle flashes upon firing? This is required for DoD:S or CS:S view models to fix their muzzle flashes."
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "CSMuzzleFlashes",
        "typing": "boolean"
      },
      {
        "comments": [
          "@CSMuzzleX {boolean}: (Clientside) Use the X shape muzzle flash instead of the default Counter-Strike muzzle flash. Requires CSMuzzleFlashes to be set to true"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "CSMuzzleX",
        "typing": "boolean"
      },
      {
        "comments": [
          "Ammo - {string}: Ammo type (\"Pistol\", \"SMG1\" etc)"
        ],
        "type": "interface",
        "name": "Ammo",
        "typing": "string",
        "context": "IStructuresIWeaponPrimary"
      },
      {
        "comments": [
          "ClipSize - {number}: The maximum amount of bullets one clip can hold"
        ],
        "type": "interface",
        "name": "ClipSize",
        "typing": "number",
        "context": "IStructuresIWeaponPrimary"
      },
      {
        "comments": [
          "DefaultClip - {number}: Default ammo in the clip, making it higher than ClipSize will give player additional ammo on spawn"
        ],
        "type": "interface",
        "name": "DefaultClip",
        "typing": "number",
        "context": "IStructuresIWeaponPrimary"
      },
      {
        "comments": [
          "Automatic - {boolean}: If true makes the weapon shoot automatically as long as the player has primary attack button held down"
        ],
        "type": "interface",
        "name": "Automatic",
        "typing": "boolean",
        "context": "IStructuresIWeaponPrimary"
      },
      {
        "comments": [
          "@Primary {IStructuresIWeaponPrimary}: Primary attack settings. The table contains these fields:"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Primary",
        "typing": "IStructuresIWeaponPrimary"
      },
      {
        "comments": [
          "@Secondary {table}: Secondary attack settings, has same fields as Primary attack settings"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Secondary",
        "typing": "table"
      },
      {
        "comments": [
          "@UseHands {boolean}: (Clientside) Makes the player models hands bonemerged onto the view model"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "UseHands",
        "typing": "boolean"
      },
      {
        "comments": [
          "@Folder {string}: The folder from where the weapon was loaded. This should always be \"weapons/weapon_myweapon\", regardless whether your SWEP is stored as a file, or multiple files in a folder. It is set automatically on load"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "Folder",
        "typing": "string"
      },
      {
        "comments": [
          "@AccurateCrosshair {boolean}: (Clientside) Makes the default SWEP crosshair be positioned in 3D space where your aim actually is (like on Jeep), instead of simply sitting in the middle of the screen at all times"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "AccurateCrosshair",
        "typing": "boolean"
      },
      {
        "comments": [
          "@DisableDuplicator {boolean}: Disable the ability for players to duplicate this SWEP"
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "DisableDuplicator",
        "typing": "boolean"
      },
      {
        "comments": [
          "@ScriptedEntityType {string}: (Clientside) Sets the spawnmenu content icon type for the entity, used by spawnmenu in the Sandbox-derived gamemodes.\nSee @spawnmenu.AddContentType for more information."
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "ScriptedEntityType",
        "typing": "string"
      },
      {
        "comments": [
          "@m_bPlayPickupSound {boolean}: If set to false, the weapon will not play the weapon pick up sound when picked up."
        ],
        "context": "IWeapon",
        "type": "interface",
        "name": "m_bPlayPickupSound",
        "typing": "boolean"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/SunInfo",
      "@interface SunInfo",
      "@description Returned by @util.GetSunInfo."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "SunInfo",
    "typings": [],
    "types": [
      {
        "comments": [
          "@direction {Vector}: The suns direction relative to 0,0,0"
        ],
        "context": "SunInfo",
        "type": "interface",
        "name": "direction",
        "typing": "Vector"
      },
      {
        "comments": [
          "@obstruction {number}: Indicates how obstructed the sun is, 1 not visible, 0 fully visible"
        ],
        "context": "SunInfo",
        "type": "interface",
        "name": "obstruction",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/SoundData",
      "@interface SoundData",
      "@description Table used in @sound.Add and @sound.GetProperties."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "SoundData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@channel {CHAN}: The sound channel to play in. See @CHAN enum"
        ],
        "context": "SoundData",
        "type": "interface",
        "name": "channel",
        "typing": "CHAN"
      },
      {
        "comments": [
          "@name {string}: The name of the sound."
        ],
        "context": "SoundData",
        "type": "interface",
        "name": "name",
        "typing": "string"
      },
      {
        "comments": [
          "@pitchend {number}: The pitch end. Deprecated, use pitch."
        ],
        "context": "SoundData",
        "type": "interface",
        "name": "pitchend",
        "typing": "number"
      },
      {
        "comments": [
          "@pitchstart {number}: The initial pitch. Deprecated, use pitch."
        ],
        "context": "SoundData",
        "type": "interface",
        "name": "pitchstart",
        "typing": "number"
      },
      {
        "comments": [
          "@level {SNDLVL}: The soundlevel of the sound in dB. See @SNDLVL enum."
        ],
        "context": "SoundData",
        "type": "interface",
        "name": "level",
        "typing": "SNDLVL"
      },
      {
        "comments": [
          "@sound {string}: The sound file to be used in this sound effect. Can be a table of sound files. Relative to \"sound\" directory (must be in a subfolder, so sound/test.wav will not work)."
        ],
        "context": "SoundData",
        "type": "interface",
        "name": "sound",
        "typing": "string"
      },
      {
        "comments": [
          "@volume {number}: The volume of the sound as a decimal between 0 and 1. Can be a table of two numbers, a minimum and a maximum value."
        ],
        "context": "SoundData",
        "type": "interface",
        "name": "volume",
        "typing": "number"
      },
      {
        "comments": [
          "@pitch {number}: The pitch of the sound. Can be a table of two numbers, a minimum and a maximum value."
        ],
        "context": "SoundData",
        "type": "interface",
        "name": "pitch",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/ServerQueryData",
      "@interface ServerQueryData",
      "@description Used for @serverlist.Query."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "ServerQueryData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@GameDir {string}: The game directory to get the servers for"
        ],
        "context": "ServerQueryData",
        "type": "interface",
        "name": "GameDir",
        "typing": "string"
      },
      {
        "comments": [
          "@Type {string}: Type of servers to retrieve. Valid values are:\n* \"internet\"\n* \"favorite\"\n* \"history\"\n* \"lan\""
        ],
        "context": "ServerQueryData",
        "type": "interface",
        "name": "Type",
        "typing": "string"
      },
      {
        "comments": [
          "@AppID {number}: Steam application ID to get the servers for"
        ],
        "context": "ServerQueryData",
        "type": "interface",
        "name": "AppID",
        "typing": "number"
      },
      {
        "comments": [
          "@type StructuresServerQueryDataCallback",
          "@param {void} this - no description",
          "@param {number} ping - Latency to the server.",
          "@param {string} name - Name of the server",
          "@param {string} desc - \"Nice\" gamemode name",
          "@param {string} map - Current map",
          "@param {number} players - Total player number ( bot + human )",
          "@param {number} maxplayers - Maximum reported amount of players",
          "@param {number} botplayers - Amount of bots on the server",
          "@param {boolean} pass - Whether this server has password or not",
          "@param {number} lastplayed - Time when you last played on this server, as UNIX timestamp or 0",
          "@param {string} address - IP Address of the server",
          "@param {string} gamemode - Gamemode folder name",
          "@param {number} workshopid - Gamemode Steam Workshop ID"
        ],
        "type": "type",
        "name": "StructuresServerQueryDataCallback",
        "typing": "(this: void, ping: number, name: string, desc: string, map: string, players: number, maxplayers: number, botplayers: number, pass: boolean, lastplayed: number, address: string, gamemode: string, workshopid: number) => unknown"
      },
      {
        "comments": [
          "@Callback {function}: Called when a new server is found and queried. Arguments:\nReturn false to stop the query."
        ],
        "context": "ServerQueryData",
        "type": "interface",
        "name": "Callback",
        "typing": "StructuresServerQueryDataCallback"
      },
      {
        "comments": [
          "@Finished {function}: Called when the query is finished. No arguments"
        ],
        "context": "ServerQueryData",
        "type": "interface",
        "name": "Finished",
        "typing": "UnknownFunc"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/SequenceInfo",
      "@interface SequenceInfo",
      "@description Used by @EntityFuncs:GetSequenceInfo."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "SequenceInfo",
    "typings": [],
    "types": [
      {
        "comments": [
          "@label {string}: Name of the sequence."
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "label",
        "typing": "string"
      },
      {
        "comments": [
          "@activityname {string}: Name of the activity this sequence is attached to."
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "activityname",
        "typing": "string"
      },
      {
        "comments": [
          "@activity {ACT}: The activity ID associated with this sequence. See @ACT enum."
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "activity",
        "typing": "ACT"
      },
      {
        "comments": [
          "@actweight {number}: How likely this sequence is to be picked when playing an activity its attached to. -1 means this is the only sequence for that activity. (needs validation)"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "actweight",
        "typing": "number"
      },
      {
        "comments": [
          "@flags {number}: The looping and other flags of this sequence."
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "flags",
        "typing": "number"
      },
      {
        "comments": [
          "@numevents {number}: Number of animation events this sequence has."
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "numevents",
        "typing": "number"
      },
      {
        "comments": [
          "@numblends {number}: no description"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "numblends",
        "typing": "number"
      },
      {
        "comments": [
          "@bbmin {number}: Mins part of the bounding box for this sequence"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "bbmin",
        "typing": "number"
      },
      {
        "comments": [
          "@bbmax {number}: Maxs part of the bounding box for this sequence"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "bbmax",
        "typing": "number"
      },
      {
        "comments": [
          "@fadeintime {number}: ideal cross fade in time (0.2 default)"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "fadeintime",
        "typing": "number"
      },
      {
        "comments": [
          "@fadeouttime {number}: ideal cross fade out time (0.2 default)"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "fadeouttime",
        "typing": "number"
      },
      {
        "comments": [
          "@localentrynode {number}: transition node at entry"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "localentrynode",
        "typing": "number"
      },
      {
        "comments": [
          "@localexitnode {number}: transition node at exit"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "localexitnode",
        "typing": "number"
      },
      {
        "comments": [
          "@nodeflags {number}: Transition rules"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "nodeflags",
        "typing": "number"
      },
      {
        "comments": [
          "@lastframe {number}: Frame that should generate EndOFSequence"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "lastframe",
        "typing": "number"
      },
      {
        "comments": [
          "@nextseq {number}: If non 0, the next sequence for auto advancing sequences"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "nextseq",
        "typing": "number"
      },
      {
        "comments": [
          "@pose {number}: no description"
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "pose",
        "typing": "number"
      },
      {
        "comments": [
          "@cycleposeindex {number}: If non 0, index of pose parameter to be used as cycle index. This means that the sequence playback will be controlled by a pose parameter."
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "cycleposeindex",
        "typing": "number"
      },
      {
        "comments": [
          "@anims {table}: A 1-based array of all animationIDs associated with this sequence. For use with @EntityFuncs:GetAnimInfo."
        ],
        "context": "SequenceInfo",
        "type": "interface",
        "name": "anims",
        "typing": "table"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/RenderCaptureData",
      "@interface RenderCaptureData",
      "@description Used for @render.Capture."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "RenderCaptureData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@format {string}: Format of the capture. Valid formats are: jpeg, png"
        ],
        "context": "RenderCaptureData",
        "type": "interface",
        "name": "format",
        "typing": "string"
      },
      {
        "comments": [
          "@x {number}: X coordinate of the capture origin"
        ],
        "context": "RenderCaptureData",
        "type": "interface",
        "name": "x",
        "typing": "number"
      },
      {
        "comments": [
          "@y {number}: Y coordinate of the capture origin"
        ],
        "context": "RenderCaptureData",
        "type": "interface",
        "name": "y",
        "typing": "number"
      },
      {
        "comments": [
          "@w {number}: Width of the capture"
        ],
        "context": "RenderCaptureData",
        "type": "interface",
        "name": "w",
        "typing": "number"
      },
      {
        "comments": [
          "@h {number}: Height of the capture"
        ],
        "context": "RenderCaptureData",
        "type": "interface",
        "name": "h",
        "typing": "number"
      },
      {
        "comments": [
          "@quality {number}: The quality of the capture. Affects jpeg only."
        ],
        "context": "RenderCaptureData",
        "type": "interface",
        "name": "quality",
        "typing": "number"
      },
      {
        "comments": [
          "@alpha {boolean}: Set to false to capture an image with alpha channel set to fully opaque. Affects png only."
        ],
        "context": "RenderCaptureData",
        "type": "interface",
        "name": "alpha",
        "typing": "boolean"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/RenderCamData",
      "@interface RenderCamData",
      "@description Used for @cam.Start.\nUnless stated otherwise, the default values for all these keys would be inherited from the engine's current CViewSetup and do not have static representations."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "RenderCamData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@x {number}: The x position of the view port"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "x",
        "typing": "number"
      },
      {
        "comments": [
          "@y {number}: The y position of the view port"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "y",
        "typing": "number"
      },
      {
        "comments": [
          "@w {number}: The width of the view port"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "w",
        "typing": "number"
      },
      {
        "comments": [
          "@h {number}: The height of the view port"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "h",
        "typing": "number"
      },
      {
        "comments": [
          "@type {string}: The type of cam. Valid types are:\n* \"2D\" - No additional arguments are required\n* \"3D\" - Only origin and angles are needed, all other parameters are optional."
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "type",
        "typing": "string"
      },
      {
        "comments": [
          "@origin {Vector}: The position to render from"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "origin",
        "typing": "Vector"
      },
      {
        "comments": [
          "@angles {Angle}: The angles to render from"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "angles",
        "typing": "Angle"
      },
      {
        "comments": [
          "@fov {number}: The field of view"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "fov",
        "typing": "number"
      },
      {
        "comments": [
          "@aspect {number}: The aspect ratio of the view port (Note that this is NOT set to w/h by default)"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "aspect",
        "typing": "number"
      },
      {
        "comments": [
          "@zfar {number}: The distance to the far clipping plane"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "zfar",
        "typing": "number"
      },
      {
        "comments": [
          "@znear {number}: The distance to the near clipping plane"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "znear",
        "typing": "number"
      },
      {
        "comments": [
          "@subrect {boolean}: Set to true if this is to draw into a subrect of the larger screen."
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "subrect",
        "typing": "boolean"
      },
      {
        "comments": [
          "@bloomtone {boolean}: m_bDoBloomAndToneMapping"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "bloomtone",
        "typing": "boolean"
      },
      {
        "comments": [
          "@offcenter {table}: A table having these keys: ( all floats )\n* left\n* right\n* bottom\n* top"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "offcenter",
        "typing": "table"
      },
      {
        "comments": [
          "@ortho {table}: If set, makes the view/camera orthogonal. A table having these keys: ( all floats )\n* left\n* right\n* bottom\n* top"
        ],
        "context": "RenderCamData",
        "type": "interface",
        "name": "ortho",
        "typing": "table"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/PropertyAdd",
      "@interface PropertyAdd",
      "@description Structure used for @properties.Add."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "PropertyAdd",
    "typings": [],
    "types": [
      {
        "comments": [
          "@Type {string}: Can be set to \"toggle\" to make this property a toggle property."
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "Type",
        "typing": "string"
      },
      {
        "comments": [
          "@MenuLabel {string}: Label to show on opened menu"
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "MenuLabel",
        "typing": "string"
      },
      {
        "comments": [
          "@MenuIcon {string}: Icon to show on opened menu for this item. Optional for simple properties and unused for toggle properties."
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "MenuIcon",
        "typing": "string"
      },
      {
        "comments": [
          "@Order {number}: Where in the list should the property be positioned, relative to other properties.\nFor reference, here are the default properties and their Order values:\n{ * class=\"mw-collapsible mw-collapsed wikitable\"\n! Property\n! Order\n*-\n* Make Persistent\n* 400\n*-\n* Bone Manipulate\n* 500\n*-\n* Bodygroups\n* 600\n*-\n* Skin\n* 601\n*-\n* Keep Upright\n* 900\n*-\n* Ignite/Extinguish\n* 999\n*-\n* Remove\n* 1000\n*-\n* Gravity\n* 1001\n*-\n* Drive\n* 1100\n*-\n* Collision\n* 1500\n*-\n* Statue\n* 1501\n*-\n* NPC Biggify/Smallify\n* 1799, 1800\n*-\n* Motion Control (Kinect)\n* 2500\n*-\n* [Edit Properties](https://wiki.garrysmod.com/page/Editable%20Entities)\n* 90001\n* }"
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "Order",
        "typing": "number"
      },
      {
        "comments": [
          "@PrependSpacer {boolean}: Whether to add a spacer before this property. This should generally be true for the first property in a group of properties."
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "PrependSpacer",
        "typing": "boolean"
      },
      {
        "comments": [
          "@type StructuresPropertyAddFilter",
          "@param {table} this - the property table",
          "@param {Entity} ent - the entity the player clicked"
        ],
        "type": "type",
        "name": "StructuresPropertyAddFilter",
        "typing": "(this: table, ent: Entity) => unknown"
      },
      {
        "comments": [
          "@Filter {function}: Used **clientside** to decide whether this property should be shown for an entity. Gets these arguments:\nReturn true if the property should be shown for this entity. It's good practice to call @SandboxHooks:CanProperty in this hook via @gamemode.Call or @hook.Run."
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "Filter",
        "typing": "StructuresPropertyAddFilter"
      },
      {
        "comments": [
          "@type StructuresPropertyAddChecked",
          "@param {table} this - the property table",
          "@param {Entity} ent - the entity the player clicked",
          "@param {table} tr - the player's eye trace"
        ],
        "type": "type",
        "name": "StructuresPropertyAddChecked",
        "typing": "(this: table, ent: Entity, tr: table) => unknown"
      },
      {
        "comments": [
          "@Checked {function}: Required for toggle properties (clientside). Must return a boolean value to either check or uncheck the toggle property."
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "Checked",
        "typing": "StructuresPropertyAddChecked"
      },
      {
        "comments": [
          "@type StructuresPropertyAddAction",
          "@param {table} this - the property table",
          "@param {Entity} ent - the entity the player clicked",
          "@param {table} tr - the player's eye trace"
        ],
        "type": "type",
        "name": "StructuresPropertyAddAction",
        "typing": "(this: table, ent: Entity, tr: table) => unknown"
      },
      {
        "comments": [
          "@Action {function}: Called **clientside** when the property is clicked with these arguments:\nWhen appropriate, within this function you can call self:MsgStart(), write data with the @net library 'Write' functions, and finish with self:MsgEnd(). This will activate the 'Receive' function on the server. In most cases, you will want to send the entity to the server, as it's not done by default."
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "Action",
        "typing": "StructuresPropertyAddAction"
      },
      {
        "comments": [
          "@type StructuresPropertyAddReceive",
          "@param {table} this - the property table",
          "@param {number} len - the net message length, although this includes the property identifier used internally (the name of the property)",
          "@param {table} ply - the player who clicked the property"
        ],
        "type": "type",
        "name": "StructuresPropertyAddReceive",
        "typing": "(this: table, len: number, ply: table) => unknown"
      },
      {
        "comments": [
          "@Receive {function}: Called **serverside** if the client sends a message in the 'Action' function (see above).\nYou can read data received from the client with the @net library 'Read' functions. It's good practice to check @SandboxHooks:CanProperty here via @gamemode.Call or @hook.Run."
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "Receive",
        "typing": "StructuresPropertyAddReceive"
      },
      {
        "comments": [
          "@type StructuresPropertyAddMenuOpen",
          "@param {table} this - the property table",
          "@param {Panel} option - the menu option",
          "@param {Entity} ent - the entity the player right-clicked",
          "@param {table} tr - the player's eye trace"
        ],
        "type": "type",
        "name": "StructuresPropertyAddMenuOpen",
        "typing": "(this: table, option: Panel, ent: Entity, tr: table) => unknown"
      },
      {
        "comments": [
          "@MenuOpen {function}: Called **clientside** when the property option has been created in the right-click menu. This is not called for toggle properties!"
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "MenuOpen",
        "typing": "StructuresPropertyAddMenuOpen"
      },
      {
        "comments": [
          "@type StructuresPropertyAddOnCreate",
          "@param {table} this - the property table",
          "@param {Panel} menu - the property menu",
          "@param {Panel} option - the menu option"
        ],
        "type": "type",
        "name": "StructuresPropertyAddOnCreate",
        "typing": "(this: table, menu: Panel, option: Panel) => unknown"
      },
      {
        "comments": [
          "@OnCreate {function}: Same as MenuOpen, but also called for toggle properties and has different arguments. This is called immediately after MenuOpen, but nothing happens in between so you should only ever use one or the other."
        ],
        "context": "PropertyAdd",
        "type": "interface",
        "name": "OnCreate",
        "typing": "StructuresPropertyAddOnCreate"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/PolygonVertex",
      "@note You must pass a table of tables with this structure to the function. **You need to pass at least 3 points.**",
      "@note Your points must be defined in a **clockwise order.** Otherwise, your shape will not render.",
      "@interface PolygonVertex",
      "@description A structure containing vertex information for use with @surface.DrawPoly.\nUV coordinates describe which part of a given texture should be drawn at a vertex - your graphics card's interpolator will fill in space between vertices. UV coords range from 0-1, with 0 being top/left and 1 being bottom/right. If you're using a texture these are mandatory."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "PolygonVertex",
    "typings": [],
    "types": [
      {
        "comments": [
          "@x {number}: The x coordinate of the vertex."
        ],
        "context": "PolygonVertex",
        "type": "interface",
        "name": "x",
        "typing": "number"
      },
      {
        "comments": [
          "@y {number}: The y coordinate of the vertex."
        ],
        "context": "PolygonVertex",
        "type": "interface",
        "name": "y",
        "typing": "number"
      },
      {
        "comments": [
          "@u {number}: The u texture coordinate of the vertex. *Can be left blank.*"
        ],
        "context": "PolygonVertex",
        "type": "interface",
        "name": "u",
        "typing": "number"
      },
      {
        "comments": [
          "@v {number}: The v texture coordinate of the vertex. *Can be left blank.*"
        ],
        "context": "PolygonVertex",
        "type": "interface",
        "name": "v",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/PLAYER",
      "@interface PLAYER",
      "@description This page describes all **default** fields for a [player class](https://wiki.garrysmod.com/page/Player_Classes)."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "PLAYER",
    "typings": [],
    "types": [
      {
        "comments": [
          "@DisplayName {string}: The 'nice' name of the player class for display in User Interface and such."
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "DisplayName",
        "typing": "string"
      },
      {
        "comments": [
          "@WalkSpeed {number}: How fast to move when not running"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "WalkSpeed",
        "typing": "number"
      },
      {
        "comments": [
          "@RunSpeed {number}: How fast to move when running/sprinting"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "RunSpeed",
        "typing": "number"
      },
      {
        "comments": [
          "@CrouchedWalkSpeed {number}: Multiply walk speed by this when crouching"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "CrouchedWalkSpeed",
        "typing": "number"
      },
      {
        "comments": [
          "@DuckSpeed {number}: How fast to go from not ducking, to ducking"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "DuckSpeed",
        "typing": "number"
      },
      {
        "comments": [
          "@UnDuckSpeed {number}: How fast to go from ducking, to not ducking"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "UnDuckSpeed",
        "typing": "number"
      },
      {
        "comments": [
          "@JumpPower {number}: How powerful a jump should be"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "JumpPower",
        "typing": "number"
      },
      {
        "comments": [
          "@CanUseFlashlight {boolean}: Can the player use the flashlight"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "CanUseFlashlight",
        "typing": "boolean"
      },
      {
        "comments": [
          "@MaxHealth {number}: Max health we can have"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "MaxHealth",
        "typing": "number"
      },
      {
        "comments": [
          "@StartHealth {number}: How much health we start with"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "StartHealth",
        "typing": "number"
      },
      {
        "comments": [
          "@StartArmor {number}: How much armour we start with"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "StartArmor",
        "typing": "number"
      },
      {
        "comments": [
          "@DropWeaponOnDie {boolean}: Do we drop our weapon when we die"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "DropWeaponOnDie",
        "typing": "boolean"
      },
      {
        "comments": [
          "@TeammateNoCollide {boolean}: Do we collide with teammates or run straight through them"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "TeammateNoCollide",
        "typing": "boolean"
      },
      {
        "comments": [
          "@AvoidPlayers {boolean}: Automatically swerves around other players"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "AvoidPlayers",
        "typing": "boolean"
      },
      {
        "comments": [
          "@UseVMHands {boolean}: Uses viewmodel hands"
        ],
        "context": "PLAYER",
        "type": "interface",
        "name": "UseVMHands",
        "typing": "boolean"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/PhysProperties",
      "@interface PhysProperties",
      "@description Structure used by @construct.SetPhysProp."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "PhysProperties",
    "typings": [],
    "types": [
      {
        "comments": [
          "@GravityToggle {boolean}: Enables or disables gravity for the entity"
        ],
        "context": "PhysProperties",
        "type": "interface",
        "name": "GravityToggle",
        "typing": "boolean"
      },
      {
        "comments": [
          "@Material {string}: Sets the physics material for the entity"
        ],
        "context": "PhysProperties",
        "type": "interface",
        "name": "Material",
        "typing": "string"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/PhysicsObjectSave",
      "@interface PhysicsObjectSave",
      "@description Structure used in storing/restoring physics object attributes.\n@duplicator.GenericDuplicatorFunction and @duplicator.DoGenericPhysics use a table of PhysicsObjectSaves with the struct's index in the table being the physics object ID.\nPos and Angle are set by the following:\n```\nPos, Angle = WorldToLocal(phys:GetPos(), phys:GetAngle(), Vector( 0, 0, 0 ), Angle( 0, 0, 0 ))\n```"
    ],
    "type": "struct",
    "context": "Structures",
    "name": "PhysicsObjectSave",
    "typings": [],
    "types": [
      {
        "comments": [
          "@Pos {Vector}: The entity's world position made local with @WorldToLocal function"
        ],
        "context": "PhysicsObjectSave",
        "type": "interface",
        "name": "Pos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@Angle {Angle}: The entity's world angles made local with @WorldToLocal function"
        ],
        "context": "PhysicsObjectSave",
        "type": "interface",
        "name": "Angle",
        "typing": "Angle"
      },
      {
        "comments": [
          "@Frozen {boolean}: Whether the entity is moveable. Equal to (*not* @PhysObj:IsMoveable)"
        ],
        "context": "PhysicsObjectSave",
        "type": "interface",
        "name": "Frozen",
        "typing": "boolean"
      },
      {
        "comments": [
          "@NoGrav {boolean}: Whether the entity's gravity is affected by gravity or not. @PhysObj:IsGravityEnabled"
        ],
        "context": "PhysicsObjectSave",
        "type": "interface",
        "name": "NoGrav",
        "typing": "boolean"
      },
      {
        "comments": [
          "@Sleep {boolean}: Whether the entity is dormant or not. @PhysObj:IsAsleep"
        ],
        "context": "PhysicsObjectSave",
        "type": "interface",
        "name": "Sleep",
        "typing": "boolean"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/PhysEnvPerformanceSettings",
      "@interface PhysEnvPerformanceSettings",
      "@description Table used by @physenv.SetPerformanceSettings."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "PhysEnvPerformanceSettings",
    "typings": [],
    "types": [
      {
        "comments": [
          "@LookAheadTimeObjectsVsObject {number}: Maximum amount of seconds to precalculate collisions with objects."
        ],
        "context": "PhysEnvPerformanceSettings",
        "type": "interface",
        "name": "LookAheadTimeObjectsVsObject",
        "typing": "number"
      },
      {
        "comments": [
          "@LookAheadTimeObjectsVsWorld {number}: Maximum amount of seconds to precalculate collisions with world."
        ],
        "context": "PhysEnvPerformanceSettings",
        "type": "interface",
        "name": "LookAheadTimeObjectsVsWorld",
        "typing": "number"
      },
      {
        "comments": [
          "@MaxAngularVelocity {number}: Maximum rotation velocity."
        ],
        "context": "PhysEnvPerformanceSettings",
        "type": "interface",
        "name": "MaxAngularVelocity",
        "typing": "number"
      },
      {
        "comments": [
          "@MaxCollisionChecksPerTimestep {number}: Maximum collision checks per tick."
        ],
        "context": "PhysEnvPerformanceSettings",
        "type": "interface",
        "name": "MaxCollisionChecksPerTimestep",
        "typing": "number"
      },
      {
        "comments": [
          "@MaxCollisionsPerObjectPerTimestep {number}: Maximum collision per object per tick."
        ],
        "context": "PhysEnvPerformanceSettings",
        "type": "interface",
        "name": "MaxCollisionsPerObjectPerTimestep",
        "typing": "number"
      },
      {
        "comments": [
          "@MaxFrictionMass {number}: Maximum mass of an object to be affected by friction."
        ],
        "context": "PhysEnvPerformanceSettings",
        "type": "interface",
        "name": "MaxFrictionMass",
        "typing": "number"
      },
      {
        "comments": [
          "@MaxVelocity {number}: Maximum speed of an object."
        ],
        "context": "PhysEnvPerformanceSettings",
        "type": "interface",
        "name": "MaxVelocity",
        "typing": "number"
      },
      {
        "comments": [
          "@MinFrictionMass {number}: Minimum mass of an object to be affected by friction."
        ],
        "context": "PhysEnvPerformanceSettings",
        "type": "interface",
        "name": "MinFrictionMass",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/PathSegment",
      "@interface PathSegment",
      "@description Structure represents a path segment, returned by @PathFollower:GetCurrentGoal, @PathFollower:FirstSegment and @PathFollower:LastSegment."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "PathSegment",
    "typings": [],
    "types": [
      {
        "comments": [
          "@area {CNavArea}: The navmesh area this segment occupies."
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "area",
        "typing": "CNavArea"
      },
      {
        "comments": [
          "@curvature {number}: How much of a curve should the bot execute when navigating this segment. 0 = none, 1 = 180°"
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "curvature",
        "typing": "number"
      },
      {
        "comments": [
          "@distanceFromStart {number}: Distance of this segment from the start of the path."
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "distanceFromStart",
        "typing": "number"
      },
      {
        "comments": [
          "@forward {Vector}: The direction of travel to reach the end of this segment from the start, represented as a normalised vector."
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "forward",
        "typing": "Vector"
      },
      {
        "comments": [
          "@how {number}: The direction of travel to reach the end of this segment from the start, represented as a cardinal direction integer 0 to 3, or 9 for vertical movement."
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "how",
        "typing": "number"
      },
      {
        "comments": [
          "@ladder {CNavLadder}: The navmesh ladder this segment occupies, if any."
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "ladder",
        "typing": "CNavLadder"
      },
      {
        "comments": [
          "@length {number}: Length of this segment."
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "length",
        "typing": "number"
      },
      {
        "comments": [
          "@m_portalCenter {Vector}: no description"
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "m_portalCenter",
        "typing": "Vector"
      },
      {
        "comments": [
          "@m_portalHalfWidth {number}: no description"
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "m_portalHalfWidth",
        "typing": "number"
      },
      {
        "comments": [
          "@pos {Vector}: The position of the end of this segment."
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "pos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@type {number}: The movement type of this segment, indicating how bots are expected to move along this segment.\n* 0 is ground movement\n* 1 is falling down\n* 2 is climbing up or jumping\n* 3 is jumping over a gap\n* 4 is climbing a ladder up (unused)\n* 5 is climbing a ladder down (unused)"
        ],
        "context": "PathSegment",
        "type": "interface",
        "name": "type",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/OperatingParams",
      "@interface OperatingParams",
      "@description The structure used by @Vehicle:GetOperatingParams."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "OperatingParams",
    "typings": [],
    "types": [
      {
        "comments": [
          "@RPM {number}: The current RPM of the vehicle"
        ],
        "context": "OperatingParams",
        "type": "interface",
        "name": "RPM",
        "typing": "number"
      },
      {
        "comments": [
          "@gear {number}: The current gear of the vehicle, starting from 0"
        ],
        "context": "OperatingParams",
        "type": "interface",
        "name": "gear",
        "typing": "number"
      },
      {
        "comments": [
          "@isTorqueBoosting {boolean}: Is the vehicle boosting?"
        ],
        "context": "OperatingParams",
        "type": "interface",
        "name": "isTorqueBoosting",
        "typing": "boolean"
      },
      {
        "comments": [
          "@speed {number}: The current speed, in inches per second"
        ],
        "context": "OperatingParams",
        "type": "interface",
        "name": "speed",
        "typing": "number"
      },
      {
        "comments": [
          "@steeringAngle {number}: Steering angle"
        ],
        "context": "OperatingParams",
        "type": "interface",
        "name": "steeringAngle",
        "typing": "number"
      },
      {
        "comments": [
          "@wheelsInContact {number}: Wheels on ground"
        ],
        "context": "OperatingParams",
        "type": "interface",
        "name": "wheelsInContact",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/MeshVertex",
      "@interface MeshVertex",
      "@description Table used by various functions, such as @IMesh:BuildFromTriangles."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "MeshVertex",
    "typings": [],
    "types": [
      {
        "comments": [
          "@color {Color}: The vertex color. Uses the @IColor structure."
        ],
        "context": "MeshVertex",
        "type": "interface",
        "name": "color",
        "typing": "Color"
      },
      {
        "comments": [
          "@normal {Vector}: The triangles normal required to calculate lighting(optional)."
        ],
        "context": "MeshVertex",
        "type": "interface",
        "name": "normal",
        "typing": "Vector"
      },
      {
        "comments": [
          "@tangent {Vector}: The triangles tangent. Not used by the VertexLitGeneric shader."
        ],
        "context": "MeshVertex",
        "type": "interface",
        "name": "tangent",
        "typing": "Vector"
      },
      {
        "comments": [
          "@binormal {Vector}: The triangles binormal. Not used by the VertexLitGeneric shader."
        ],
        "context": "MeshVertex",
        "type": "interface",
        "name": "binormal",
        "typing": "Vector"
      },
      {
        "comments": [
          "@pos {Vector}: The vertex position."
        ],
        "context": "MeshVertex",
        "type": "interface",
        "name": "pos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@u {number}: The u texture scale."
        ],
        "context": "MeshVertex",
        "type": "interface",
        "name": "u",
        "typing": "number"
      },
      {
        "comments": [
          "@v {number}: The v texture scale."
        ],
        "context": "MeshVertex",
        "type": "interface",
        "name": "v",
        "typing": "number"
      },
      {
        "comments": [
          "@userdata {table}: A table of four numbers. This is used by most shaders in Source to hold tangent information of the vertex ( tangentX, tangentY, tangentZ, tangentHandedness )."
        ],
        "context": "MeshVertex",
        "type": "interface",
        "name": "userdata",
        "typing": "table"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/MatProxyData",
      "@interface MatProxyData",
      "@description Table structure used by @matproxy.Add."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "MatProxyData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@name {string}: The name of the material proxy"
        ],
        "context": "MatProxyData",
        "type": "interface",
        "name": "name",
        "typing": "string"
      },
      {
        "comments": [
          "@type StructuresMatProxyDataInit",
          "@param {table} this - no description",
          "@param {string} materialName - no description",
          "@param {table} values - no description"
        ],
        "type": "type",
        "name": "StructuresMatProxyDataInit",
        "typing": "(this: table, materialName: string, values: table) => unknown"
      },
      {
        "comments": [
          "@init {function}: The function used to get variables from the \".vmt\". Called once per each \".vmt\". Arguments are:"
        ],
        "context": "MatProxyData",
        "type": "interface",
        "name": "init",
        "typing": "StructuresMatProxyDataInit"
      },
      {
        "comments": [
          "@type StructuresMatProxyDataBind",
          "@param {table} this - no description",
          "@param {string} materialName - no description",
          "@param {Entity} ent - no description"
        ],
        "type": "type",
        "name": "StructuresMatProxyDataBind",
        "typing": "(this: table, materialName: string, ent: Entity) => unknown"
      },
      {
        "comments": [
          "@bind {function}: The function used to apply the proxy. This is called every frame while any materials with this proxy are used in world. Arguments are:"
        ],
        "context": "MatProxyData",
        "type": "interface",
        "name": "bind",
        "typing": "StructuresMatProxyDataBind"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/LocalLight",
      "@interface LocalLight",
      "@description Table structure used for @render.SetLocalModelLights."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "LocalLight",
    "typings": [],
    "types": [
      {
        "comments": [
          "@type {MATERIAL_LIGHT}: The type of the light source, see @MATERIAL_LIGHT enum."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "type",
        "typing": "MATERIAL_LIGHT"
      },
      {
        "comments": [
          "@color {Vector}: The color of the light source (x is red, y is green, z is blue). Values are not restricted to a specific range, higher values will result in a brighter light."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "color",
        "typing": "Vector"
      },
      {
        "comments": [
          "@pos {Vector}: The origin of the light in world coordinates."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "pos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@dir {Vector}: The direction of the light. Only required for directional and spot lights."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "dir",
        "typing": "Vector"
      },
      {
        "comments": [
          "@range {number}: The maximum range of the light source. Does not actually control light attenuation. Usually left at 0 for infinite range."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "range",
        "typing": "number"
      },
      {
        "comments": [
          "@angularFalloff {number}: Angular falloff exponent for spot lights. Higher values result in a sharper transition between the inner cone and the outer cone."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "angularFalloff",
        "typing": "number"
      },
      {
        "comments": [
          "@innerAngle {number}: The inner cone angle for spot lights, in degrees. No angular falloff will occur inside that cone."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "innerAngle",
        "typing": "number"
      },
      {
        "comments": [
          "@outerAngle {number}: The outer cone angle for spot lights, in degrees."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "outerAngle",
        "typing": "number"
      },
      {
        "comments": [
          "@fiftyPercentDistance {number}: The distance at which the light will fade to 50% of its brightness."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "fiftyPercentDistance",
        "typing": "number"
      },
      {
        "comments": [
          "@zeroPercentDistance {number}: The distance at which the light will completely fade out."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "zeroPercentDistance",
        "typing": "number"
      },
      {
        "comments": [
          "@quadraticFalloff {number}: The quadratic term of the light falloff. This will only be used if fiftyPercentDistance and zeroPercentDistance are not supplied, and allows finer control over light attenuation."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "quadraticFalloff",
        "typing": "number"
      },
      {
        "comments": [
          "@linearFalloff {number}: The linear term of the light falloff. This will only be used if fiftyPercentDistance and zeroPercentDistance are not supplied, and allows finer control over light attenuation."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "linearFalloff",
        "typing": "number"
      },
      {
        "comments": [
          "@constantFalloff {number}: The constant term of the light falloff. This will only be used if fiftyPercentDistance and zeroPercentDistance are not supplied, and allows finer control over light attenuation."
        ],
        "context": "LocalLight",
        "type": "interface",
        "name": "constantFalloff",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/HullTrace",
      "@interface HullTrace",
      "@description Table used by @util.TraceHull."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "HullTrace",
    "typings": [],
    "types": [
      {
        "comments": [
          "@start {Vector}: The start position of the trace"
        ],
        "context": "HullTrace",
        "type": "interface",
        "name": "start",
        "typing": "Vector"
      },
      {
        "comments": [
          "@endpos {Vector}: The end position of the trace"
        ],
        "context": "HullTrace",
        "type": "interface",
        "name": "endpos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@maxs {Vector}: The 3D vector local to the start/endpos with the highest values. This will represent the corner with the upper bounds of the box."
        ],
        "context": "HullTrace",
        "type": "interface",
        "name": "maxs",
        "typing": "Vector"
      },
      {
        "comments": [
          "@mins {Vector}: The 3D vector local to the start/endpos with the lowest (often negative) values. This will represent the corner with the lower bounds of the box."
        ],
        "context": "HullTrace",
        "type": "interface",
        "name": "mins",
        "typing": "Vector"
      },
      {
        "comments": [
          "@filter {Entity}: Things the trace should not hit. Can also be a table of entities or a function with one argument:\nUsing a function here is super slow. Try to avoid it."
        ],
        "context": "HullTrace",
        "type": "interface",
        "name": "filter",
        "typing": "Entity"
      },
      {
        "comments": [
          "@mask {MASK}: The trace mask @MASK enum. This determines what the trace should hit and what it shouldn't hit."
        ],
        "context": "HullTrace",
        "type": "interface",
        "name": "mask",
        "typing": "MASK"
      },
      {
        "comments": [
          "@collisiongroup {COLLISION_GROUP}: The collision group @COLLISION_GROUP enum. This determines what the trace should hit in regards to the entity's collision group."
        ],
        "context": "HullTrace",
        "type": "interface",
        "name": "collisiongroup",
        "typing": "COLLISION_GROUP"
      },
      {
        "comments": [
          "@ignoreworld {boolean}: Should the trace ignore world or not."
        ],
        "context": "HullTrace",
        "type": "interface",
        "name": "ignoreworld",
        "typing": "boolean"
      },
      {
        "comments": [
          "@output {table}: If set, the trace result will be written to the supplied table instead of returning a new table"
        ],
        "context": "HullTrace",
        "type": "interface",
        "name": "output",
        "typing": "table"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/HTTPRequest",
      "@interface HTTPRequest",
      "@description Table used by @HTTP function function."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "HTTPRequest",
    "typings": [],
    "types": [
      {
        "comments": [
          "@type StructuresHTTPRequestFailed",
          "@param {void} this - no description",
          "@param {string} reason - no description"
        ],
        "type": "type",
        "name": "StructuresHTTPRequestFailed",
        "typing": "(this: void, reason: string) => unknown"
      },
      {
        "comments": [
          "@failed {function}: Function to be called on failure. Arguments are"
        ],
        "context": "HTTPRequest",
        "type": "interface",
        "name": "failed",
        "typing": "StructuresHTTPRequestFailed"
      },
      {
        "comments": [
          "@type StructuresHTTPRequestSuccess",
          "@param {void} this - no description",
          "@param {number} code - no description",
          "@param {string} body - no description",
          "@param {table} headers - no description"
        ],
        "type": "type",
        "name": "StructuresHTTPRequestSuccess",
        "typing": "(this: void, code: number, body: string, headers: table) => unknown"
      },
      {
        "comments": [
          "@success {function}: Function to be called on success. Arguments are"
        ],
        "context": "HTTPRequest",
        "type": "interface",
        "name": "success",
        "typing": "StructuresHTTPRequestSuccess"
      },
      {
        "comments": [
          "@method {string}: Request method, case insensitive. Possible values are:\n* GET\n* POST\n* HEAD\n* PUT\n* DELETE\n* PATCH\n* OPTIONS"
        ],
        "context": "HTTPRequest",
        "type": "interface",
        "name": "method",
        "typing": "string"
      },
      {
        "comments": [
          "@url {string}: The target url"
        ],
        "context": "HTTPRequest",
        "type": "interface",
        "name": "url",
        "typing": "string"
      },
      {
        "comments": [
          "@parameters {table}: KeyValue table for parameters. This is only applicable to the following request methods:\n* GET\n* POST\n* HEAD"
        ],
        "context": "HTTPRequest",
        "type": "interface",
        "name": "parameters",
        "typing": "table"
      },
      {
        "comments": [
          "@headers {table}: KeyValue table for headers"
        ],
        "context": "HTTPRequest",
        "type": "interface",
        "name": "headers",
        "typing": "table"
      },
      {
        "comments": [
          "@body {string}: Body string for POST data. If set, will override parameters"
        ],
        "context": "HTTPRequest",
        "type": "interface",
        "name": "body",
        "typing": "string"
      },
      {
        "comments": [
          "@type {string}: Content type for body."
        ],
        "context": "HTTPRequest",
        "type": "interface",
        "name": "type",
        "typing": "string"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/GM",
      "@note It is recommended to use @DEFINE_BASECLASS function when referencing the gamemode's BaseClass to prevent unintended behavior",
      "@note @DeriveGamemode function modifies the main gamemode's BaseClass, which is shared with parent gamemodes. Because of this, in parent gamemodes the BaseClass can be incorrect, so for instance you need to use *self.BaseClass.BaseClass* in the 1st parent instead",
      "@interface IGamemode",
      "@description Information about a gamemode, used in [Gamemode Creation](https://wiki.garrysmod.com/page/Gamemode%20Creation). For list of hooks, see [GM Hooks](https://wiki.garrysmod.com/page/Category:GM_Hooks).\nWhile some of the fields may be serverside or clientside only, it is recommended to provide them on both so addons could use their values."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "IGamemode",
    "typings": [],
    "types": [
      {
        "comments": [
          "@Name {string}: The fancy name of your gamemode."
        ],
        "context": "IGamemode",
        "type": "interface",
        "name": "Name",
        "typing": "string"
      },
      {
        "comments": [
          "@Author {string}: The name/contact info of the gamemode author."
        ],
        "context": "IGamemode",
        "type": "interface",
        "name": "Author",
        "typing": "string"
      },
      {
        "comments": [
          "@Email {string}: The contact email associated with the gamemode."
        ],
        "context": "IGamemode",
        "type": "interface",
        "name": "Email",
        "typing": "string"
      },
      {
        "comments": [
          "@Website {string}: The website associated with the gamemode."
        ],
        "context": "IGamemode",
        "type": "interface",
        "name": "Website",
        "typing": "string"
      },
      {
        "comments": [
          "@FolderName {string}: The name of the gamemode folder, automatically set."
        ],
        "context": "IGamemode",
        "type": "interface",
        "name": "FolderName",
        "typing": "string"
      },
      {
        "comments": [
          "@Folder {string}: The name of the gamemode folder prepended with \"gamemodes/\" (such as \"gamemodes/sandbox\"), automatically set."
        ],
        "context": "IGamemode",
        "type": "interface",
        "name": "Folder",
        "typing": "string"
      },
      {
        "comments": [
          "@TeamBased {boolean}: Set this to true if your gamemode is team-based. Used to enable/disable the base gamemode team system."
        ],
        "context": "IGamemode",
        "type": "interface",
        "name": "TeamBased",
        "typing": "boolean"
      },
      {
        "comments": [
          "@IsSandboxDerived {boolean}: True if the gamemode is derived from sandbox."
        ],
        "context": "IGamemode",
        "type": "interface",
        "name": "IsSandboxDerived",
        "typing": "boolean"
      },
      {
        "comments": [
          "@ThisClass {string}: The name of the gamemode folder prepended with \"gamemode_\" (such as \"gamemode_sandbox\"), automatically set."
        ],
        "context": "IGamemode",
        "type": "interface",
        "name": "ThisClass",
        "typing": "string"
      },
      {
        "comments": [
          "@BaseClass {table}: The table of the base gamemode to derive from, set automatically by @DeriveGamemode function."
        ],
        "context": "IGamemode",
        "type": "interface",
        "name": "BaseClass",
        "typing": "table"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/FontData",
      "@interface FontData",
      "@description Used for @surface.CreateFont."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "FontData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@font {string}: The font source. This must be the actual name of the font, not a file name.\nFont files are stored in resource/fonts/. This cannot be an existing game font, i.e. \"ChatText\", \"Trebuchet18\", etc. ([Default Fonts](https://wiki.garrysmod.com/page/Default%20Fonts))\nThe length is limited to 31 characters maximum."
        ],
        "context": "FontData",
        "type": "interface",
        "name": "font",
        "typing": "string"
      },
      {
        "comments": [
          "@extended {boolean}: Allow the font to display glyphs that are outside of the Latin-1 range. Unicode code points above 0xFFFF are not supported."
        ],
        "context": "FontData",
        "type": "interface",
        "name": "extended",
        "typing": "boolean"
      },
      {
        "comments": [
          "@size {number}: The font height in pixels\n*Range:* 4 - 255"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "size",
        "typing": "number"
      },
      {
        "comments": [
          "@weight {number}: The font boldness"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "weight",
        "typing": "number"
      },
      {
        "comments": [
          "@blursize {number}: The strength of the font blurring\n*Range:* 0 - 80"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "blursize",
        "typing": "number"
      },
      {
        "comments": [
          "@scanlines {number}: The \"scanline\" interval\nMust be > 1 to work. This setting is per blursize per font - so if you create a font using \"Arial\" without scanlines, you cannot create an Arial font using scanlines with the same blursize"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "scanlines",
        "typing": "number"
      },
      {
        "comments": [
          "@antialias {boolean}: Smooth the font"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "antialias",
        "typing": "boolean"
      },
      {
        "comments": [
          "@underline {boolean}: Add an underline to the font"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "underline",
        "typing": "boolean"
      },
      {
        "comments": [
          "@italic {boolean}: Make the font italic"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "italic",
        "typing": "boolean"
      },
      {
        "comments": [
          "@strikeout {boolean}: Add a strike through"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "strikeout",
        "typing": "boolean"
      },
      {
        "comments": [
          "@symbol {boolean}: Enables the use of symbolic fonts such as Webdings"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "symbol",
        "typing": "boolean"
      },
      {
        "comments": [
          "@rotary {boolean}: Seems to add a line in the middle of each letter"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "rotary",
        "typing": "boolean"
      },
      {
        "comments": [
          "@shadow {boolean}: Add shadow casting to the font"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "shadow",
        "typing": "boolean"
      },
      {
        "comments": [
          "@additive {boolean}: Additive rendering"
        ],
        "context": "FontData",
        "type": "interface",
        "name": "additive",
        "typing": "boolean"
      },
      {
        "comments": [
          "@outline {boolean}: Add a black outline to the font.\nThis does not work well with antialias, and only allows black 1-pixel outlines. It may be preferable to not use this parameter, and instead use @draw.SimpleTextOutlined when drawing text that you want outlined."
        ],
        "context": "FontData",
        "type": "interface",
        "name": "outline",
        "typing": "boolean"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/EntityCopyData",
      "@note 1=In addition to all fields listed here, any field saved on the entity will be saved as-is to this table. For example, if you set ent.FavoriteFood = \"Steak\" before duplicating it, this structure will also contain the field FavoriteFood with the value \"Steak\".",
      "@interface EntityCopyData",
      "@description Data structure used by the @duplicator library to store and load entity data.\nIt is created by @duplicator.CopyEntTable and can be loaded by @duplicator.CreateEntityFromTable.\nIt also shows up in several other contexts:\n* @duplicator.RegisterEntityClass\n* @EntityHooks:OnEntityCopyTableFinish\n* @EntityHooks:OnDuplicated"
    ],
    "type": "struct",
    "context": "Structures",
    "name": "EntityCopyData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@Name {string}: The entity's name, see @EntityFuncs:GetName."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "Name",
        "typing": "string"
      },
      {
        "comments": [
          "@cls {string}: The entity's class name, see @EntityFuncs:GetClass."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "cls",
        "typing": "string"
      },
      {
        "comments": [
          "@Pos {Vector}: The entity's position, relative to the duplication origin point."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "Pos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@Angle {Angle}: The entity's angle, relative to the duplication angle."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "Angle",
        "typing": "Angle"
      },
      {
        "comments": [
          "@DT {table}: The entity's Network Vars, see @EntityHooks:SetupDataTables and [Networking Entities](https://wiki.garrysmod.com/page/Networking%20Entities)."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "DT",
        "typing": "table"
      },
      {
        "comments": [
          "@Model {string}: The entity's model, see @EntityFuncs:GetModel."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "Model",
        "typing": "string"
      },
      {
        "comments": [
          "@ModelScale {number}: The entity's model scale, see @EntityFuncs:GetModelScale. This will only be present if the model scale isn't 1."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "ModelScale",
        "typing": "number"
      },
      {
        "comments": [
          "@Skin {number}: The entity's active skin, see @EntityFuncs:GetSkin."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "Skin",
        "typing": "number"
      },
      {
        "comments": [
          "@ColGroup {COLLISION_GROUP}: The entity's collision group, see @EntityFuncs:GetCollisionGroup. Uses the @COLLISION_GROUP enum."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "ColGroup",
        "typing": "COLLISION_GROUP"
      },
      {
        "comments": [
          "@Mins {Vector}: The entity's collision bound minimums, see @EntityFuncs:GetCollisionBounds."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "Mins",
        "typing": "Vector"
      },
      {
        "comments": [
          "@Maxs {Vector}: The entity's collision bound maximums, see @EntityFuncs:GetCollisionBounds."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "Maxs",
        "typing": "Vector"
      },
      {
        "comments": [
          "@PhysicsObjects {PhysicsObjectSave}: Data about the entity's @PhysObj types, see @EntityFuncs:GetPhysicsObjectNum. The key is the physics object index (starts from 0), and the value is a @PhysicsObjectSave structure. Unlike other tables in this structure, if there are no physics objects for this entity this will be an empty table."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "PhysicsObjects",
        "typing": "PhysicsObjectSave"
      },
      {
        "comments": [
          "@FlexScale {number}: The entity's Flex Scale, see @EntityFuncs:GetFlexScale."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "FlexScale",
        "typing": "number"
      },
      {
        "comments": [
          "@Flex {table}: Each flex bone's flex weight, see @EntityFuncs:GetFlexWeight. The key is the flex's index and the value is the weight. Only flexes with a non-default (nonzero) weight are listed, and if none exist, this field will be nil."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "Flex",
        "typing": "table"
      },
      {
        "comments": [
          "@BodyG {table}: The entity's body groups, see @EntityFuncs:GetBodygroup. The key is the bodygroup ID and the value is the assigned bodygroup number. Only body groups with a non-default (> 0) value are listed, and if none exist, this field will be nil."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "BodyG",
        "typing": "table"
      },
      {
        "comments": [
          "@BoneManip {BoneManipulationData}: Bone manipulation data, see @EntityFuncs:HasBoneManipulations. The key is the bone index and the value is a @BoneManipulationData structure. Only bones that have been manipulated with non-default values are listed, and if none exist, this field will be nil."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "BoneManip",
        "typing": "BoneManipulationData"
      },
      {
        "comments": [
          "@MapCreationID {number}: The entity's MapCreationID, only exists for entities that were created by the map. See @EntityFuncs:MapCreationID."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "MapCreationID",
        "typing": "number"
      },
      {
        "comments": [
          "@WorkshopID {number}: Deprecated, always 0. See @EntityFuncs:GetWorkshopID."
        ],
        "context": "EntityCopyData",
        "type": "interface",
        "name": "WorkshopID",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/ENT",
      "@interface IEntity",
      "@description Information about the ENT structure.\nTo learn more about scripted entities, [see this page](https://wiki.garrysmod.com/page/Scripted_Entities).\nFor list of callbacks, see [ENT Hooks](https://wiki.garrysmod.com/page/Category:ENTITY_Hooks).\nWhile some of the fields may be serverside or clientside only, it is recommended to provide them on both so addons could use their values."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "IEntity",
    "typings": [],
    "types": [
      {
        "comments": [
          "@Base {string}: The base entity to derive from. This **must** be a valid Lua entity"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "Base",
        "typing": "string"
      },
      {
        "comments": [
          "@Type {string}: Type of the entity. This **must be one of these:**\n* **anim**\n* **brush**\n* **point**\n* **ai**\n* **nextbot**\n* **filter**\nSee [Scripted Entities](https://wiki.garrysmod.com/page/Scripted%20Entities) for a more detailed explanation of what each one is."
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "Type",
        "typing": "string"
      },
      {
        "comments": [
          "@ClassName {string}: Entity class name of the entity (File or folder name of your entity).\n**This is set automatically *after* the entity file is loaded.**"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "ClassName",
        "typing": "string"
      },
      {
        "comments": [
          "@Folder {string}: The folder from where the entity was loaded. This should always be \"entity/ent_myentity\", regardless whether your entity is stored as a file, or multiple files in a folder. **This is set automatically *before* the entity file is loaded.**"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "Folder",
        "typing": "string"
      },
      {
        "comments": [
          "@AutomaticFrameAdvance {boolean}: (Clientside) Set this to true if your entity has animations. You should also apply changes to the @EntityHooks:Think function from the example on that page."
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "AutomaticFrameAdvance",
        "typing": "boolean"
      },
      {
        "comments": [
          "@Category {string}: (Clientside) Spawnmenu category to put the entity into"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "Category",
        "typing": "string"
      },
      {
        "comments": [
          "@Spawnable {boolean}: Whether this entity should be displayed and is spawnable in the spawn menu"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "Spawnable",
        "typing": "boolean"
      },
      {
        "comments": [
          "@Editable {boolean}: Whether the entity supports Editing. See [Editable Entities](https://wiki.garrysmod.com/page/Editable%20Entities) for more info."
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "Editable",
        "typing": "boolean"
      },
      {
        "comments": [
          "@AdminOnly {boolean}: Whether or not only admins can spawn the entity from their spawn menu"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "AdminOnly",
        "typing": "boolean"
      },
      {
        "comments": [
          "@PrintName {string}: (Clientside) Nice name of the entity to appear in the spawn menu"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "PrintName",
        "typing": "string"
      },
      {
        "comments": [
          "@Author {string}: (Clientside) The author of the entity"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "Author",
        "typing": "string"
      },
      {
        "comments": [
          "@Contact {string}: (Clientside) The contacts of the entity creator"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "Contact",
        "typing": "string"
      },
      {
        "comments": [
          "@Purpose {string}: (Clientside) The purpose of the entity creation"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "Purpose",
        "typing": "string"
      },
      {
        "comments": [
          "@Instructions {string}: (Clientside) How to use your entity"
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "Instructions",
        "typing": "string"
      },
      {
        "comments": [
          "@RenderGroup {RENDERGROUP}: (Clientside) The entity's render group, see @RENDERGROUP enum."
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "RenderGroup",
        "typing": "RENDERGROUP"
      },
      {
        "comments": [
          "@DisableDuplicator {boolean}: (Serverside) Disable the ability for players to duplicate this entity."
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "DisableDuplicator",
        "typing": "boolean"
      },
      {
        "comments": [
          "@ScriptedEntityType {string}: (Clientside) Sets the spawnmenu content icon type for the entity, used by spawnmenu in the Sandbox-derived gamemodes.\nSee @spawnmenu.AddContentType for more information."
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "ScriptedEntityType",
        "typing": "string"
      },
      {
        "comments": [
          "@DoNotDuplicate {boolean}: (Serverside) If set, the entity will not be duplicated via the built-in duplicator system."
        ],
        "context": "IEntity",
        "type": "interface",
        "name": "DoNotDuplicate",
        "typing": "boolean"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/EmitSoundInfo",
      "@interface EmitSoundInfo",
      "@description Passed as argument of @GamemodeHooks:EntityEmitSound."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "EmitSoundInfo",
    "typings": [],
    "types": [
      {
        "comments": [
          "@SoundName {string}: The file path of the played sound.\nSounds prefixed with ) tell the sound engine that it is a spatial sound; this allows the sound to emit from a specific location within the world.\nSounds prefixed with ^ tell the sound engine that it is a distance based sound. The left channel of the .wav is the 'near' sound that will play when the sound originates close to you, and the right channel is the 'far' sound that will play when the sound originates far from you."
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "SoundName",
        "typing": "string"
      },
      {
        "comments": [
          "@OriginalSoundName {string}: The original file path or soundscript name.\nEven if the SoundName value is changed, the OriginalSoundName value will remain the same.\nSounds may be returned as soundscripts (for example, \"Weapon_357.Single\") instead of the sound's file path. You can use @sound.GetProperties to retrieve the actual file path."
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "OriginalSoundName",
        "typing": "string"
      },
      {
        "comments": [
          "@SoundTime {number}: The time at which the sound should be played.\nIf equal to 0 or CurTime(), the sound is played immediately. If greater than CurTime(), the sound is played with a delay. If less than CurTime(), part of the sound is skipped."
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "SoundTime",
        "typing": "number"
      },
      {
        "comments": [
          "@DSP {number}: The DSP (digital signal processing) preset applied to the sound.\nThere are approximately 134 different presets defined by the Source engine between 0 and 133. These presets represent different types of 'rooms' or environments.\n[List of DSP's](https://developer.valvesoftware.com/wiki/Dsp_presets)"
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "DSP",
        "typing": "number"
      },
      {
        "comments": [
          "@SoundLevel {SNDLVL}: The sound's attenuation, a number between 0 (low) and 511 (high)\nThis determines how fast the sound drops away. A higher value means the sound can be heard farther away.\nSee @SNDLVL enum."
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "SoundLevel",
        "typing": "SNDLVL"
      },
      {
        "comments": [
          "@Pitch {number}: The pitch of the played sound, a number between 0 (low) and 255 (high), where 100 is the sound's original pitch."
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "Pitch",
        "typing": "number"
      },
      {
        "comments": [
          "@Flags {SND}: The bit flags of the played sound. See @SND enum for available options."
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "Flags",
        "typing": "SND"
      },
      {
        "comments": [
          "@Channel {CHAN}: The sound's channel. See @CHAN enum for available options."
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "Channel",
        "typing": "CHAN"
      },
      {
        "comments": [
          "@Volume {number}: The volume of the played sound, return as a decimal number between 0 (low) and 1 (high)."
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "Volume",
        "typing": "number"
      },
      {
        "comments": [
          "@Entity {Entity}: The entity that played the sound."
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "Entity",
        "typing": "Entity"
      },
      {
        "comments": [
          "@Pos {Vector}: The origin of the played sound."
        ],
        "context": "EmitSoundInfo",
        "type": "interface",
        "name": "Pos",
        "typing": "Vector"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/DynamicLight",
      "@note This is an actual class named **dlight_t**, not a table.",
      "@interface DynamicLight",
      "@description Structure for @DynamicLight function.\nAll members are case insensitive."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "DynamicLight",
    "typings": [],
    "types": [
      {
        "comments": [
          "@brightness {number}: The brightness of the light."
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "brightness",
        "typing": "number"
      },
      {
        "comments": [
          "@decay {number}: Fade out speed.\nHere's a formula for calculating Decay for your light: 1000 / fadeOutTimeInSeconds. For example setting decay to 1000 would fade out the light in 1 second, 2000 - 0.5 seconds."
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "decay",
        "typing": "number"
      },
      {
        "comments": [
          "@dietime {number}: Time after which light will be removed.\nThis is relative to @CurTime function. If you put in a value that is less than or equal to @CurTime function, the light will not behave properly.\nNote, that it does not affect fading out. Light will be removed regardless of it being fully faded out or not."
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "dietime",
        "typing": "number"
      },
      {
        "comments": [
          "@dir {Vector}: The light direction. Used with **InnerAngle** and **OuterAngle**."
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "dir",
        "typing": "Vector"
      },
      {
        "comments": [
          "@innerangle {number}: The closer this is to zero, the smoother the light will be. Requires **Dir** and **OuterAngle** to be set."
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "innerangle",
        "typing": "number"
      },
      {
        "comments": [
          "@outerangle {number}: The angle of the Dynamic Light. Requires **Dir** to be set."
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "outerangle",
        "typing": "number"
      },
      {
        "comments": [
          "@key {number}: Makes the light brighter and flicker? Changing the value does not seem to affect anything."
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "key",
        "typing": "number"
      },
      {
        "comments": [
          "@minlight {number}: Minimum light"
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "minlight",
        "typing": "number"
      },
      {
        "comments": [
          "@noworld {boolean}: Don't light the world. Has no effect for elights since they never light the world."
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "noworld",
        "typing": "boolean"
      },
      {
        "comments": [
          "@nomodel {boolean}: Don't light models"
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "nomodel",
        "typing": "boolean"
      },
      {
        "comments": [
          "@pos {Vector}: Position of the light"
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "pos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@size {number}: Radius of the light"
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "size",
        "typing": "number"
      },
      {
        "comments": [
          "@style {number}: Flicker style, see [this page](https://developer.valvesoftware.com/wiki/Light_dynamic#Appearances) for examples."
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "style",
        "typing": "number"
      },
      {
        "comments": [
          "@b {number}: The blue part of the color"
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "b",
        "typing": "number"
      },
      {
        "comments": [
          "@g {number}: The green part of the color"
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "g",
        "typing": "number"
      },
      {
        "comments": [
          "@r {number}: The red part of the color"
        ],
        "context": "DynamicLight",
        "type": "interface",
        "name": "r",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/DebugInfo",
      "@note If a filter is applied to @debug.getinfo, some members may not exist!",
      "@interface DebugInfo",
      "@description Table returned by @debug.getinfo.\nFor functions defined in C/C++, the following members will always have the given values:\n* what = \"C\"\n* source = \"[C]\"\n* nparams = 0\n* isvararg = true\n* namewhat = \"\"\n* short_src = \"[C]\"\n* linedefined = -1\n* currentline = -1\n* lastlinedefined = -1"
    ],
    "type": "struct",
    "context": "Structures",
    "name": "DebugInfo",
    "typings": [],
    "types": [
      {
        "comments": [
          "@func {function}: Reference to the function that was passed in. If a stack level was specified, this will be the function at that stack level. 0 = debug.getinfo, 1 = function that called debug.getinfo, etc.\n**Option: f**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "func",
        "typing": "UnknownFunc"
      },
      {
        "comments": [
          "@linedefined {number}: The line where the function definiton starts (where \"function\" is located).\n**Option: S**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "linedefined",
        "typing": "number"
      },
      {
        "comments": [
          "@lastlinedefined {number}: The line the function definition ended (where \"end\" is located).\n**Option: S**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "lastlinedefined",
        "typing": "number"
      },
      {
        "comments": [
          "@source {string}: The path to the file where the passed function is defined prepended by an @ (ex. \"@lua/autorun/mytestfile.lua\"). This will be the @CompileString function or @RunString function identifier if the function wasn't defined in a file, also prepended by an @.\n**Option: S**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "source",
        "typing": "string"
      },
      {
        "comments": [
          "@short_src {string}: The shortened name of the source (without the @). May be truncated if the source path is long.\n**Option: S**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "short_src",
        "typing": "string"
      },
      {
        "comments": [
          "@what {string}: The language used. Either \"Lua\" or \"C\".\n**Option: S**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "what",
        "typing": "string"
      },
      {
        "comments": [
          "@currentline {number}: The current line. This will be -1 if the code is not executed from a file.\n**Option: l** (lowercase L)"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "currentline",
        "typing": "number"
      },
      {
        "comments": [
          "@name {string}: The function name. This will be nil if the name cannot be found. Only works if stack level is passed rather than function pointer.\n**Option: n**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "name",
        "typing": "string"
      },
      {
        "comments": [
          "@namewhat {string}: The function \"type\". This will be \"global\", \"local\", \"method\", \"field\". Can also be an empty string if the function name could not be found. Only works if stack level is passed rather than function pointer.\n**Option: n**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "namewhat",
        "typing": "string"
      },
      {
        "comments": [
          "@isvararg {boolean}: Whether the function is variadic (has a ... argument).\n**Option: u**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "isvararg",
        "typing": "boolean"
      },
      {
        "comments": [
          "@nparams {number}: The number of arguments the function uses excluding varargs.\n**Option: u**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "nparams",
        "typing": "number"
      },
      {
        "comments": [
          "@nups {number}: Upvalue count. Max index that can be used with @debug.getupvalue. C functions can have upvalues but they cannot be accessed from Lua.\n**Option: u**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "nups",
        "typing": "number"
      },
      {
        "comments": [
          "@activelines {table}: A table of all the active lines in the function - that is, lines with code that actually does something (not blank lines or lines with comments only).\nThe table keys will be line numbers, and their values will all be true. Lines that are inactive are simply not included in the table - they have the value nil.\nIt doesn't check for activeline in subfunctions.\n**Option: L**"
        ],
        "context": "DebugInfo",
        "type": "interface",
        "name": "activelines",
        "typing": "table"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/DateData",
      "@interface DateData",
      "@description Table returned by @os.date and used by @os.time."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "DateData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@day {number}: Day of the month"
        ],
        "context": "DateData",
        "type": "interface",
        "name": "day",
        "typing": "number"
      },
      {
        "comments": [
          "@hour {number}: Hour"
        ],
        "context": "DateData",
        "type": "interface",
        "name": "hour",
        "typing": "number"
      },
      {
        "comments": [
          "@isdst {boolean}: Daylight saving enabled"
        ],
        "context": "DateData",
        "type": "interface",
        "name": "isdst",
        "typing": "boolean"
      },
      {
        "comments": [
          "@min {number}: Minute"
        ],
        "context": "DateData",
        "type": "interface",
        "name": "min",
        "typing": "number"
      },
      {
        "comments": [
          "@month {number}: Month\nJanuary: 1, December: 12"
        ],
        "context": "DateData",
        "type": "interface",
        "name": "month",
        "typing": "number"
      },
      {
        "comments": [
          "@sec {number}: Second"
        ],
        "context": "DateData",
        "type": "interface",
        "name": "sec",
        "typing": "number"
      },
      {
        "comments": [
          "@wday {number}: Day of the week\nSunday: 1, Saturday: 7"
        ],
        "context": "DateData",
        "type": "interface",
        "name": "wday",
        "typing": "number"
      },
      {
        "comments": [
          "@yday {number}: Day of the year"
        ],
        "context": "DateData",
        "type": "interface",
        "name": "yday",
        "typing": "number"
      },
      {
        "comments": [
          "@year {number}: Year"
        ],
        "context": "DateData",
        "type": "interface",
        "name": "year",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/CreationMenus",
      "@interface CreationMenus",
      "@description Table that maintains information on the creation menu tabs. Each key of the table represents the name of the tab. See @spawnmenu.AddCreationTab and @spawnmenu.GetCreationTabs."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "CreationMenus",
    "typings": [],
    "types": [
      {
        "comments": [
          "@func {function}: The function used to generate the content of the tab."
        ],
        "context": "CreationMenus",
        "type": "interface",
        "name": "func",
        "typing": "UnknownFunc"
      },
      {
        "comments": [
          "@Icon {string}: The icon material that will accompany the title of the tab."
        ],
        "context": "CreationMenus",
        "type": "interface",
        "name": "Icon",
        "typing": "string"
      },
      {
        "comments": [
          "@Order {number}: The order in which a tab will be displayed relative to the other tabs."
        ],
        "context": "CreationMenus",
        "type": "interface",
        "name": "Order",
        "typing": "number"
      },
      {
        "comments": [
          "@Tooltip {string}: The tooltip to be shown with the tab."
        ],
        "context": "CreationMenus",
        "type": "interface",
        "name": "Tooltip",
        "typing": "string"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/Color",
      "@interface IColor",
      "@description Table created by the @Color function function and used in various situations."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "IColor",
    "typings": [],
    "types": [
      {
        "comments": [
          "@r {number}: The red channel"
        ],
        "context": "IColor",
        "type": "interface",
        "name": "r",
        "typing": "number"
      },
      {
        "comments": [
          "@g {number}: The green channel"
        ],
        "context": "IColor",
        "type": "interface",
        "name": "g",
        "typing": "number"
      },
      {
        "comments": [
          "@b {number}: The blue channel"
        ],
        "context": "IColor",
        "type": "interface",
        "name": "b",
        "typing": "number"
      },
      {
        "comments": [
          "@a {number}: The alpha channel"
        ],
        "context": "IColor",
        "type": "interface",
        "name": "a",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/CollisionData",
      "@note Sometimes, the value of 'Speed' can be different from getting the length calculated from 'OurOldVelocity', even though they should be the same, or close to same. It's recommended to do 'OurOldVelocity:Length()' instead.\n```\nENT:PhysicsCollide( colData, collider )\n-- you may get two completely different values, and the second one should be more accurate.\nprint(colData.Speed)\nprint(colData.OurOldVelocity:Length())\nend\n```",
      "@interface CollisionData",
      "@description Passed as argument of @EntityHooks:PhysicsCollide."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "CollisionData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@HitPos {Vector}: The collision position"
        ],
        "context": "CollisionData",
        "type": "interface",
        "name": "HitPos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@HitEntity {Entity}: The other collision entity"
        ],
        "context": "CollisionData",
        "type": "interface",
        "name": "HitEntity",
        "typing": "Entity"
      },
      {
        "comments": [
          "@OurOldVelocity {Vector}: The entity's velocity before the collision"
        ],
        "context": "CollisionData",
        "type": "interface",
        "name": "OurOldVelocity",
        "typing": "Vector"
      },
      {
        "comments": [
          "@HitObject {PhysObj}: Other entity's physics object"
        ],
        "context": "CollisionData",
        "type": "interface",
        "name": "HitObject",
        "typing": "PhysObj"
      },
      {
        "comments": [
          "@DeltaTime {number}: Time since the last collision *with this HitEntity*"
        ],
        "context": "CollisionData",
        "type": "interface",
        "name": "DeltaTime",
        "typing": "number"
      },
      {
        "comments": [
          "@TheirOldVelocity {Vector}: Speed of the other entity before the collision"
        ],
        "context": "CollisionData",
        "type": "interface",
        "name": "TheirOldVelocity",
        "typing": "Vector"
      },
      {
        "comments": [
          "@Speed {number}: The speed of the entity before the collision"
        ],
        "context": "CollisionData",
        "type": "interface",
        "name": "Speed",
        "typing": "number"
      },
      {
        "comments": [
          "@HitNormal {Vector}: Normal of the surface that hit the other entity"
        ],
        "context": "CollisionData",
        "type": "interface",
        "name": "HitNormal",
        "typing": "Vector"
      },
      {
        "comments": [
          "@PhysObject {PhysObj}: Entity's physics object"
        ],
        "context": "CollisionData",
        "type": "interface",
        "name": "PhysObject",
        "typing": "PhysObj"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/CamData",
      "@interface CamData",
      "@description Table structure used @GamemodeHooks:CalcView and @GamemodeHooks:CalcVehicleView hook."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "CamData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@origin {Vector}: The camera's position"
        ],
        "context": "CamData",
        "type": "interface",
        "name": "origin",
        "typing": "Vector"
      },
      {
        "comments": [
          "@angles {Angle}: The camera's angles"
        ],
        "context": "CamData",
        "type": "interface",
        "name": "angles",
        "typing": "Angle"
      },
      {
        "comments": [
          "@fov {number}: The camera's FOV"
        ],
        "context": "CamData",
        "type": "interface",
        "name": "fov",
        "typing": "number"
      },
      {
        "comments": [
          "@znear {number}: Distance to near clipping plane"
        ],
        "context": "CamData",
        "type": "interface",
        "name": "znear",
        "typing": "number"
      },
      {
        "comments": [
          "@zfar {number}: Distance to far clipping plane"
        ],
        "context": "CamData",
        "type": "interface",
        "name": "zfar",
        "typing": "number"
      },
      {
        "comments": [
          "@drawviewer {boolean}: Set true to draw local players player model."
        ],
        "context": "CamData",
        "type": "interface",
        "name": "drawviewer",
        "typing": "boolean"
      },
      {
        "comments": [
          "left - {number}: no description"
        ],
        "type": "interface",
        "name": "left",
        "typing": "number",
        "context": "IStructuresCamDataOrtho"
      },
      {
        "comments": [
          "right - {number}: no description"
        ],
        "type": "interface",
        "name": "right",
        "typing": "number",
        "context": "IStructuresCamDataOrtho"
      },
      {
        "comments": [
          "top - {number}: no description"
        ],
        "type": "interface",
        "name": "top",
        "typing": "number",
        "context": "IStructuresCamDataOrtho"
      },
      {
        "comments": [
          "bottom - {number}: no description"
        ],
        "type": "interface",
        "name": "bottom",
        "typing": "number",
        "context": "IStructuresCamDataOrtho"
      },
      {
        "comments": [
          "@ortho {IStructuresCamDataOrtho}: If set, enables orthographic mode. The table has following arguments:"
        ],
        "context": "CamData",
        "type": "interface",
        "name": "ortho",
        "typing": "IStructuresCamDataOrtho"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/Bullet",
      "@interface Bullet",
      "@description Tables used for bullets see @EntityFuncs:FireBullets and @GamemodeHooks:EntityFireBullets."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "Bullet",
    "typings": [],
    "types": [
      {
        "comments": [
          "@Attacker {Entity}: The entity that should be reported as attacker eg. a player\nBy default this would be set to the entity @EntityFuncs:FireBullets is called on."
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "Attacker",
        "typing": "Entity"
      },
      {
        "comments": [
          "@type StructuresBulletCallback",
          "@param {void} this - no description",
          "@param {Entity} attacker - no description",
          "@param {TraceResult} tr - See @TraceResult structure",
          "@param {CTakeDamageInfo} dmgInfo - no description"
        ],
        "type": "type",
        "name": "StructuresBulletCallback",
        "typing": "(this: void, attacker: Entity, tr: TraceResult, dmgInfo: CTakeDamageInfo) => unknown"
      },
      {
        "comments": [
          "@Callback {function}: Function to be called **after** the bullet was fired. The arguments are:"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "Callback",
        "typing": "StructuresBulletCallback"
      },
      {
        "comments": [
          "@Damage {number}: The damage dealt by the bullet"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "Damage",
        "typing": "number"
      },
      {
        "comments": [
          "@Force {number}: The force of the bullets"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "Force",
        "typing": "number"
      },
      {
        "comments": [
          "@Distance {number}: Maximum distance the bullet can travel"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "Distance",
        "typing": "number"
      },
      {
        "comments": [
          "@HullSize {number}: The hull size of the bullet"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "HullSize",
        "typing": "number"
      },
      {
        "comments": [
          "@Num {number}: The amount of bullets to fire"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "Num",
        "typing": "number"
      },
      {
        "comments": [
          "@Tracer {number}: Show tracer for every x bullets"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "Tracer",
        "typing": "number"
      },
      {
        "comments": [
          "@AmmoType {string}: The ammunition name"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "AmmoType",
        "typing": "string"
      },
      {
        "comments": [
          "@TracerName {string}: The tracer name. You can find a list of default effects [here](https://wiki.garrysmod.com/page/Effects)."
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "TracerName",
        "typing": "string"
      },
      {
        "comments": [
          "@Dir {Vector}: The fire direction"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "Dir",
        "typing": "Vector"
      },
      {
        "comments": [
          "@Spread {Vector}: The spread, only x and y are needed"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "Spread",
        "typing": "Vector"
      },
      {
        "comments": [
          "@Src {Vector}: The position to fire the bullets from"
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "Src",
        "typing": "Vector"
      },
      {
        "comments": [
          "@IgnoreEntity {Entity}: The entity that the bullet will ignore when it will be shot."
        ],
        "context": "Bullet",
        "type": "interface",
        "name": "IgnoreEntity",
        "typing": "Entity"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/BoneManipulationData",
      "@interface BoneManipulationData",
      "@description Structure used for storing/restoring bone manipulations.\nData is stored from @EntityFuncs:GetManipulateBoneScale, @EntityFuncs:GetManipulateBoneAngles, and @EntityFuncs:GetManipulateBonePosition.\nData is restored using @EntityFuncs:ManipulateBoneScale, @EntityFuncs:ManipulateBoneAngles, and @EntityFuncs:ManipulateBonePosition.\nThe function @duplicator.DoBoneManipulator and @EntityCopyData structure use a table\ncontaining a BoneManipulationData structure for each bone (that has manipulations applied) with the bone ID as the struct index in the table.\nFields **s**, **a**, and **p** are set if they don't equal **Vector( 1, 1, 1 )**, **Angle( 0, 0, 0 )**, and **Vector( 0, 0, 0 )** respectively."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "BoneManipulationData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@s {Vector}: The entity's scale manipulation of the bone"
        ],
        "context": "BoneManipulationData",
        "type": "interface",
        "name": "s",
        "typing": "Vector"
      },
      {
        "comments": [
          "@a {Angle}: The entity's angle manipulation of the bone"
        ],
        "context": "BoneManipulationData",
        "type": "interface",
        "name": "a",
        "typing": "Angle"
      },
      {
        "comments": [
          "@p {Vector}: The entity's position manipulation of the given bone"
        ],
        "context": "BoneManipulationData",
        "type": "interface",
        "name": "p",
        "typing": "Vector"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/AttachmentData",
      "@interface AttachmentData",
      "@description Table returned by @EntityFuncs:GetAttachments."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "AttachmentData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@id {number}: Index of the attachment."
        ],
        "context": "AttachmentData",
        "type": "interface",
        "name": "id",
        "typing": "number"
      },
      {
        "comments": [
          "@name {string}: Name of the attachment."
        ],
        "context": "AttachmentData",
        "type": "interface",
        "name": "name",
        "typing": "string"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/BodyGroupData",
      "@interface BodyGroupData",
      "@description Table returned by @EntityFuncs:GetBodyGroups."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "BodyGroupData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@id {number}: Index of the body group."
        ],
        "context": "BodyGroupData",
        "type": "interface",
        "name": "id",
        "typing": "number"
      },
      {
        "comments": [
          "@name {string}: Name of the body group."
        ],
        "context": "BodyGroupData",
        "type": "interface",
        "name": "name",
        "typing": "string"
      },
      {
        "comments": [
          "@num {number}: Amount of subgroups."
        ],
        "context": "BodyGroupData",
        "type": "interface",
        "name": "num",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/AnimationData",
      "@interface AnimationData",
      "@description Table used by panel animation methods, primarily @Panel:AnimationThinkInternal, and returned by @Panel:NewAnimation."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "AnimationData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@StartTime {number}: The system time value returned by @SysTime function when the animation starts/will start."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "StartTime",
        "typing": "number"
      },
      {
        "comments": [
          "@EndTime {number}: The system time value returned by @SysTime function when the animation ends/will end."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "EndTime",
        "typing": "number"
      },
      {
        "comments": [
          "@Ease {number}: The ease in/out level of the animation."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "Ease",
        "typing": "number"
      },
      {
        "comments": [
          "@type StructuresAnimationDataOnEnd",
          "@param {void} this - no description",
          "@param {table} animData - This structure.",
          "@param {Panel} tgtPanel - The panel the animation was run on."
        ],
        "type": "type",
        "name": "StructuresAnimationDataOnEnd",
        "typing": "(this: void, animData: table, tgtPanel: Panel) => unknown"
      },
      {
        "comments": [
          "@OnEnd {function}: The callback function that will be called upon completion of the animation. The arguments passed to it are:"
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "OnEnd",
        "typing": "StructuresAnimationDataOnEnd"
      },
      {
        "comments": [
          "@type StructuresAnimationDataThink",
          "@param {void} this - no description",
          "@param {table} animData - This structure.",
          "@param {Panel} tgtPanel - The panel the animation is being run on.",
          "@param {number} fraction - The progress fraction of the animation, between 0 and 1. The change rate of this number will not be linear if you are easing."
        ],
        "type": "type",
        "name": "StructuresAnimationDataThink",
        "typing": "(this: void, animData: table, tgtPanel: Panel, fraction: number) => unknown"
      },
      {
        "comments": [
          "@Think {function}: The *think* function called every frame that will animate the panel object. This varies based on the animation. You can create a custom function for this if you aren't using the stock panel methods. The arguments passed to it are:"
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "Think",
        "typing": "StructuresAnimationDataThink"
      },
      {
        "comments": [
          "@Pos {Vector}: The target position, or target translation of the panel object. Used by @Panel:MoveTo and @Panel:MoveBy respectively."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "Pos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@StartPos {Vector}: The position of the panel object when the animation started. Used by @Panel:MoveTo and @Panel:MoveBy."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "StartPos",
        "typing": "Vector"
      },
      {
        "comments": [
          "@SizeX {boolean}: Whether to resize the panel horizontally or not. Only used by @Panel:SizeTo."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "SizeX",
        "typing": "boolean"
      },
      {
        "comments": [
          "@SizeY {boolean}: Whether to resize the panel vertically or not. Only used by @Panel:SizeTo."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "SizeY",
        "typing": "boolean"
      },
      {
        "comments": [
          "@Size {Vector}: The target size of the panel object. Only used by @Panel:SizeTo."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "Size",
        "typing": "Vector"
      },
      {
        "comments": [
          "@StartSize {Vector}: The size of the panel object when the animation started. Only used by @Panel:SizeTo."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "StartSize",
        "typing": "Vector"
      },
      {
        "comments": [
          "@Color {Color}: The target colour of the panel object. Only used by @Panel:ColorTo."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "Color",
        "typing": "Color"
      },
      {
        "comments": [
          "@StartColor {Color}: The colour of the panel object when the animation started. Only used by @Panel:ColorTo."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "StartColor",
        "typing": "Color"
      },
      {
        "comments": [
          "@Alpha {number}: The target alpha (0-255) of the panel object. Only used by @Panel:AlphaTo."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "Alpha",
        "typing": "number"
      },
      {
        "comments": [
          "@StartAlpha {number}: The alpha (0-255) of the panel object when the animation started. Only used by @Panel:AlphaTo."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "StartAlpha",
        "typing": "number"
      },
      {
        "comments": [
          "@Speed {number}: The speed to use for transitions when using linear interpolation (Lerp) animations. Only used by @Panel:LerpPositions."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "Speed",
        "typing": "number"
      },
      {
        "comments": [
          "@UseGravity {boolean}: Whether or not to use easing to make the panel 'jump' at its target, slowing as it approaches. Only used by @Panel:LerpPositions."
        ],
        "context": "AnimationData",
        "type": "interface",
        "name": "UseGravity",
        "typing": "boolean"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/AngPos",
      "@interface AngPos",
      "@description Table used by various functions, such as @EntityFuncs:GetAttachment."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "AngPos",
    "typings": [],
    "types": [
      {
        "comments": [
          "@Ang {Angle}: Angle object"
        ],
        "context": "AngPos",
        "type": "interface",
        "name": "Ang",
        "typing": "Angle"
      },
      {
        "comments": [
          "@Pos {Vector}: Vector object"
        ],
        "context": "AngPos",
        "type": "interface",
        "name": "Pos",
        "typing": "Vector"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Structures/AmmoData",
      "@note Can also be a string pointing to a convar. The value will automatically update with the convar's.",
      "@note Can also be a string pointing to a convar. The value will automatically update with the convar's.",
      "@note Can also be a string pointing to a convar. The value will automatically update with the convar's.",
      "@note gmod_maxammo will override this value if set to above 0.",
      "@interface AmmoData",
      "@description Table structure that describes a Source Engine ammo type.\nSee @game.AddAmmoType and @game.GetAmmoData."
    ],
    "type": "struct",
    "context": "Structures",
    "name": "AmmoData",
    "typings": [],
    "types": [
      {
        "comments": [
          "@dmgtype {DMG}: Damage type using @DMG enum.\nRelated function is @game.GetAmmoDamageType."
        ],
        "context": "AmmoData",
        "type": "interface",
        "name": "dmgtype",
        "typing": "DMG"
      },
      {
        "comments": [
          "@force {number}: The force of the ammo.\nRelated function is @game.GetAmmoForce."
        ],
        "context": "AmmoData",
        "type": "interface",
        "name": "force",
        "typing": "number"
      },
      {
        "comments": [
          "@maxsplash {number}: The maximum water splash size."
        ],
        "context": "AmmoData",
        "type": "interface",
        "name": "maxsplash",
        "typing": "number"
      },
      {
        "comments": [
          "@minsplash {number}: The minimum water splash size."
        ],
        "context": "AmmoData",
        "type": "interface",
        "name": "minsplash",
        "typing": "number"
      },
      {
        "comments": [
          "@name {string}: Name of the ammo.\nRelated functions are @game.GetAmmoName and @game.GetAmmoID."
        ],
        "context": "AmmoData",
        "type": "interface",
        "name": "name",
        "typing": "string"
      },
      {
        "comments": [
          "@npcdmg {number}: The damage dealt to NPCs.\nRelated function is @game.GetAmmoNPCDamage."
        ],
        "context": "AmmoData",
        "type": "interface",
        "name": "npcdmg",
        "typing": "number"
      },
      {
        "comments": [
          "@plydmg {number}: The damage dealt to players.\nRelated function is @game.GetAmmoPlayerDamage."
        ],
        "context": "AmmoData",
        "type": "interface",
        "name": "plydmg",
        "typing": "number"
      },
      {
        "comments": [
          "@tracer {TRACER}: Tracer type using @TRACER enum."
        ],
        "context": "AmmoData",
        "type": "interface",
        "name": "tracer",
        "typing": "TRACER"
      },
      {
        "comments": [
          "@maxcarry {number}: Maximum amount of ammo of this type the player should be able to carry in reserve.\nRelated function is @game.GetAmmoMax."
        ],
        "context": "AmmoData",
        "type": "interface",
        "name": "maxcarry",
        "typing": "number"
      },
      {
        "comments": [
          "@flags {AMMO}: Flags for the ammo type using @AMMO enum."
        ],
        "context": "AmmoData",
        "type": "interface",
        "name": "flags",
        "typing": "AMMO"
      }
    ]
  },
  {
    "comments": [
      "\nRemoves trailing spaces/passed character from a string.\n",
      "@name string.TrimRight",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/TrimRight",
      "@param {void} this - no description",
      "@param {string} str - String to remove from",
      "@param {string} char - Custom character to remove, default is a space",
      "@returns {string} - Trimmed string"
    ],
    "type": "func",
    "context": "string",
    "name": "TrimRight",
    "typings": [
      "(this: void, str: string, char?: string): string"
    ]
  },
  {
    "comments": [
      "\nChanges any lower-case letters in a string to upper-case letters.\n",
      "@name string.upper",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/upper",
      "@param {void} this - no description",
      "@param {string} str - The string to convert.",
      "@returns {string} - A string representing the value of a string converted to upper-case."
    ],
    "type": "func",
    "context": "string",
    "name": "upper",
    "typings": [
      "(this: void, str: string): string"
    ]
  },
  {
    "comments": [
      "\nRemoves leading spaces/characters from a string.\n",
      "@name string.TrimLeft",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/TrimLeft",
      "@param {void} this - no description",
      "@param {string} str - String to trim",
      "@param {string} char - Custom character to remove",
      "@returns {string} - Trimmed string"
    ],
    "type": "func",
    "context": "string",
    "name": "TrimLeft",
    "typings": [
      "(this: void, str: string, char?: string): string"
    ]
  },
  {
    "comments": [
      "\nRemoves leading and trailing matches of a string.\n",
      "@name string.Trim",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/Trim",
      "@param {void} this - no description",
      "@param {string} Inputstring - The string to trim.",
      "@param {string} Char - String to match.",
      "@returns {string} - Modified string"
    ],
    "type": "func",
    "context": "string",
    "name": "Trim",
    "typings": [
      "(this: void, Inputstring: string, Char?: string): string"
    ]
  },
  {
    "comments": [
      "\nSplits the string into characters and creates a sequential table of characters.\n",
      "@name string.ToTable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/ToTable",
      "@warning As a result of the [UTF-8](https://en.wikipedia.org/wiki/UTF-8) encoding, non-ASCII characters will be split into more than one character in the output table. Each character value in the output table will always be 1 byte.",
      "@param {void} this - no description",
      "@param {string} str - The string you'll turn into a table.",
      "@returns {table} - A sequential table where each value is a character from the given string"
    ],
    "type": "func",
    "context": "string",
    "name": "ToTable",
    "typings": [
      "(this: void, str: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns given time in \"MM:SS\" format.\n",
      "@name string.ToMinutesSeconds",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/ToMinutesSeconds",
      "@param {void} this - no description",
      "@param {number} time - Time in seconds",
      "@returns {string} - Formatted time"
    ],
    "type": "func",
    "context": "string",
    "name": "ToMinutesSeconds",
    "typings": [
      "(this: void, time: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns given time in \"MM:SS:MS\" format.\n",
      "@name string.ToMinutesSecondsMilliseconds",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/ToMinutesSecondsMilliseconds",
      "@param {void} this - no description",
      "@param {number} time - Time in seconds",
      "@returns {string} - Formatted time"
    ],
    "type": "func",
    "context": "string",
    "name": "ToMinutesSecondsMilliseconds",
    "typings": [
      "(this: void, time: number): string"
    ]
  },
  {
    "comments": [
      "\nFetches a Color type from a string.\n",
      "@name string.ToColor",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/ToColor",
      "@param {void} this - no description",
      "@param {string} Inputstring - The string to convert from.",
      "@returns {IColor} - The output @IColor structure"
    ],
    "type": "func",
    "context": "string",
    "name": "ToColor",
    "typings": [
      "(this: void, Inputstring: string): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns a sub-string, starting from the character at position *StartPos* of the string (inclusive), and optionally ending at the character at position *EndPos* of the string (also inclusive). If EndPos is not given, the rest of the string is returned.\n",
      "@name string.sub",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/sub",
      "@param {void} this - no description",
      "@param {string} str - The string you'll take a sub-string out of.",
      "@param {number} StartPos - The position of the first character that will be included in the sub-string.",
      "@param {number} EndPos - The position of the last character to be included in the sub-string. It can be negative to count from the end.",
      "@returns {string} - The substring."
    ],
    "type": "func",
    "context": "string",
    "name": "sub",
    "typings": [
      "(this: void, str: string, StartPos: number, EndPos?: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the first string starts with the second.\n",
      "@name string.StartWith",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/StartWith",
      "@param {void} this - no description",
      "@param {string} inputStr - String to check.",
      "@param {string} start - String to check with.",
      "@returns {boolean} - Whether the first string starts with the second."
    ],
    "type": "func",
    "context": "string",
    "name": "StartWith",
    "typings": [
      "(this: void, inputStr: string, start: string): boolean"
    ]
  },
  {
    "comments": [
      "\nRemoves the extension of a path.\n",
      "@name string.StripExtension",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/StripExtension",
      "@param {void} this - no description",
      "@param {string} Inputstring - The path to change.",
      "@returns {string} - Modifiedstring"
    ],
    "type": "func",
    "context": "string",
    "name": "StripExtension",
    "typings": [
      "(this: void, Inputstring: string): string"
    ]
  },
  {
    "comments": [
      "\nSplits the string into a table of strings, separated by the second argument.\n",
      "@name string.Split",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/Split",
      "@param {void} this - no description",
      "@param {string} Inputstring - String to split",
      "@param {string} Separator - Character(s) to split with.",
      "@returns {table} - Split table"
    ],
    "type": "func",
    "context": "string",
    "name": "Split",
    "typings": [
      "(this: void, Inputstring: string, Separator: string): table"
    ]
  },
  {
    "comments": [
      "\nSets the character at the specific index of the string.\n",
      "@name string.SetChar",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/SetChar",
      "@param {void} this - no description",
      "@param {string} InputString - The input string",
      "@param {number} Index - The character index, 1 is the first from left.",
      "@param {string} ReplacementChar - String to replace with.",
      "@returns {string} - ModifiedString"
    ],
    "type": "func",
    "context": "string",
    "name": "SetChar",
    "typings": [
      "(this: void, InputString: string, Index: number, ReplacementChar: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns the last n-th characters of the string.\n",
      "@name string.Right",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/Right",
      "@param {void} this - no description",
      "@param {string} str - The string to extract from.",
      "@param {number} num - Amount of chars relative to the end (starting from 1).",
      "@returns {string} - Returns a string containing a specified number of characters from the right side of a string."
    ],
    "type": "func",
    "context": "string",
    "name": "Right",
    "typings": [
      "(this: void, str: string, num: number): string"
    ]
  },
  {
    "comments": [
      "\nRepeats a string by the provided number, with an optional separator.\n",
      "@name string.rep",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/rep",
      "@param {void} this - no description",
      "@param {string} str - The string to convert.",
      "@param {number} repetitions - Timer to repeat, this values gets rounded internally.",
      "@param {string} separator - String that will separate the repeated piece. Notice that it doesn't add this string to the start or the end of the result, only between the repeated parts.",
      "@returns {string} - Repeated string."
    ],
    "type": "func",
    "context": "string",
    "name": "rep",
    "typings": [
      "(this: void, str: string, repetitions: number, separator?: string): string"
    ]
  },
  {
    "comments": [
      "\nReplaces all occurrences of the supplied second string.\n",
      "@name string.Replace",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/Replace",
      "@param {void} this - no description",
      "@param {string} str - The string we are seeking to replace an occurrence(s).",
      "@param {string} find - What we are seeking to replace.",
      "@param {string} replace - What to replace find with.",
      "@returns {string} - string"
    ],
    "type": "func",
    "context": "string",
    "name": "Replace",
    "typings": [
      "(this: void, str: string, find: string, replace: string): string"
    ]
  },
  {
    "comments": [
      "\nReverses a string.\n",
      "@name string.reverse",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/reverse",
      "@param {void} this - no description",
      "@param {string} str - The string to be reversed.",
      "@returns {string} - reversed string"
    ],
    "type": "func",
    "context": "string",
    "name": "reverse",
    "typings": [
      "(this: void, str: string): string"
    ]
  },
  {
    "comments": [
      "\nEscapes all special characters within a string, making the string safe for inclusion in a Lua pattern.\n",
      "@name string.PatternSafe",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/PatternSafe",
      "@param {void} this - no description",
      "@param {string} str - The string to be sanitized",
      "@returns {string} - The string that has been sanitized for inclusion in Lua patterns"
    ],
    "type": "func",
    "context": "string",
    "name": "PatternSafe",
    "typings": [
      "(this: void, str: string): string"
    ]
  },
  {
    "comments": [
      "\nFormats the supplied number (in seconds) to the highest possible time unit.\n",
      "@name string.NiceTime",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/NiceTime",
      "@param {void} this - no description",
      "@param {number} num - The number to format, in seconds.",
      "@returns {string} - A nicely formatted time string."
    ],
    "type": "func",
    "context": "string",
    "name": "NiceTime",
    "typings": [
      "(this: void, num: number): string"
    ]
  },
  {
    "comments": [
      "\nConverts a digital filesize to human-readable text.\n",
      "@name string.NiceSize",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/NiceSize",
      "@param {void} this - no description",
      "@param {number} bytes - The filesize in bytes.",
      "@returns {string} - The human-readable filesize, in Bytes/KB/MB/GB (whichever is appropriate)."
    ],
    "type": "func",
    "context": "string",
    "name": "NiceSize",
    "typings": [
      "(this: void, bytes: number): string"
    ]
  },
  {
    "comments": [
      "\nFinds a [Pattern](https://wiki.garrysmod.com/page/Patterns) in a string.\n",
      "@name string.match",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/match",
      "@param {void} this - no description",
      "@param {string} str - String which should be searched in for matches.",
      "@param {string} pattern - The pattern that defines what should be matched.",
      "@param {number} startPosition - The start index to start the matching from, can be negative to start the match from a position relative to the end.",
      "@returns {any[]} - Matched text(s)"
    ],
    "type": "func",
    "context": "string",
    "name": "match",
    "typings": [
      "(this: void, str: string, pattern: string, startPosition?: number): any[]"
    ]
  },
  {
    "comments": [
      "\nChanges any upper-case letters in a string to lower-case letters.\n",
      "@name string.lower",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/lower",
      "@param {void} this - no description",
      "@param {string} str - The string to convert.",
      "@returns {string} - The original string, with all uppercase letters replaced with their lowercase variants."
    ],
    "type": "func",
    "context": "string",
    "name": "lower",
    "typings": [
      "(this: void, str: string): string"
    ]
  },
  {
    "comments": [
      "\nCounts the number of characters in the string (length). This is equivalent to using the length operator (#).\n",
      "@name string.len",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/len",
      "@param {void} this - no description",
      "@param {string} str - The string to find the length of.",
      "@returns {number} - Length of the string"
    ],
    "type": "func",
    "context": "string",
    "name": "len",
    "typings": [
      "(this: void, str: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns everything left of supplied place of that string.\n",
      "@name string.Left",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/Left",
      "@param {void} this - no description",
      "@param {string} str - The string to extract from.",
      "@param {number} num - Amount of chars relative to the beginning (starting from 1).",
      "@returns {string} - Returns a string containing a specified number of characters from the left side of a string."
    ],
    "type": "func",
    "context": "string",
    "name": "Left",
    "typings": [
      "(this: void, str: string, num: number): string"
    ]
  },
  {
    "comments": [
      "\nEscapes special characters for JavaScript in a string, making the string safe for inclusion in to JavaScript strings.\n",
      "@name string.JavascriptSafe",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/JavascriptSafe",
      "@param {void} this - no description",
      "@param {string} str - The string that should be escaped.",
      "@returns {string} - The escaped string."
    ],
    "type": "func",
    "context": "string",
    "name": "JavascriptSafe",
    "typings": [
      "(this: void, str: string): string"
    ]
  },
  {
    "comments": [
      "\nJoins the values of a table together to form a string.\nThis is the reverse of @string.Explode and is functionally identical to @table.concat, but with less features.\n",
      "@name string.Implode",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/Implode",
      "@param {void} this - no description",
      "@param {string} separator - The separator to insert between each piece.",
      "@param {table} pieces - The table of pieces to concatenate. The keys for these must be numeric and sequential.",
      "@returns {string} - Imploded pieces"
    ],
    "type": "func",
    "context": "string",
    "name": "Implode",
    "typings": [
      "(this: void, separator?: string, pieces: table): string"
    ]
  },
  {
    "comments": [
      "\nThis functions main purpose is to replace certain character sequences in a string using [Patterns](https://wiki.garrysmod.com/page/Patterns).\n",
      "@name string.gsub",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/gsub",
      "@param {void} this - no description",
      "@param {string} str - String which should be modified.",
      "@param {string} pattern - The pattern that defines what should be matched and eventually be replaced.",
      "@param {string} replacement - In case of a string the matches sequence will be replaced with it.\nIn case of a table, the matched sequence will be used as key and the table will tested for the key, if a value exists it will be used as replacement.\nIn case of a function all matches will be passed as parameters to the function, the return value(s) of the function will then be used as replacement.",
      "@param {number} maxReplaces - Maximum number of replacements to be made.",
      "@returns {string} - replaceResult",
      "@returns {number} - replaceCount",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "string",
    "name": "gsub",
    "typings": [
      "(this: void, str: string, pattern: string, replacement: string, maxReplaces?: number): [string, number]"
    ]
  },
  {
    "comments": [
      "\nUsing [Patterns](https://wiki.garrysmod.com/page/Patterns), returns an iterator which will return either one value if no capture groups are defined, or any capture group matches.\n",
      "@name string.gmatch",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/gmatch",
      "@param {void} this - no description",
      "@param {string} data - The string to search in",
      "@param {string} pattern - The pattern to search for",
      "@returns {function} - The iterator function that can be used in a for-in loop"
    ],
    "type": "func",
    "context": "string",
    "name": "gmatch",
    "typings": [
      "(this: void, data: string, pattern: string): UnknownFunc"
    ]
  },
  {
    "comments": [
      "\nReturns an iterator function that is called for every complete match of the pattern, all sub matches will be passed as to the loop.\n",
      "@name string.gfind",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/gfind",
      "@param {void} this - no description",
      "@param {string} data - The string to search in",
      "@param {string} pattern - The pattern to search for",
      "@returns {function} - The iterator function that can be used in a for-in loop"
    ],
    "type": "func",
    "context": "string",
    "name": "gfind",
    "typings": [
      "(this: void, data: string, pattern: string): UnknownFunc"
    ]
  },
  {
    "comments": [
      "\nReturns the path only from a file's path.\n",
      "@name string.GetPathFromFilename",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/GetPathFromFilename",
      "@param {void} this - no description",
      "@param {string} Inputstring - String to get path from.",
      "@returns {string} - Path"
    ],
    "type": "func",
    "context": "string",
    "name": "GetPathFromFilename",
    "typings": [
      "(this: void, Inputstring: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns file name and extension.\n",
      "@name string.GetFileFromFilename",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/GetFileFromFilename",
      "@param {void} this - no description",
      "@param {string} pathString - The string eg. file-path to get the file-name from.",
      "@returns {string} - The file name"
    ],
    "type": "func",
    "context": "string",
    "name": "GetFileFromFilename",
    "typings": [
      "(this: void, pathString: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns extension of the file.\n",
      "@name string.GetExtensionFromFilename",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/GetExtensionFromFilename",
      "@param {void} this - no description",
      "@param {string} file - String eg. file-path to get the file extensions from.",
      "@returns {string} - fileExtension"
    ],
    "type": "func",
    "context": "string",
    "name": "GetExtensionFromFilename",
    "typings": [
      "(this: void, file: string): string"
    ]
  },
  {
    "comments": [
      "\nCreates a string from a Color variable.\n",
      "@name string.FromColor",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/FromColor",
      "@param {void} this - no description",
      "@param {Color} color - The color to put in the string.",
      "@returns {string} - Output"
    ],
    "type": "func",
    "context": "string",
    "name": "FromColor",
    "typings": [
      "(this: void, color: Color): string"
    ]
  },
  {
    "comments": [
      "\nReturns char value from the specified index in the supplied string.\n",
      "@name string.GetChar",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/GetChar",
      "@param {void} this - no description",
      "@param {string} str - The string that you will be searching with the supplied index.",
      "@param {number} index - The index's value of the string to be returned.",
      "@returns {string} - str"
    ],
    "type": "func",
    "context": "string",
    "name": "GetChar",
    "typings": [
      "(this: void, str: string, index: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the time as a formatted string or as a table if no format is given.\n",
      "@name string.FormattedTime",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/FormattedTime",
      "@param {void} this - no description",
      "@param {number} float - The time in seconds to format.",
      "@param {string} format - An optional formatting to use. If no format it specified, a table will be returned instead.",
      "@returns {string} - Returns the time as a formatted string only if a format was specified.\nReturns a table only if no format was specified. The table will contain these fields:"
    ],
    "type": "func",
    "context": "string",
    "name": "FormattedTime",
    "typings": [
      "(this: void, float: number, format?: string): string"
    ]
  },
  {
    "comments": [
      "\nAttempts to find the specified substring in a string, uses [Patterns](https://wiki.garrysmod.com/page/Patterns) by default.\n",
      "@name string.find",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/find",
      "@param {void} this - no description",
      "@param {string} haystack - The string to search in.",
      "@param {string} needle - The string to find, can contain patterns if enabled.",
      "@param {number} startPos - The position to start the search from, can be negative start position will be relative to the end position.",
      "@param {boolean} noPatterns - Disable patterns.",
      "@returns {number} - Starting position of the found text, or nil if the text wasn't found",
      "@returns {number} - Ending position of found text, or nil if the text wasn't found",
      "@returns {string} - Matched text for each group if patterns are enabled and used, or nil if the text wasn't found",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "string",
    "name": "find",
    "typings": [
      "(this: void, haystack: string, needle: string, startPos?: number, noPatterns?: boolean): [number, number, string]"
    ]
  },
  {
    "comments": [
      "\nSplits a string up wherever it finds the given separator.\nThis is the reverse of @string.Implode.\n",
      "@name string.Explode",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/Explode",
      "@param {void} this - no description",
      "@param {string} separator - The string will be separated wherever this sequence is found.",
      "@param {string} str - The string to split up.",
      "@param {boolean} use_patterns - Set this to true if your separator is a [pattern](https://wiki.garrysmod.com/page/Patterns).",
      "@returns {table} - Exploded string as a numerical sequential table."
    ],
    "type": "func",
    "context": "string",
    "name": "Explode",
    "typings": [
      "(this: void, separator: string, str: string, use_patterns: boolean): table"
    ]
  },
  {
    "comments": [
      "\nFormats the specified values into the string given.\n",
      "@name string.format",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/format",
      "@param {void} this - no description",
      "@param {string} format - The string to be formatted.\nFollows this format: http://www.cplusplus.com/reference/cstdio/printf/",
      "@param {any[]} ...formatParameters - Values to be formatted into the string.",
      "@returns {string} - The formatted string"
    ],
    "type": "func",
    "context": "string",
    "name": "format",
    "typings": [
      "(this: void, format: string, ...formatParameters: any[]): string"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the second passed string matches the end of the first.\n",
      "@name string.EndsWith",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/EndsWith",
      "@param {void} this - no description",
      "@param {string} str - The string whose end is to be checked.",
      "@param {string} end - The string to be matched with the end of the first.",
      "@returns {boolean} - *true* if the first string ends with the second, or the second is empty, otherwise *false*."
    ],
    "type": "func",
    "context": "string",
    "name": "EndsWith",
    "typings": [
      "(this: void, str: string, end: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the binary bytecode of the given function.\n",
      "@name string.dump",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/dump",
      "@note This does not work with functions created in C/C++. An error will be thrown if it is",
      "@param {void} this - no description",
      "@param {function} func - The function to get the bytecode of",
      "@param {boolean} stripDebugInfo - True to strip the debug data, false to keep it",
      "@returns {string} - Bytecode"
    ],
    "type": "func",
    "context": "string",
    "name": "dump",
    "typings": [
      "(this: void, func: UnknownFunc, stripDebugInfo?: boolean): string"
    ]
  },
  {
    "comments": [
      "\nInserts commas for every third digit.\n",
      "@name string.Comma",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/Comma",
      "@param {void} this - no description",
      "@param {number} InputNumber - The input number to commafy",
      "@returns {string} - Prettystring"
    ],
    "type": "func",
    "context": "string",
    "name": "Comma",
    "typings": [
      "(this: void, InputNumber: number): string"
    ]
  },
  {
    "comments": [
      "\nTakes the given numerical bytes and converts them to a string.\n",
      "@name string.char",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/char",
      "@param {void} this - no description",
      "@param {any[]} ...bytes - The bytes to create the string from.",
      "@returns {string} - String built from given bytes"
    ],
    "type": "func",
    "context": "string",
    "name": "char",
    "typings": [
      "(this: void, ...bytes: any[]): string"
    ]
  },
  {
    "comments": [
      "\nReturns the given string's characters in their numeric ASCII representation.\n",
      "@name string.byte",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/string/byte",
      "@param {void} this - no description",
      "@param {string} str - The string to get the chars from.",
      "@param {number} startPos - The first character of the string to get the byte of.",
      "@param {number} endPos - The last character of the string to get the byte of.",
      "@returns {any[]} - Numerical bytes"
    ],
    "type": "func",
    "context": "string",
    "name": "byte",
    "typings": [
      "(this: void, str: string, startPos?: number, endPos?: number): any[]"
    ]
  },
  {
    "comments": [
      "\nRetrieves vote info of supplied addon.\n",
      "@name steamworks.VoteInfo",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/VoteInfo",
      "@param {void} this - no description",
      "@param {string} workshopItemID - The ID of workshop item.",
      "@param {function} resultCallback - The function to process retrieved data. The first and only argument is a table, containing all the info.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "VoteInfo",
    "typings": [
      "(this: void, workshopItemID: string, resultCallback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nMakes the user vote for the specified addon\n",
      "@name steamworks.Vote",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/Vote",
      "@internal",
      "@param {void} this - no description",
      "@param {string} workshopItemID - The ID of workshop item.",
      "@param {boolean} upOrDown - Sets if the user should vote up/down. True makes them upvote, false down",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "Vote",
    "typings": [
      "(this: void, workshopItemID: string, upOrDown: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSubscribes to the specified workshop addon. Call @steamworks.ApplyAddons afterwards to update.\n",
      "@name steamworks.Subscribe",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/Subscribe",
      "@internal",
      "@param {void} this - no description",
      "@param {string} workshopItemID - The ID of the Steam Workshop item we should subscribe to",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "Subscribe",
    "typings": [
      "(this: void, workshopItemID: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the specified Steam Workshop addon will be mounted or not.\n",
      "@name steamworks.ShouldMountAddon",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/ShouldMountAddon",
      "@param {void} this - no description",
      "@param {string} workshopItemID - The ID of the Steam Workshop",
      "@returns {boolean} - Will the workshop item be mounted or not"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "ShouldMountAddon",
    "typings": [
      "(this: void, workshopItemID: string): boolean"
    ]
  },
  {
    "comments": [
      "\nOpens the workshop website for specified Steam Workshop item in the Steam overlay browser.\n",
      "@name steamworks.ViewFile",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/ViewFile",
      "@param {void} this - no description",
      "@param {string} workshopItemID - The ID of workshop item.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "ViewFile",
    "typings": [
      "(this: void, workshopItemID: string): void"
    ]
  },
  {
    "comments": [
      "\nUnsubscribes to the specified workshop addon. Call @steamworks.ApplyAddons afterwards to update.\nThis function should *never* be called without a user's consent and should not be called if the addon is currently in use (aka: the user is not in the main menu) as it may result in unexpected behaviour.\n",
      "@name steamworks.Unsubscribe",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/Unsubscribe",
      "@internal",
      "@param {void} this - no description",
      "@param {string} workshopItemID - The ID of the Steam Workshop item we should unsubscribe from.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "Unsubscribe",
    "typings": [
      "(this: void, workshopItemID: string): void"
    ]
  },
  {
    "comments": [
      "\nSets if an addon should be enabled or disabled. Call @steamworks.ApplyAddons afterwards to update.\n",
      "@name steamworks.SetShouldMountAddon",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/SetShouldMountAddon",
      "@param {void} this - no description",
      "@param {string} workshopItemID - The ID of the Steam Workshop item we should enable/disable",
      "@param {boolean} shouldMount - true to enable the item, false to disable.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "SetShouldMountAddon",
    "typings": [
      "(this: void, workshopItemID: string, shouldMount: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether you have played this addon or not. This will be shown to the user in the Steam Workshop itself:\n[File:steamworksSetFilePlayedExample.png](https://wiki.garrysmod.com/page/File:steamworksSetFilePlayedExample.png)\n",
      "@name steamworks.SetFilePlayed",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/SetFilePlayed",
      "@param {void} this - no description",
      "@param {string} workshopid - The Steam Workshop item ID",
      "@returns {string} - Whatever you have put in as first argument"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "SetFilePlayed",
    "typings": [
      "(this: void, workshopid: string): string"
    ]
  },
  {
    "comments": [
      "\nRequests information of the player with SteamID64 for later use with @steamworks.GetPlayerName.\n",
      "@name steamworks.RequestPlayerInfo",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/RequestPlayerInfo",
      "@param {void} this - no description",
      "@param {string} steamID64 - The 64bit Steam ID of player.",
      "@param {string} callback - A callback function with only 1 argument - @string type name.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "RequestPlayerInfo",
    "typings": [
      "(this: void, steamID64: string, callback: string): void"
    ]
  },
  {
    "comments": [
      "@name steamworks.SetFileCompleted",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/SetFileCompleted",
      "@param {void} this - no description",
      "@param {string} workshopid - The Steam Workshop item id",
      "@returns {string} - Whatever you have put in as first argument"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "SetFileCompleted",
    "typings": [
      "(this: void, workshopid: string): string"
    ]
  },
  {
    "comments": [
      "\nPublishes dupes, saves or demos to workshop.\n",
      "@name steamworks.Publish",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/Publish",
      "@internal",
      "@param {void} this - no description",
      "@param {table} tags - The workshop tags to apply",
      "@param {string} filename - Path to the file to upload",
      "@param {string} image - Path to the image to use as icon",
      "@param {string} name - Name of the Workshop submission",
      "@param {string} desc - Description of the Workshop submission",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "Publish",
    "typings": [
      "(this: void, tags: table, filename: string, image: string, name: string, desc: string): void"
    ]
  },
  {
    "comments": [
      "\nOpens the workshop website in the steam overlay browser.\n",
      "@name steamworks.OpenWorkshop",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/OpenWorkshop",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "OpenWorkshop",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the client is subscribed to the specified Steam Workshop item.\n",
      "@name steamworks.IsSubscribed",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/IsSubscribed",
      "@param {void} this - no description",
      "@param {string} workshopItemID - The ID of the Steam Workshop item.",
      "@returns {boolean} - Is the client subscribed to the addon or not."
    ],
    "type": "func",
    "context": "steamworks",
    "name": "IsSubscribed",
    "typings": [
      "(this: void, workshopItemID: string): boolean"
    ]
  },
  {
    "comments": [
      "\nRetrieves players name by his 64bit SteamID.\nYou must call @steamworks.RequestPlayerInfo a decent amount of time before calling this function.\n",
      "@name steamworks.GetPlayerName",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/GetPlayerName",
      "@param {void} this - no description",
      "@param {string} steamID64 - The 64bit Steam ID ( aka Community ID ) of the player",
      "@returns {string} - The name of that player"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "GetPlayerName",
    "typings": [
      "(this: void, steamID64: string): string"
    ]
  },
  {
    "comments": [
      "\nRetrieves info about supplied Steam Workshop addon.\n",
      "@name steamworks.FileInfo",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/FileInfo",
      "@param {void} this - no description",
      "@param {string} workshopItemID - The ID of Steam Workshop item.",
      "@param {function} resultCallback - The function to process retrieved data, with the following arguments:",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "FileInfo",
    "typings": [
      "(this: void, workshopItemID: string, resultCallback: steamworksFileInfoCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type steamworksFileInfoCallback",
          "@param {void} this - no description",
          "@param {UGCFileInfo} data - The data about the item, if the request succeeded, nil otherwise. See @UGCFileInfo structure."
        ],
        "type": "type",
        "name": "steamworksFileInfoCallback",
        "typing": "(this: void, data: UGCFileInfo) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nRetrieves a customized list of Steam Workshop addons.\n",
      "@name steamworks.GetList",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/GetList",
      "@param {void} this - no description",
      "@param {string} type - The type of items to retrieve. Possible values include:\n* popular (All invalid options will equal to this)\n* trending\n* latest\n* friends",
      "@param {table} tags - A table of tags to match.",
      "@param {number} offset - How much of results to skip from first one. Mainly used for pages.",
      "@param {number} numRetrieve - How much items to retrieve, up to 50 at a time.",
      "@param {number} days - When getting Most Popular content from Steam, this determines a time period. ( 7 = most popular addons in last 7 days, 1 = most popular addons today, etc )",
      "@param {string} userID - \"0\" to retrieve all addons, \"1\" to retrieve addons only published by you, or a valid SteamID64 of a user to get workshop items of.",
      "@param {function} resultCallback - The function to process retrieved data. The first and only argument is a table, containing all the info, or nil in case of error",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "GetList",
    "typings": [
      "(this: void, type: string, tags: table, offset: number, numRetrieve: number, days: number, userID: string, resultCallback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nDownloads a Steam Workshop file by its ID and returns a path to it.\n",
      "@name steamworks.DownloadUGC",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/DownloadUGC",
      "@param {void} this - no description",
      "@param {number} workshopID - The ID of workshop item to download. **NOT** a file ID.",
      "@param {function} resultCallback - The function to process retrieved data. The first and only argument is a string, containing path to the saved file, or nil if the download failed to any reason.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "DownloadUGC",
    "typings": [
      "(this: void, workshopID: number, resultCallback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nDownloads a file from the supplied addon and saves it as a .cache file in garrysmod/cache folder.\nThis is mostly used to download the preview image of the addon, but the game seems to also use it to download replays and saves.\nIn case the retrieved file is an image and you need the @IMaterial type, use @AddonMaterial function with the path supplied from the callback.\n",
      "@name steamworks.Download",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/Download",
      "@param {void} this - no description",
      "@param {string} workshopPreviewID - The Preview ID of workshop item.",
      "@param {boolean} uncompress - Whether to uncompress the file or not, assuming it was compressed with LZMA.\nYou will usually want to set this to true.",
      "@param {function} resultCallback - The function to process retrieved data. The first and only argument is a string, containing path to the saved file.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "Download",
    "typings": [
      "(this: void, workshopPreviewID: string, uncompress: boolean, resultCallback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nGet the item at the top of the stack\n",
      "@name Stack:Top",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Stack/Top",
      "@param {Stack} this - no description",
      "@returns {any} - The item at the top of the stack"
    ],
    "type": "class",
    "context": "Stack",
    "name": "Top",
    "typings": [
      "(this: Stack): any"
    ]
  },
  {
    "comments": [
      "\nRefreshes clients addons.\n",
      "@name steamworks.ApplyAddons",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/steamworks/ApplyAddons",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "steamworks",
    "name": "ApplyAddons",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns the size of the stack\n",
      "@name Stack:Size",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Stack/Size",
      "@param {Stack} this - no description",
      "@returns {number} - The size of the stack"
    ],
    "type": "class",
    "context": "Stack",
    "name": "Size",
    "typings": [
      "(this: Stack): number"
    ]
  },
  {
    "comments": [
      "\nPush an item onto the stack\n",
      "@name Stack:Push",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Stack/Push",
      "@param {Stack} this - no description",
      "@param {any} object - The item you want to push",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Stack",
    "name": "Push",
    "typings": [
      "(this: Stack, object: any): void"
    ]
  },
  {
    "comments": [
      "\nPop an item from the stack\n",
      "@name Stack:Pop",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Stack/Pop",
      "@param {Stack} this - no description",
      "@param {number} amount - Amount of items you want to pop.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Stack",
    "name": "Pop",
    "typings": [
      "(this: Stack, amount?: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns if the table with the specified name exists.\n",
      "@name sql.TableExists",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/sql/TableExists",
      "@param {void} this - no description",
      "@param {string} tableName - The name of the table to check.",
      "@returns {boolean} - exists"
    ],
    "type": "func",
    "context": "sql",
    "name": "TableExists",
    "typings": [
      "(this: void, tableName: string): boolean"
    ]
  },
  {
    "comments": [
      "\nPerforms the query like @sql.QueryRow, but returns the first value found.\n",
      "@name sql.QueryValue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/sql/QueryValue",
      "@param {void} this - no description",
      "@param {string} query - The input query.",
      "@returns {any} - The returned value; the engine automatically converts numerical output to Lua numbers."
    ],
    "type": "func",
    "context": "sql",
    "name": "QueryValue",
    "typings": [
      "(this: void, query: string): any"
    ]
  },
  {
    "comments": [
      "\nPerforms the query like @sql.Query, but returns the first row found.\nBasically equivalent to```sql.Query(\"*query* LIMIT 1\")```\n",
      "@name sql.QueryRow",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/sql/QueryRow",
      "@param {void} this - no description",
      "@param {string} query - The input query",
      "@param {number} row - The row number. Say we receive back 5 rows, putting 3 as this argument will give us row #3.",
      "@returns {table} - The returned row."
    ],
    "type": "func",
    "context": "sql",
    "name": "QueryRow",
    "typings": [
      "(this: void, query: string, row?: number): table"
    ]
  },
  {
    "comments": [
      "\nEscapes dangerous characters and symbols from user input used in an SQLite SQL Query.\n",
      "@name sql.SQLStr",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/sql/SQLStr",
      "@note this function is not meant to be used with external database engines such as *MySQL*. Escaping strings with inadequate functions is dangerous!",
      "@param {void} this - no description",
      "@param {string} str - The string to be escaped.",
      "@param {boolean} bNoQuotes - Set this as true, and the function will not wrap the input string in apostrophes.",
      "@returns {string} - The escaped input."
    ],
    "type": "func",
    "context": "sql",
    "name": "SQLStr",
    "typings": [
      "(this: void, str: string, bNoQuotes?: boolean): string"
    ]
  },
  {
    "comments": [
      "\nPerforms a query on the local SQLite database, returns a table as result set, nil if result is empty and false on error.\n",
      "@name sql.Query",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/sql/Query",
      "@param {void} this - no description",
      "@param {string} query - The query to execute.",
      "@returns {table} - false is returned if there is an error, nil if the query returned no data."
    ],
    "type": "func",
    "context": "sql",
    "name": "Query",
    "typings": [
      "(this: void, query: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns the last error from a SQLite query.\n",
      "@name sql.LastError",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/sql/LastError",
      "@param {void} this - no description",
      "@returns {string} - error"
    ],
    "type": "func",
    "context": "sql",
    "name": "LastError",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nTells the engine to execute a series of queries queued for execution, must be preceded by @sql.Begin\nThis is equivalent to ```sql.Query(\"COMMIT\")```\n",
      "@name sql.Commit",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/sql/Commit",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "sql",
    "name": "Commit",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nTells the engine a set of queries is coming. Will wait until @sql.Commit is called to run them.\nThis is most useful when you run more than 100+ queries.\nThis is equivalent to ```sql.Query(\"BEGIN\")```\n",
      "@name sql.Begin",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/sql/Begin",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "sql",
    "name": "Begin",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSupposed to open specified tool tab in spawnmenu, in reality does nothing.\n",
      "@name spawnmenu.SwitchToolTab",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/SwitchToolTab",
      "@param {void} this - no description",
      "@param {number} id - The tab ID to open",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "SwitchToolTab",
    "typings": [
      "(this: void, id: number): void"
    ]
  },
  {
    "comments": [
      "\nSets currently active control panel to be returned by @spawnmenu.ActiveControlPanel.\n",
      "@name spawnmenu.SetActiveControlPanel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/SetActiveControlPanel",
      "@param {void} this - no description",
      "@param {Panel} pnl - The panel to set.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "SetActiveControlPanel",
    "typings": [
      "(this: void, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSaves a table of spawnlists to files.\n",
      "@name spawnmenu.SaveToTextFiles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/SaveToTextFiles",
      "@internal",
      "@param {void} this - no description",
      "@param {table} spawnlists - A table containing spawnlists.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "SaveToTextFiles",
    "typings": [
      "(this: void, spawnlists: table): void"
    ]
  },
  {
    "comments": [
      "\nLoads spawnlists from text files.\n",
      "@name spawnmenu.PopulateFromTextFiles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/PopulateFromTextFiles",
      "@param {void} this - no description",
      "@param {function} callback - The function to call. Arguments are ( strFilename, strName, tabContents, icon, id, parentid, needsapp )",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "PopulateFromTextFiles",
    "typings": [
      "(this: void, callback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nCalls @spawnmenu.PopulateFromTextFiles.\n",
      "@name spawnmenu.PopulateFromEngineTextFiles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/PopulateFromEngineTextFiles",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "PopulateFromEngineTextFiles",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nGets a table of tools on the client.\n",
      "@name spawnmenu.GetTools",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/GetTools",
      "@param {void} this - no description",
      "@returns {table} - A table with groups of tools, along with information on each tool."
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "GetTools",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nAdds a new tool tab (or returns an existing one by name) to the right side of the spawnmenu via the @SandboxHooks:AddToolMenuTabs hook.\n",
      "@name spawnmenu.GetToolMenu",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/GetToolMenu",
      "@param {void} this - no description",
      "@param {string} name - The internal name of the tab. This is used for sorting.",
      "@param {string} label - The 'nice' name of the tab",
      "@param {string} icon - The filepath to the icon of the tab. Should be a .png",
      "@returns {table[]} - A table of tables representing categories and items in the left part of the tab. See example below to example structure."
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "GetToolMenu",
    "typings": [
      "(this: void, name: string, label?: string, icon?: string): table[]"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all prop categories and their props in the spawnmenu.\nNote that if the spawnmenu has not been populated, this will return an empty table.\nThis will not return spawnlists created by addons, see  @spawnmenu.GetCustomPropTable for that.\n",
      "@name spawnmenu.GetPropTable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/GetPropTable",
      "@param {void} this - no description",
      "@returns {table} - Table of all the prop categories and props in the following format:\n```{\n[\"settings/spawnlist/001-construction props.txt\"] = {\nname = \"Construction Props\",\nicon = \"icon16/page.png\",\nid = 1,\nparentid = 0,\nneedsapp = \"\",\ncontents = {\n{\nmodel = \"models/Cranes/crane_frame.mdl\",\ntype = \"model\"\n}\n-- etc.\n},\n}\n-- etc.\n}```"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "GetPropTable",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nSimilar to @spawnmenu.GetPropTable, but only returns spawnlists created by addons via @spawnmenu.AddPropCategory.\nThese spawnlists are shown in a separate menu in-game.\n",
      "@name spawnmenu.GetCustomPropTable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/GetCustomPropTable",
      "@param {void} this - no description",
      "@returns {table} - See @spawnmenu.GetPropTable for table format."
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "GetCustomPropTable",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nGets the CreationMenus table, which was filled with creation menu tabs from @spawnmenu.AddCreationTab.\n",
      "@name spawnmenu.GetCreationTabs",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/GetCreationTabs",
      "@param {void} this - no description",
      "@returns {CreationMenus} - The CreationMenus table. See the @CreationMenus structure."
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "GetCreationTabs",
    "typings": [
      "(this: void): CreationMenus"
    ]
  },
  {
    "comments": [
      "\nReturns the function to create an vgui element for a specified content type\n",
      "@name spawnmenu.GetContentType",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/GetContentType",
      "@param {void} this - no description",
      "@param {string} contentType - no description",
      "@returns {function} - The panel creation function"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "GetContentType",
    "typings": [
      "(this: void, contentType: string): UnknownFunc"
    ]
  },
  {
    "comments": [
      "\nCalls @spawnmenu.SaveToTextFiles.\n",
      "@name spawnmenu.DoSaveToTextFiles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/DoSaveToTextFiles",
      "@internal",
      "@param {void} this - no description",
      "@param {table} spawnlists - A table containing spawnlists.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "DoSaveToTextFiles",
    "typings": [
      "(this: void, spawnlists: table): void"
    ]
  },
  {
    "comments": [
      "\nCreates a new content icon.\n",
      "@name spawnmenu.CreateContentIcon",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/CreateContentIcon",
      "@param {void} this - no description",
      "@param {string} type - The type of the content icon.",
      "@param {Panel} parent - The parent to add the content icon to.",
      "@param {table} data - The data to send to the content icon in @spawnmenu.AddContentType",
      "@returns {Panel} - The created content icon, if it was returned by @spawnmenu.AddContentType"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "CreateContentIcon",
    "typings": [
      "(this: void, type: string, parent: Panel, data: table): Panel"
    ]
  },
  {
    "comments": [
      "\nClears all the tools from the different tool categories and the categories itself, if ran at the correct place.\nSeems to only work when ran at initialization.\n",
      "@name spawnmenu.ClearToolMenus",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/ClearToolMenus",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "ClearToolMenus",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds an option to the right side of the spawnmenu\n",
      "@name spawnmenu.AddToolMenuOption",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/AddToolMenuOption",
      "@param {void} this - no description",
      "@param {string} tab - The spawnmenu tab to add into (for example \"Utilities\")",
      "@param {string} category - The category to add into (for example \"Admin\")",
      "@param {string} cls - Unique identifier of option to add",
      "@param {string} name - The nice name of item",
      "@param {string} cmd - Command to execute when the item is selected",
      "@param {string} config - Config name, used in older versions to load tool settings UI from a file. No longer works.",
      "@param {function} cpanel - A function to build the context panel. The function has one argument:",
      "@param {table} table - Allows to override the table that will be added to the tool list. Some of the fields will be overwritten by this function.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "AddToolMenuOption",
    "typings": [
      "(this: void, tab: string, category: string, cls: string, name: string, cmd: string, config: string, cpanel: spawnmenuAddToolMenuOptionCpanel, table?: table): void"
    ],
    "types": [
      {
        "comments": [
          "@type spawnmenuAddToolMenuOptionCpanel",
          "@param {void} this - no description",
          "@param {DForm} pnl - A @DForm type that will be shown in the context menu"
        ],
        "type": "type",
        "name": "spawnmenuAddToolMenuOptionCpanel",
        "typing": "(this: void, pnl: DForm) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nUsed to create a new category in the list inside of a spawnmenu ToolTab.\nYou must call this function from @SandboxHooks:AddToolMenuCategories for it to work properly.\n",
      "@name spawnmenu.AddToolCategory",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/AddToolCategory",
      "@param {void} this - no description",
      "@param {string} tab - The ToolTab name, as created with @spawnmenu.AddToolTab.\nYou can also use the default ToolTab names \"Main\" and \"Utilities\".",
      "@param {string} RealName - The identifier name",
      "@param {string} PrintName - The displayed name",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "AddToolCategory",
    "typings": [
      "(this: void, tab: string, RealName: string, PrintName: string): void"
    ]
  },
  {
    "comments": [
      "\nUsed to add addon spawnlists to the spawnmenu tree. This function should be called within @SandboxHooks:PopulatePropMenu.\nAddon spawnlists will not save to disk if edited.\n",
      "@name spawnmenu.AddPropCategory",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/AddPropCategory",
      "@warning You should never try to modify player customized spawnlists!",
      "@param {void} this - no description",
      "@param {string} classname - A unique classname of the list.",
      "@param {string} name - The name of the category displayed to the player, e.g. *Comic Props*.",
      "@param {any} contents - A table of entries for the spawn menu. It must be numerically indexed.\nEach member of the table is a sub-table containing a type member, and other members depending on the type.",
      "@param {string} icon - The icon to use in the tree.",
      "@param {number} id - The unique ID number for the spawnlist category. Used to make sub categories. See \"parentID\" parameter below. If not set, it will be automatically set to ever increasing number, starting with 1000.",
      "@param {number} parentID - The unique ID of the parent category. This will make the created category a subcategory of category with given unique ID. *0* makes this a base category (such as *Builder*).",
      "@param {string} needsApp - The needed game for this prop category, if one is needed. If the specified game is not mounted, the category isn't shown. This uses the shortcut name, e.g. *cstrike*, and not the Steam AppID.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "AddPropCategory",
    "typings": [
      "(this: void, classname: string, name: string, contents: any, icon: string, id?: number, parentID?: number, needsApp?: string): void"
    ]
  },
  {
    "comments": [
      "\nRegisters a new content type that is saveable into spawnlists.\nCreated/called by @spawnmenu.CreateContentIcon.\n",
      "@name spawnmenu.AddContentType",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/AddContentType",
      "@param {void} this - no description",
      "@param {string} name - An unique name of the content type.",
      "@param {function} constructor - A function that is called whenever we need create a new panel for this content type.\nIt has two arguments:",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "AddContentType",
    "typings": [
      "(this: void, name: string, constructor: spawnmenuAddContentTypeConstructor): void"
    ],
    "types": [
      {
        "comments": [
          "@type spawnmenuAddContentTypeConstructor",
          "@param {void} this - no description",
          "@param {Panel} container - The container/parent of the new panel",
          "@param {table} data - Data for the content type passed from @spawnmenu.CreateContentIcon"
        ],
        "type": "type",
        "name": "spawnmenuAddContentTypeConstructor",
        "typing": "(this: void, container: Panel, data: table) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nInserts a new tab into the CreationMenus table, which will be used by the creation menu to generate its tabs (Spawnlists, Weapons, Entities, etc.)\n",
      "@name spawnmenu.AddCreationTab",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/AddCreationTab",
      "@param {void} this - no description",
      "@param {string} name - What text will appear on the tab (I.E Spawnlists).",
      "@param {function} func - The function called to generate the content of the tab.",
      "@param {string} material - Path to the material that will be used as an icon on the tab.",
      "@param {number} order - The order in which this tab should be shown relative to the other tabs on the creation menu.",
      "@param {string} tooltip - The tooltip to be shown for this tab.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "AddCreationTab",
    "typings": [
      "(this: void, name: string, func: UnknownFunc, material?: string, order?: number, tooltip?: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns currently opened control panel of a tool, post process effect or some other menu in spawnmenu.\n",
      "@name spawnmenu.ActiveControlPanel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/ActiveControlPanel",
      "@param {void} this - no description",
      "@returns {Panel} - The currently opened control panel, if any."
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "ActiveControlPanel",
    "typings": [
      "(this: void): Panel"
    ]
  },
  {
    "comments": [
      "\nActivates tools context menu in specified tool tab.\n",
      "@name spawnmenu.ActivateToolPanel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/ActivateToolPanel",
      "@param {void} this - no description",
      "@param {number} tab - The tabID of the tab to open the context menu in",
      "@param {Panel} cp - The control panel to open",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "ActivateToolPanel",
    "typings": [
      "(this: void, tab: number, cp: Panel): void"
    ]
  },
  {
    "comments": [
      "\nActivates a tool, opens context menu and brings up the tool gun.\n",
      "@name spawnmenu.ActivateTool",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/ActivateTool",
      "@param {void} this - no description",
      "@param {string} tool - Tool class/file name",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "ActivateTool",
    "typings": [
      "(this: void, tool: string): void"
    ]
  },
  {
    "comments": [
      "\nAllows you to play external sound files, as well as online radio streams.\nYou can find a list of all error codes [here](http://www.un4seen.com/doc/#bass/BASS_ErrorGetCode.html)\nFor offline file playback, see @sound.PlayFile.\n",
      "@name sound.PlayURL",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/sound/PlayURL",
      "@bug #2296 Due to a bug with [BASS](http://www.un4seen.com/), AAC codec streams cannot be played in 3D mode.",
      "@param {void} this - no description",
      "@param {string} url - The URL of the sound to play",
      "@param {string} flags - Flags for the sound. Can be one or more of following, separated by a space (\" \"):\n* 3d - Makes the sound 3D, so you can set its position\n* mono - Forces the sound to have only one channel\n* noplay - Forces the sound not to play as soon as this function is called\n* noblock - Disables streaming in blocks. It is more resource-intensive, but it is required for @IGModAudioChannel:SetTime.\nIf you don't want to use any of the above, you can just leave it as \"\".",
      "@param {function} callback - Callback function that is called as soon as the the stream is loaded. It has next arguments:",
      "@returns {void}"
    ],
    "type": "func",
    "context": "sound",
    "name": "PlayURL",
    "typings": [
      "(this: void, url: string, flags: string, callback: soundPlayURLCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type soundPlayURLCallback",
          "@param {void} this - no description",
          "@param {IGModAudioChannel} soundchannel - The sound channel",
          "@param {number} errorID - ID of an error, if an error has occured",
          "@param {string} errorName - Name of an error, if an error has occured"
        ],
        "type": "type",
        "name": "soundPlayURLCallback",
        "typing": "(this: void, soundchannel: IGModAudioChannel, errorID: number, errorName: string) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nPlays a file from GMod directory. You can find a list of all error codes [here](http://www.un4seen.com/doc/#bass/BASS_ErrorGetCode.html)\nFor external file/stream playback, see @sound.PlayURL.\n",
      "@name sound.PlayFile",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/sound/PlayFile",
      "@bug #1752 This fails for looping .wav files in 3D mode.",
      "@bug #2304 This fails with unicode file names.",
      "@param {void} this - no description",
      "@param {string} path - The path to the file to play.\nUnlike other sound functions and structures, the path is relative to *garrysmod/ * instead of *garrysmod/sound/ *",
      "@param {string} flags - Flags for the sound. Can be one or more of following, separated by a space (\" \"):\n* 3d - Makes the sound 3D, so you can set its position\n* mono - Forces the sound to have only one channel\n* noplay - Forces the sound not to play as soon as this function is called\n* noblock - Disables streaming in blocks. It is more resource-intensive, but it is required for @IGModAudioChannel:SetTime.\nIf you don't want to use any of the above, you can just leave it as \"\".",
      "@param {function} callback - Callback function that is called as soon as the the stream is loaded. It has next arguments:",
      "@returns {void}"
    ],
    "type": "func",
    "context": "sound",
    "name": "PlayFile",
    "typings": [
      "(this: void, path: string, flags: string, callback: soundPlayFileCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type soundPlayFileCallback",
          "@param {void} this - no description",
          "@param {IGModAudioChannel} soundchannel - The sound channel. Will be nil if an error occured.",
          "@param {number} errorID - ID of an error if an error has occured. Will be nil, otherwise.",
          "@param {string} errorName - Name of an error if an error has occured. Will be nil, otherwise."
        ],
        "type": "type",
        "name": "soundPlayFileCallback",
        "typing": "(this: void, soundchannel: IGModAudioChannel, errorID: number, errorName: string) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nReturns a list of all registered sound scripts.\n",
      "@name sound.GetTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/sound/GetTable",
      "@param {void} this - no description",
      "@returns {table} - The list/array of all registered sound scripts ( No other information is provided )"
    ],
    "type": "func",
    "context": "sound",
    "name": "GetTable",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nPlays a sound from the specified position in the world.\nIf you want to play a sound without a position, such as a UI sound, use @surface.PlaySound instead.\n",
      "@name sound.Play",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/sound/Play",
      "@param {void} this - no description",
      "@param {string} Name - A string path to the sound.",
      "@param {Vector} Pos - A vector describing where the sound should play.",
      "@param {number} Level - Sound level in decibels. 75 is normal. Ranges from 20 to 180, where 180 is super loud. This affects how far away the sound will be heard.",
      "@param {number} Pitch - An integer describing the sound pitch. Range is from 0 to 255. 100 is normal pitch.",
      "@param {number} Volume - A float ranging from 0-1 describing the output volume of the sound.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "sound",
    "name": "Play",
    "typings": [
      "(this: void, Name: string, Pos: Vector, Level: number, Pitch: number, Volume: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns properties of the soundscript.\n",
      "@name sound.GetProperties",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/sound/GetProperties",
      "@param {void} this - no description",
      "@param {string} name - The name of the sound script",
      "@returns {SoundData} - The properties of the soundscript. See @SoundData structure"
    ],
    "type": "func",
    "context": "sound",
    "name": "GetProperties",
    "typings": [
      "(this: void, name: string): SoundData"
    ]
  },
  {
    "comments": [
      "\nCreates a sound from a function.\n",
      "@name sound.Generate",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/sound/Generate",
      "@warning You cannot override already existing ones.",
      "@bug #3360 This function cannot generate sounds that have a duration of less than 1 second.",
      "@bug #4082 Sounds persist between disconnects.",
      "@param {void} this - no description",
      "@param {string} indentifier - An unique identified for the sound.",
      "@param {number} samplerate - The sample rate of the sound. Must be 11025, 22050 or 44100.",
      "@param {number} length - The length in seconds of the sound to generate.",
      "@param {function} callback - A function which will be called to generate every sample on the sound. This function gets the current sample number passed as the first argument. The return value must be between -1.0 and 1.0. Other values will wrap back to the -1 to 1 range and basically clip. There are 65535 possible quantifiable values between -1 and 1.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "sound",
    "name": "Generate",
    "typings": [
      "(this: void, indentifier: string, samplerate: number, length: number, callback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nOverrides sounds defined inside of a txt file; typically used for adding map-specific sounds.\n",
      "@name sound.AddSoundOverrides",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/sound/AddSoundOverrides",
      "@param {void} this - no description",
      "@param {string} filepath - Path to the script file to load.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "sound",
    "name": "AddSoundOverrides",
    "typings": [
      "(this: void, filepath: string): void"
    ]
  },
  {
    "comments": [
      "\nCreates a sound script. It can also override sounds, which seems to only work when set on the server.\n",
      "@name sound.Add",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/sound/Add",
      "@param {void} this - no description",
      "@param {SoundData} soundData - The sounds properties. See @SoundData structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "sound",
    "name": "Add",
    "typings": [
      "(this: void, soundData: SoundData): void"
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/sobel",
      "@interface sobel",
      "@description Applies a \"sobel\" effect."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "sobel",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {number} threshold The threshold of the edge finding"
        ],
        "context": "sobel",
        "type": "interface",
        "name": "threshold",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g texturize",
      "@interface g_texturize",
      "@description Replaces every pixel with a part of the texture set by $basetexture.\nThe texture used must be power of 2 and be 8 times as high as wide in order to function.\nThe shader replaces every pixel with a part of the texture depending on it's brightness.\nDark areas will use the upper parts of the texture and brighter parts the lower parts of the texture."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_texturize",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {number} scalex The size of the texturing on the x axis"
        ],
        "context": "g_texturize",
        "type": "interface",
        "name": "scalex",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} scaley The size of the texturing on the y axis"
        ],
        "context": "g_texturize",
        "type": "interface",
        "name": "scaley",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g sunbeams",
      "@interface g_sunbeams",
      "@description Creates a \"sun beam\" effect."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_sunbeams",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {number} darken The strength of the darkening"
        ],
        "context": "g_sunbeams",
        "type": "interface",
        "name": "darken",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} multiply The strength of the multplier"
        ],
        "context": "g_sunbeams",
        "type": "interface",
        "name": "multiply",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} sunx The screen x position of the sun (from 0 - 1)"
        ],
        "context": "g_sunbeams",
        "type": "interface",
        "name": "sunx",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} suny The screen y position of the sun (from 0 - 1)"
        ],
        "context": "g_sunbeams",
        "type": "interface",
        "name": "suny",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} sunsize The \"size\" of the sun"
        ],
        "context": "g_sunbeams",
        "type": "interface",
        "name": "sunsize",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g sky",
      "@interface g_sky",
      "@description This shader was especially designed to be used with with maps, in particular the cube maps(up, down, front, back, left, right), they allow to modify the ambiance of a map."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_sky",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {Vector} bottomcolor The top bottom of the texture(used for gradient)"
        ],
        "context": "g_sky",
        "type": "interface",
        "name": "bottomcolor",
        "typing": "Vector"
      },
      {
        "comments": [
          "@param {Vector} duskcolor The dusk color"
        ],
        "context": "g_sky",
        "type": "interface",
        "name": "duskcolor",
        "typing": "Vector"
      },
      {
        "comments": [
          "@param {number} duskscale The scale of the dusk"
        ],
        "context": "g_sky",
        "type": "interface",
        "name": "duskscale",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} duskintensity The intensity of the dusk"
        ],
        "context": "g_sky",
        "type": "interface",
        "name": "duskintensity",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} fadebias The fade bias"
        ],
        "context": "g_sky",
        "type": "interface",
        "name": "fadebias",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} hdrscale The HDR scale"
        ],
        "context": "g_sky",
        "type": "interface",
        "name": "hdrscale",
        "typing": "number"
      },
      {
        "comments": [
          "@param {Vector} suncolor The color of the sun"
        ],
        "context": "g_sky",
        "type": "interface",
        "name": "suncolor",
        "typing": "Vector"
      },
      {
        "comments": [
          "@param {Vector} sunnormal The normal of the sun"
        ],
        "context": "g_sky",
        "type": "interface",
        "name": "sunnormal",
        "typing": "Vector"
      },
      {
        "comments": [
          "@param {number} sunsize The size of the sun"
        ],
        "context": "g_sky",
        "type": "interface",
        "name": "sunsize",
        "typing": "number"
      },
      {
        "comments": [
          "@param {Vector} topcolor The top color of the texture(used for gradient)"
        ],
        "context": "g_sky",
        "type": "interface",
        "name": "topcolor",
        "typing": "Vector"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g sharpen",
      "@interface g_sharpen",
      "@description Sharpens the contents of the screenspace"
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_sharpen",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {number} contrast The contrast to use"
        ],
        "context": "g_sharpen",
        "type": "interface",
        "name": "contrast",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} distance The distance to assume"
        ],
        "context": "g_sharpen",
        "type": "interface",
        "name": "distance",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g refract",
      "@interface g_refract",
      "@description Shader used for the now-absent Morph post-processing effect. This effect can be restored with an [addon](http://steamcommunity.com/sharedfiles/filedetails/?id=501088470) available on the Workshop."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_refract",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {number} refractamount Refract amount"
        ],
        "context": "g_refract",
        "type": "interface",
        "name": "refractamount",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} bluramount no description"
        ],
        "context": "g_refract",
        "type": "interface",
        "name": "bluramount",
        "typing": "number"
      },
      {
        "comments": [
          "@param {ITexture} fbtexture Texture/Render target to apply the morph to"
        ],
        "context": "g_refract",
        "type": "interface",
        "name": "fbtexture",
        "typing": "ITexture"
      },
      {
        "comments": [
          "@param {ITexture} normalmap Texture that holds the morph directions - red channel for X, green channel for Y."
        ],
        "context": "g_refract",
        "type": "interface",
        "name": "normalmap",
        "typing": "ITexture"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g premultiplied",
      "@interface g_premultiplied",
      "@description Renders a texture using premultiplied alpha blending. This is used by Awesomium panels."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_premultiplied",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {ITexture} basetexture The texture to render."
        ],
        "context": "g_premultiplied",
        "type": "interface",
        "name": "basetexture",
        "typing": "ITexture"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g downsample",
      "@interface g_downsample",
      "@description Downsamples the screenspace"
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_downsample",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {number} darken The strength of the darkening"
        ],
        "context": "g_downsample",
        "type": "interface",
        "name": "darken",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} multiply The strength of the multiplier"
        ],
        "context": "g_downsample",
        "type": "interface",
        "name": "multiply",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g colourmodify",
      "@interface g_colourmodify",
      "@description Allows modifying the coloring of the screenspace. A material with this shader exists at @Material function( \"pp/colour\" ), which is used by @DrawColorModify function."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_colourmodify",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {number} pp_colour_addr The add color's red value. 0 (black) means no change."
        ],
        "context": "g_colourmodify",
        "type": "interface",
        "name": "pp_colour_addr",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} pp_colour_addg The add color's green value. 0 (black) means no change."
        ],
        "context": "g_colourmodify",
        "type": "interface",
        "name": "pp_colour_addg",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} pp_colour_addb The add color's blue value. 0 (black) means no change."
        ],
        "context": "g_colourmodify",
        "type": "interface",
        "name": "pp_colour_addb",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} pp_colour_brightness This value will be added to every pixel's R, G, and B values. 0 means no change."
        ],
        "context": "g_colourmodify",
        "type": "interface",
        "name": "pp_colour_brightness",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} pp_colour_colour The saturation value. Setting this to 0 will turn the image to grey-scale. 1 means no change."
        ],
        "context": "g_colourmodify",
        "type": "interface",
        "name": "pp_colour_colour",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} pp_colour_contrast Every pixel's R, G, and B values will each be multiplied by this number. 1 means no change."
        ],
        "context": "g_colourmodify",
        "type": "interface",
        "name": "pp_colour_contrast",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} pp_colour_mulr The multiply color's red value. 0 (black) means no change."
        ],
        "context": "g_colourmodify",
        "type": "interface",
        "name": "pp_colour_mulr",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} pp_colour_mulg The multiply color's green value. 0 (black) means no change."
        ],
        "context": "g_colourmodify",
        "type": "interface",
        "name": "pp_colour_mulg",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} pp_colour_mulb The multiply color's blue value. 0 (black) means no change."
        ],
        "context": "g_colourmodify",
        "type": "interface",
        "name": "pp_colour_mulb",
        "typing": "number"
      },
      {
        "comments": [
          "@param {ITexture} fbtexture The texture to apply the color modifications to. It is expected, but not required, that the material will be drawn onto this texture.\n\"fbtexture\" most likely stands for \"frame buffer texture\", but this works with any texture, including @render.GetSuperFPTex."
        ],
        "context": "g_colourmodify",
        "type": "interface",
        "name": "fbtexture",
        "typing": "ITexture"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g bokehblur",
      "@interface g_bokehblur",
      "@description A bokeh blur shader which applies screen blur depending on distance."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_bokehblur",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {IMaterial} depthtext The depth texture, usually should be \"_rt_FullFrameFB\""
        ],
        "context": "g_bokehblur",
        "type": "interface",
        "name": "depthtext",
        "typing": "IMaterial"
      },
      {
        "comments": [
          "@param {number} focus The focus distance?"
        ],
        "context": "g_bokehblur",
        "type": "interface",
        "name": "focus",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} focusradius The focus radius?"
        ],
        "context": "g_bokehblur",
        "type": "interface",
        "name": "focusradius",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} size The strength of the blur"
        ],
        "context": "g_bokehblur",
        "type": "interface",
        "name": "size",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g blury",
      "@interface g_blury",
      "@description Blurs the screenspace on the y axis"
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_blury",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {number} size The strength of the blur"
        ],
        "context": "g_blury",
        "type": "interface",
        "name": "size",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g blurx",
      "@interface g_blurx",
      "@description Blurs $basetexture in the x direction."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_blurx",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {ITexture} basetexture The texture to blur."
        ],
        "context": "g_blurx",
        "type": "interface",
        "name": "basetexture",
        "typing": "ITexture"
      },
      {
        "comments": [
          "@param {number} size The strength of the blur. Actually the number of pixels between samples from $basetexture."
        ],
        "context": "g_blurx",
        "type": "interface",
        "name": "size",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/g bloom",
      "@interface g_bloom",
      "@description A simple bloom shader. See @DrawBloom function if you wish to use it in your code."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "g_bloom",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {number} levelb The multiplier for blue"
        ],
        "context": "g_bloom",
        "type": "interface",
        "name": "levelb",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} levelg The multiplier for the green"
        ],
        "context": "g_bloom",
        "type": "interface",
        "name": "levelg",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} levelr The multiplier for the red"
        ],
        "context": "g_bloom",
        "type": "interface",
        "name": "levelr",
        "typing": "number"
      },
      {
        "comments": [
          "@param {number} colormul The general multiplier for all colors"
        ],
        "context": "g_bloom",
        "type": "interface",
        "name": "colormul",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Shaders/gmodscreenspace",
      "@interface gmodscreenspace",
      "@description The shader used for screenspace effects."
    ],
    "type": "shader",
    "context": "Shaders",
    "name": "gmodscreenspace",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param {boolean} texturealpha Use Texture Alpha"
        ],
        "context": "gmodscreenspace",
        "type": "interface",
        "name": "texturealpha",
        "typing": "boolean"
      },
      {
        "comments": [
          "@param {boolean} vertexalpha Use Vertex Alpha"
        ],
        "context": "gmodscreenspace",
        "type": "interface",
        "name": "vertexalpha",
        "typing": "boolean"
      },
      {
        "comments": [
          "@param {boolean} vertexcolor Use Vertex Color"
        ],
        "context": "gmodscreenspace",
        "type": "interface",
        "name": "vertexcolor",
        "typing": "boolean"
      },
      {
        "comments": [
          "@param {number} blur Blur this buffer"
        ],
        "context": "gmodscreenspace",
        "type": "interface",
        "name": "blur",
        "typing": "number"
      }
    ]
  },
  {
    "comments": [
      "\nQueries a server for its player list.\n",
      "@name serverlist.PlayerList",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/serverlist/PlayerList",
      "@param {void} this - no description",
      "@param {string} ip - The IP address of the server, including the port.",
      "@param {function} callback - The function to be called if and when the request finishes. Function has one argument, a table containing tables with player info.\nEach table with player info has next fields:",
      "@returns {void}"
    ],
    "type": "func",
    "context": "serverlist",
    "name": "PlayerList",
    "typings": [
      "(this: void, ip: string, callback: serverlistPlayerListCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type serverlistPlayerListCallback",
          "@param {void} this - no description",
          "@param {number} time - The amount of time the player is playing on the server, in seconds",
          "@param {string} name - The player name",
          "@param {number} score - The players score"
        ],
        "type": "type",
        "name": "serverlistPlayerListCallback",
        "typing": "(this: void, time: number, name: string, score: number) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nQueries the master server for server list.\n",
      "@name serverlist.Query",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/serverlist/Query",
      "@param {void} this - no description",
      "@param {ServerQueryData} data - The information about what kind of servers we want. See @ServerQueryData structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "serverlist",
    "name": "Query",
    "typings": [
      "(this: void, data: ServerQueryData): void"
    ]
  },
  {
    "comments": [
      "\nAdds current server the player is on to their favorites.\n",
      "@name serverlist.AddCurrentServerToFavorites",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/serverlist/AddCurrentServerToFavorites",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "serverlist",
    "name": "AddCurrentServerToFavorites",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds a new tool tab to the right side of the spawnmenu via the @SandboxHooks:AddToolMenuTabs hook.\nThis function is a inferior duplicate of @spawnmenu.GetToolMenu, just without its return value.\n",
      "@name spawnmenu.AddToolTab",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/spawnmenu/AddToolTab",
      "@param {void} this - no description",
      "@param {string} name - The internal name of the tab. This is used for sorting.",
      "@param {string} label - The 'nice' name of the tab (Tip: @language.Add)",
      "@param {string} icon - The filepath to the icon of the tab. Should be a .png",
      "@returns {void}"
    ],
    "type": "func",
    "context": "spawnmenu",
    "name": "AddToolTab",
    "typings": [
      "(this: void, name: string, label?: string, icon?: string): void"
    ]
  },
  {
    "comments": [
      "\nAdds a search result provider. For examples, see gamemodes/sandbox/gamemode/cl_search_models.lua\n",
      "@name search.AddProvider",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/search/AddProvider",
      "@param {void} this - no description",
      "@param {function} provider - Provider function. It has one argument:\nYou must return a list of tables structured like this:",
      "@param {string} id - If provided, ensures that only one provider exists with the given ID at a time.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "search",
    "name": "AddProvider",
    "typings": [
      "(this: void, provider: searchAddProviderProvider, id?: string): void"
    ],
    "types": [
      {
        "comments": [
          "@type searchAddProviderProvider",
          "@param {void} this - no description",
          "@param {string} searchQuery - no description",
          "@param {string} text - Text to \"Copy to clipboard\"",
          "@param {function} func - Function to use/spawn the item",
          "@param {Panel} icon - A panel to add to spawnmenu",
          "@param {table} words - A table of words?"
        ],
        "type": "type",
        "name": "searchAddProviderProvider",
        "typing": "(this: void, searchQuery: string, text: string, func: UnknownFunc, icon: Panel, words: table) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nRetrieves search results.\n",
      "@name search.GetResults",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/search/GetResults",
      "@param {void} this - no description",
      "@param {string} query - Search query",
      "@returns {table} - A table of results ( Maximum 1024 items )"
    ],
    "type": "func",
    "context": "search",
    "name": "GetResults",
    "typings": [
      "(this: void, query: string): table"
    ]
  },
  {
    "comments": [
      "\nRegisters an ENT table with a classname. Reregistering an existing classname will automatically update the functions of all existing entities of that class.\n",
      "@name scripted_ents.Register",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/scripted ents/Register",
      "@bug  Sub-tables provided in the first argument will not carry over their metatable, and will receive a BaseClass key if the table was merged with the base's. Userdata references, which includes Vectors, Angles, Entities, etc. will not be copied.",
      "@param {void} this - no description",
      "@param {table} ENT - The ENT table to register",
      "@param {string} classname - The classname to register",
      "@returns {void}"
    ],
    "type": "func",
    "context": "scripted_ents",
    "name": "Register",
    "typings": [
      "(this: void, ENT: table, classname: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled after all ENTS have been loaded and runs @baseclass.Set on each one.\nYou can retrieve all the currently registered ENTS with @scripted_ents.GetList.\n",
      "@name scripted_ents.OnLoaded",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/scripted ents/OnLoaded",
      "@internal",
      "@note This is not called after an ENT auto refresh, and thus the inherited baseclass functions retrieved with @baseclass.Get will not be updated",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "scripted_ents",
    "name": "OnLoaded",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nChecks if name is based on base\n",
      "@name scripted_ents.IsBasedOn",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/scripted ents/IsBasedOn",
      "@param {void} this - no description",
      "@param {string} name - Entity's class name to be checked",
      "@param {string} base - Base class name to be checked",
      "@returns {boolean} - Returns true if class name is based on base, else false."
    ],
    "type": "func",
    "context": "scripted_ents",
    "name": "IsBasedOn",
    "typings": [
      "(this: void, name: string, base: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the 'type' of a class, this will one of the following: 'anim', 'ai', 'brush', 'point'.\n",
      "@name scripted_ents.GetType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/scripted ents/GetType",
      "@param {void} this - no description",
      "@param {string} classname - The classname to check",
      "@returns {string} - type"
    ],
    "type": "func",
    "context": "scripted_ents",
    "name": "GetType",
    "typings": [
      "(this: void, classname: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns the actual ENT table for a class. Modifying functions/variables in this table will change newly spawned entities\n",
      "@name scripted_ents.GetStored",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/scripted ents/GetStored",
      "@param {void} this - no description",
      "@param {string} classname - The classname of the ENT table to return",
      "@returns {table} - entTable"
    ],
    "type": "func",
    "context": "scripted_ents",
    "name": "GetStored",
    "typings": [
      "(this: void, classname: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns a list of all ENT tables which contain either ENT.Spawnable or ENT.AdminSpawnable\n",
      "@name scripted_ents.GetSpawnable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/scripted ents/GetSpawnable",
      "@param {void} this - no description",
      "@returns {IEntity[]} - A table of @IEntity structures"
    ],
    "type": "func",
    "context": "scripted_ents",
    "name": "GetSpawnable",
    "typings": [
      "(this: void): IEntity[]"
    ]
  },
  {
    "comments": [
      "\nRetrieves a member of entity's table.\n",
      "@name scripted_ents.GetMember",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/scripted ents/GetMember",
      "@param {void} this - no description",
      "@param {string} cls - Entity's class name",
      "@param {string} name - Name of member to retrieve",
      "@returns {any} - The member or nil if failed"
    ],
    "type": "func",
    "context": "scripted_ents",
    "name": "GetMember",
    "typings": [
      "(this: void, cls: string, name: string): any"
    ]
  },
  {
    "comments": [
      "\nReturns a copy of the list of all ENT tables registered\n",
      "@name scripted_ents.GetList",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/scripted ents/GetList",
      "@param {void} this - no description",
      "@returns {Iscripted_entsGetListReturn} - A table of all entities in the following format: (table keys are the classnames)"
    ],
    "type": "func",
    "context": "scripted_ents",
    "name": "GetList",
    "typings": [
      "(this: void): Iscripted_entsGetListReturn"
    ],
    "types": [
      {
        "comments": [
          "t - {IEntity}: The @IEntity structure associated with the entity"
        ],
        "type": "interface",
        "name": "t",
        "typing": "IEntity",
        "context": "Iscripted_entsGetListReturn"
      },
      {
        "comments": [
          "isBaseType - {boolean}: Always true"
        ],
        "type": "interface",
        "name": "isBaseType",
        "typing": "boolean",
        "context": "Iscripted_entsGetListReturn"
      },
      {
        "comments": [
          "Base - {string}: The entity base (note capital B in the key name)"
        ],
        "type": "interface",
        "name": "Base",
        "typing": "string",
        "context": "Iscripted_entsGetListReturn"
      },
      {
        "comments": [
          "type - {string}: The entity type"
        ],
        "type": "interface",
        "name": "type",
        "typing": "string",
        "context": "Iscripted_entsGetListReturn"
      }
    ]
  },
  {
    "comments": [
      "\nDefines an alias string that can be used to refer to another classname\n",
      "@name scripted_ents.Alias",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/scripted ents/Alias",
      "@param {void} this - no description",
      "@param {string} alias - A new string which can be used to refer to another classname",
      "@param {string} classname - The classname the alias should refer to",
      "@returns {void}"
    ],
    "type": "func",
    "context": "scripted_ents",
    "name": "Alias",
    "typings": [
      "(this: void, alias: string, classname: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the number of tasks in the schedule.\n",
      "@name Schedule:NumTasks",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Schedule/NumTasks",
      "@param {Schedule} this - no description",
      "@returns {number} - The number of tasks in this schedule."
    ],
    "type": "class",
    "context": "Schedule",
    "name": "NumTasks",
    "typings": [
      "(this: Schedule): number"
    ]
  },
  {
    "comments": [
      "\nInitialises the Schedule. Called by @ai_schedule.New when the Schedule is created.\n",
      "@name Schedule:Init",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Schedule/Init",
      "@internal",
      "@param {Schedule} this - no description",
      "@param {string} debugName - The name passed from @ai_schedule.New.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Schedule",
    "name": "Init",
    "typings": [
      "(this: Schedule, debugName: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the task at the given index.\n",
      "@name Schedule:GetTask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Schedule/GetTask",
      "@param {Schedule} this - no description",
      "@param {number} num - Task index.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Schedule",
    "name": "GetTask",
    "typings": [
      "(this: Schedule, num: number): void"
    ]
  },
  {
    "comments": [
      "\nAdds an engine task to the schedule.\n",
      "@name Schedule:EngTask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Schedule/EngTask",
      "@param {Schedule} this - no description",
      "@param {string} taskname - Task name, see [ai_task.h](https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/mp/src/game/server/ai_task.h#L89-L502)",
      "@param {number} taskdata - Task data, can be a float.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Schedule",
    "name": "EngTask",
    "typings": [
      "(this: Schedule, taskname: string, taskdata: number): void"
    ]
  },
  {
    "comments": [
      "\nAdds a task to the schedule with completely custom function names.\nSee also @Schedule:AddTask.\n",
      "@name Schedule:AddTaskEx",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Schedule/AddTaskEx",
      "@param {Schedule} this - no description",
      "@param {string} start - The full name of a function on the entity's table to be ran when the task is started.",
      "@param {string} run - The full name of a function on the entity's table to be ran when the task is continuously running.",
      "@param {number} data - Task data to be passed into the NPC's functions",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Schedule",
    "name": "AddTaskEx",
    "typings": [
      "(this: Schedule, start: string, run: string, data: number): void"
    ]
  },
  {
    "comments": [
      "\nAdds a task to the schedule. See also @Schedule:AddTaskEx if you wish to customize task start and run function names.\nSee also @EntityHooks:StartSchedule, @NPC:StartEngineTask, and @NPC:RunEngineTask.\n",
      "@name Schedule:AddTask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Schedule/AddTask",
      "@param {Schedule} this - no description",
      "@param {string} taskname - Custom task name",
      "@param {any} taskdata - Task data to be passed into the NPC's functions",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Schedule",
    "name": "AddTask",
    "typings": [
      "(this: Schedule, taskname: string, taskdata: any): void"
    ]
  },
  {
    "comments": [
      "\nWrites a variable to the save game file that is being saved.\n",
      "@name saverestore.WriteVar",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/WriteVar",
      "@param {void} this - no description",
      "@param {number | boolean | string | Entity | Angle | Vector | table} value - The value to save.It can be one of the following types: @number type, @boolean type, @string type, @Entity type, @Angle type, @Vector type or @table type.",
      "@param {ISave} save - The save object to write the variable to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "WriteVar",
    "typings": [
      "(this: void, value: number | boolean | string | Entity | Angle | Vector | table, save: ISave): void"
    ]
  },
  {
    "comments": [
      "\nWrite a table to a save game file that is being saved.\n",
      "@name saverestore.WriteTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/WriteTable",
      "@param {void} this - no description",
      "@param {table} table - The table to write",
      "@param {ISave} save - The save object to write the table to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "WriteTable",
    "typings": [
      "(this: void, table: table, save: ISave): void"
    ]
  },
  {
    "comments": [
      "\nReturns how many writable keys are in the given table.\n",
      "@name saverestore.WritableKeysInTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/WritableKeysInTable",
      "@param {void} this - no description",
      "@param {table} table - The table to test.",
      "@returns {number} - The number of keys that can be written with @saverestore.WriteTable."
    ],
    "type": "func",
    "context": "saverestore",
    "name": "WritableKeysInTable",
    "typings": [
      "(this: void, table: table): number"
    ]
  },
  {
    "comments": [
      "\nCalled by engine when a save is being saved.\nThis handles saving gamemode and calls all of the hooks added with @saverestore.AddSaveHook.\n",
      "@name saverestore.SaveGlobal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/SaveGlobal",
      "@internal",
      "@param {void} this - no description",
      "@param {ISave} save - The save object to write data into the save file.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "SaveGlobal",
    "typings": [
      "(this: void, save: ISave): void"
    ]
  },
  {
    "comments": [
      "\nSaves entitys @EntityFuncs:GetTable to the save game file that is being saved.\n",
      "@name saverestore.SaveEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/SaveEntity",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to save @EntityFuncs:GetTable of.",
      "@param {ISave} save - The save object to save @EntityFuncs:GetTable to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "SaveEntity",
    "typings": [
      "(this: void, ent: Entity, save: ISave): void"
    ]
  },
  {
    "comments": [
      "\nLoads a variable from the save game file that is being loaded.\nVariables will be read in the save order you have saved them.\n",
      "@name saverestore.ReadVar",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/ReadVar",
      "@param {void} this - no description",
      "@param {IRestore} save - The restore object to read variables from.",
      "@returns {any} - The variable that was read, if any."
    ],
    "type": "func",
    "context": "saverestore",
    "name": "ReadVar",
    "typings": [
      "(this: void, save: IRestore): any"
    ]
  },
  {
    "comments": [
      "\nReads a table from the save game file that is being loaded.\n",
      "@name saverestore.ReadTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/ReadTable",
      "@param {void} this - no description",
      "@param {IRestore} save - The restore object to read the table from.",
      "@returns {table} - The table that has been read, if any"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "ReadTable",
    "typings": [
      "(this: void, save: IRestore): table"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine just before @saverestore.SaveGlobal is.\n",
      "@name saverestore.PreSave",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/PreSave",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "PreSave",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine just before @saverestore.LoadGlobal is.\n",
      "@name saverestore.PreRestore",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/PreRestore",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "PreRestore",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nCalled by engine when a save is being loaded.\nThis handles loading gamemode and calls all of the hooks added with @saverestore.AddRestoreHook.\n",
      "@name saverestore.LoadGlobal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/LoadGlobal",
      "@internal",
      "@param {void} this - no description",
      "@param {IRestore} save - The restore object to read data from the save file with.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "LoadGlobal",
    "typings": [
      "(this: void, save: IRestore): void"
    ]
  },
  {
    "comments": [
      "\nLoads @EntityFuncs:GetTable from the save game file that is being loaded and merges it with the given entitys @EntityFuncs:GetTable.\n",
      "@name saverestore.LoadEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/LoadEntity",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity which will receive the loaded values from the save.",
      "@param {IRestore} save - The restore object to read the @EntityFuncs:GetTable from.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "LoadEntity",
    "typings": [
      "(this: void, ent: Entity, save: IRestore): void"
    ]
  },
  {
    "comments": [
      "\nAdds a save hook for the Half-Life 2 save system. You can this to carry data through level transitions in Half-Life 2.\n",
      "@name saverestore.AddSaveHook",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/AddSaveHook",
      "@param {void} this - no description",
      "@param {string} identifier - The unique identifier for this hook.",
      "@param {function} callback - The function to be called when an engine save is being saved. It has one argument:\nYou can also use those functions to save data:\n@saverestore.WriteVar\n@saverestore.WriteTable\n@saverestore.SaveEntity",
      "@returns {void}"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "AddSaveHook",
    "typings": [
      "(this: void, identifier: string, callback: saverestoreAddSaveHookCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type saverestoreAddSaveHookCallback",
          "@param {void} this - no description",
          "@param {ISave} save - The save object to be used to write data to the save file that is being saved"
        ],
        "type": "type",
        "name": "saverestoreAddSaveHookCallback",
        "typing": "(this: void, save: ISave) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nAdds a restore/load hook for the Half-Life 2 save system.\n",
      "@name saverestore.AddRestoreHook",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/saverestore/AddRestoreHook",
      "@param {void} this - no description",
      "@param {string} identifier - The unique identifier for this hook.",
      "@param {function} callback - The function to be called when an engine save is being loaded. It has one argument:\nYou can also use those functions to read data:\n@saverestore.ReadVar\n@saverestore.ReadTable\n@saverestore.LoadEntity",
      "@returns {void}"
    ],
    "type": "func",
    "context": "saverestore",
    "name": "AddRestoreHook",
    "typings": [
      "(this: void, identifier: string, callback: saverestoreAddRestoreHookCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type saverestoreAddRestoreHookCallback",
          "@param {void} this - no description",
          "@param {IRestore} save - The restore object to be used to read data from save file that is being loaded"
        ],
        "type": "type",
        "name": "saverestoreAddRestoreHookCallback",
        "typing": "(this: void, save: IRestore) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nCalled when spawnmenu is trying to be opened.\n",
      "@name SandboxHooks:SpawnMenuOpen",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/SpawnMenuOpen",
      "@note Hiding the spawnmenu will not stop people from being able to use the various console commands to spawn in items, etc. See GM:PlayerSpawn* hooks for blocking actual spawning.",
      "@param {_SANDBOX} this - no description",
      "@returns {boolean} - Return false to dissallow opening the spawnmenu"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "SpawnMenuOpen",
    "typings": [
      "(this: _SANDBOX): boolean"
    ]
  },
  {
    "comments": [
      "\nIf false is returned then the spawn menu is never created. This saves load times if your mod doesn't actually use the spawn menu for any reason.\n",
      "@name SandboxHooks:SpawnMenuEnabled",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/SpawnMenuEnabled",
      "@param {_SANDBOX} this - no description",
      "@returns {boolean} - Whether to create spawnmenu or not."
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "SpawnMenuEnabled",
    "typings": [
      "(this: _SANDBOX): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled right before the Lua Loaded tool menus are reloaded.\n",
      "@name SandboxHooks:PreReloadToolsMenu",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PreReloadToolsMenu",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PreReloadToolsMenu",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nCalled right after the Lua Loaded tool menus are reloaded. This is a good place to set up any ControlPanels.\n",
      "@name SandboxHooks:PostReloadToolsMenu",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PostReloadToolsMenu",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PostReloadToolsMenu",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nAdd the STOOLS to the tool menu. You want to call @spawnmenu.AddToolMenuOption in this hook.\n",
      "@name SandboxHooks:PopulateToolMenu",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PopulateToolMenu",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PopulateToolMenu",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nCalled to populate the Scripted Tool menu.\n",
      "@name SandboxHooks:PopulateSTOOLMenu",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PopulateSTOOLMenu",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PopulateSTOOLMenu",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nThis hook makes the engine load the spawnlist text files.\nIt calls @spawnmenu.PopulateFromEngineTextFiles by default.\n",
      "@name SandboxHooks:PopulatePropMenu",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PopulatePropMenu",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PopulatePropMenu",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nReturns a copy of the ENT table for a class, including functions defined by the base class\n",
      "@name scripted_ents.Get",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/scripted ents/Get",
      "@param {void} this - no description",
      "@param {string} classname - The classname of the ENT table to return, can be an alias",
      "@returns {table} - entTable"
    ],
    "type": "func",
    "context": "scripted_ents",
    "name": "Get",
    "typings": [
      "(this: void, classname: string): table"
    ]
  },
  {
    "comments": [
      "\nCalled to ask if player allowed to spawn a particular vehicle or not.\n",
      "@name SandboxHooks:PlayerSpawnVehicle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnVehicle",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player that wants to spawn that vehicle",
      "@param {string} model - The vehicle model that player wants to spawn",
      "@param {string} name - Vehicle name",
      "@param {table} table - Table of that vehicle, containing info about it",
      "@returns {boolean} - Return false to disallow spawning that vehicle"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnVehicle",
    "typings": [
      "(this: _SANDBOX, ply: Player, model: string, name: string, table: table): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player attempts to spawn a weapon from the Q menu. ( Mouse wheel clicks on an icon )\n",
      "@name SandboxHooks:PlayerSpawnSWEP",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnSWEP",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player who attempted to spawn a weapon.",
      "@param {string} weapon - Class name of the weapon the player tried to spawn.",
      "@param {IWeapon} swep - Information about the weapon the player is trying to spawn, see @IWeapon structure",
      "@returns {boolean} - Can the SWEP be spawned"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnSWEP",
    "typings": [
      "(this: _SANDBOX, ply: Player, weapon: string, swep: IWeapon): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player attempts to spawn an Entity from the Q menu.\n",
      "@name SandboxHooks:PlayerSpawnSENT",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnSENT",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player who attempted to spawn the entity.",
      "@param {string} cls - Class name of the entity the player tried to spawn.",
      "@returns {boolean} - can_spawn"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnSENT",
    "typings": [
      "(this: _SANDBOX, ply: Player, cls: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player attempts to spawn a ragdoll from the Q menu.\n",
      "@name SandboxHooks:PlayerSpawnRagdoll",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnRagdoll",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player who attempted to spawn a ragdoll.",
      "@param {string} model - Path to the model of the ragdoll the player is attempting to spawn.",
      "@returns {boolean} - Should the player be able to spawn the ragdoll or not."
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnRagdoll",
    "typings": [
      "(this: _SANDBOX, ply: Player, model: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player attempts to spawn a prop from the Q menu.\n",
      "@name SandboxHooks:PlayerSpawnProp",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnProp",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player who attempted to spawn a prop.",
      "@param {string} model - Path to the model of the prop the player is attempting to spawn.",
      "@returns {boolean} - Should the player be able to spawn the prop or not."
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnProp",
    "typings": [
      "(this: _SANDBOX, ply: Player, model: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled to ask whether player is allowed to spawn a given model. This includes props, effects and ragdolls and is called before the respective PlayerSpawn* hook.\n",
      "@name SandboxHooks:PlayerSpawnObject",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnObject",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player in question",
      "@param {string} model - Model path",
      "@param {number} skin - Skin number",
      "@returns {boolean} - Return false to disallow the player to spawn the given model."
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnObject",
    "typings": [
      "(this: _SANDBOX, ply: Player, model: string, skin: number): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled to ask if player allowed to spawn a particular NPC or not.\n",
      "@name SandboxHooks:PlayerSpawnNPC",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnNPC",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player that wants to spawn that NPC",
      "@param {string} npc_type - The npc type that player is trying to spawn",
      "@param {string} weapon - The weapon of that NPC",
      "@returns {boolean} - Return false to disallow spawning that NPC"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnNPC",
    "typings": [
      "(this: _SANDBOX, ply: Player, npc_type: string, weapon: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled to ask if player allowed to spawn a particular effect or not.\n",
      "@name SandboxHooks:PlayerSpawnEffect",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnEffect",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player that wants to spawn an effect",
      "@param {string} model - The effect model that player wants to spawn",
      "@returns {boolean} - Return false to disallow spawning that effect"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnEffect",
    "typings": [
      "(this: _SANDBOX, ply: Player, model: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled after the player has spawned a scripted weapon from the spawnmenu with a middle mouse click.\nFor left mouse click spawns, see @SandboxHooks:PlayerGiveSWEP.\n",
      "@name SandboxHooks:PlayerSpawnedSWEP",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnedSWEP",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player that spawned the SWEP",
      "@param {Entity} ent - The SWEP itself",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnedSWEP",
    "typings": [
      "(this: _SANDBOX, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the player spawned a vehicle.\n",
      "@name SandboxHooks:PlayerSpawnedVehicle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnedVehicle",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player that spawned the vehicle",
      "@param {Entity} ent - The vehicle itself",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnedVehicle",
    "typings": [
      "(this: _SANDBOX, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the player has spawned a scripted entity.\n",
      "@name SandboxHooks:PlayerSpawnedSENT",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnedSENT",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player that spawned the SENT",
      "@param {Entity} ent - The spawned SENT",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnedSENT",
    "typings": [
      "(this: _SANDBOX, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player has successfully spawned a prop from the Q menu.\n",
      "@name SandboxHooks:PlayerSpawnedProp",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnedProp",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player who spawned a prop.",
      "@param {string} model - Path to the model of the prop the player is attempting to spawn.",
      "@param {Entity} entity - The entity that was spawned.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnedProp",
    "typings": [
      "(this: _SANDBOX, ply: Player, model: string, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the player spawned a ragdoll.\n",
      "@name SandboxHooks:PlayerSpawnedRagdoll",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnedRagdoll",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player that spawned the ragdoll",
      "@param {string} model - The ragdoll model that player wants to spawn",
      "@param {Entity} ent - The spawned ragdoll itself",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnedRagdoll",
    "typings": [
      "(this: _SANDBOX, ply: Player, model: string, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the player spawned an NPC.\n",
      "@name SandboxHooks:PlayerSpawnedNPC",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnedNPC",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player that spawned the NPC",
      "@param {Entity} ent - The spawned NPC itself",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnedNPC",
    "typings": [
      "(this: _SANDBOX, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the player spawned an effect.\n",
      "@name SandboxHooks:PlayerSpawnedEffect",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerSpawnedEffect",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player that spawned the effect",
      "@param {string} model - The model of spawned effect",
      "@param {Entity} ent - The spawned effect itself",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerSpawnedEffect",
    "typings": [
      "(this: _SANDBOX, ply: Player, model: string, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player attempts to give themselves a weapon from the Q menu. ( Left mouse clicks on an icon )\n",
      "@name SandboxHooks:PlayerGiveSWEP",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PlayerGiveSWEP",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player who attempted to give themselves a weapon.",
      "@param {string} weapon - Class name of the weapon the player tried to give themselves.",
      "@param {IWeapon[]} swep - The swep table of this weapon, see @IWeapon structure",
      "@returns {boolean} - Can the SWEP be given to the player"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PlayerGiveSWEP",
    "typings": [
      "(this: _SANDBOX, ply: Player, weapon: string, swep: IWeapon[]): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when persistent props are saved.\n",
      "@name SandboxHooks:PersistenceSave",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PersistenceSave",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PersistenceSave",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nCalled when persistent props are loaded.\n",
      "@name SandboxHooks:PersistenceLoad",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PersistenceLoad",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PersistenceLoad",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nCalled from @GamemodeHooks:HUDPaint to draw world tips. By default, enabling cl_drawworldtooltips will stop world tips from being drawn here.\nSee @AddWorldTip function for more information.\n",
      "@name SandboxHooks:PaintWorldTips",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PaintWorldTips",
      "@note This cannot be used with @hook.Add",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PaintWorldTips",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nCalled from @GamemodeHooks:HUDPaint; does nothing by default.\n",
      "@name SandboxHooks:PaintNotes",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/PaintNotes",
      "@note This cannot be used with @hook.Add",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "PaintNotes",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the context menu is trying to be opened. Return false to disallow it.\n",
      "@name SandboxHooks:ContextMenuOpen",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/ContextMenuOpen",
      "@param {_SANDBOX} this - no description",
      "@returns {boolean} - Allow menu to open."
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "ContextMenuOpen",
    "typings": [
      "(this: _SANDBOX): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when the context menu is created.\n",
      "@name SandboxHooks:ContextMenuCreated",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/ContextMenuCreated",
      "@param {_SANDBOX} this - no description",
      "@param {Panel} g_ContextMenu - The created context menu panel",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "ContextMenuCreated",
    "typings": [
      "(this: _SANDBOX, g_ContextMenu: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when player selects an item on the spawnmenu sidebar at the left.\n",
      "@name SandboxHooks:ContentSidebarSelection",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/ContentSidebarSelection",
      "@param {_SANDBOX} this - no description",
      "@param {Panel} parent - The panel that holds spawnicons and the sidebar of spawnmenu",
      "@param {Panel} node - The item player selected",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "ContentSidebarSelection",
    "typings": [
      "(this: _SANDBOX, parent: Panel, node: Panel): void"
    ]
  },
  {
    "comments": [
      "\nControls if a property can be used or not.\n",
      "@name SandboxHooks:CanProperty",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/CanProperty",
      "@warning This is not guaranteed to be the internal property name used in @properties.Add!",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - Player, that tried to use the property",
      "@param {string} property - Class of the property that is tried to use, for example - bonemanipulate",
      "@param {Entity} ent - The entity, on which property is tried to be used on",
      "@returns {boolean} - Return false to disallow using that property"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "CanProperty",
    "typings": [
      "(this: _SANDBOX, ply: Player, property: string, ent: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player attempts to fire their tool gun. Return true to specifically allow the attempt, false to block it.\n",
      "@name SandboxHooks:CanTool",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/CanTool",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player who attempted to use their toolgun.",
      "@param {TraceResult} tr - A trace from the players eye to where in the world their crosshair/cursor is pointing. See @TraceResult structure",
      "@param {string} tool - The tool mode the player currently has selected.",
      "@returns {boolean} - Can use toolgun or not."
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "CanTool",
    "typings": [
      "(this: _SANDBOX, ply: Player, tr: TraceResult, tool: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player attempts to drive a prop via Prop Drive\n",
      "@name SandboxHooks:CanDrive",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/CanDrive",
      "@param {_SANDBOX} this - no description",
      "@param {Player} ply - The player who attempted to use Prop Drive.",
      "@param {Entity} ent - The entity the player is attempting to drive",
      "@returns {boolean} - Return true to allow driving, false to disallow"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "CanDrive",
    "typings": [
      "(this: _SANDBOX, ply: Player, ent: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nThis hook is used to add new tool tabs to spawnmenu.\n",
      "@name SandboxHooks:AddToolMenuTabs",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/AddToolMenuTabs",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "AddToolMenuTabs",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nThis hook is used to add new categories to spawnmenu tool tabs.\n",
      "@name SandboxHooks:AddToolMenuCategories",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/AddToolMenuCategories",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "AddToolMenuCategories",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nThis hook is used to add default tool tabs to spawnmenu.\nDo not override or hook this function, use @SandboxHooks:AddToolMenuTabs!\n",
      "@name SandboxHooks:AddGamemodeToolMenuTabs",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/AddGamemodeToolMenuTabs",
      "@internal",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "AddGamemodeToolMenuTabs",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nThis hook is used to add default categories to spawnmenu tool tabs.\nDo not override or hook this function, use @SandboxHooks:AddToolMenuCategories!\n",
      "@name SandboxHooks:AddGamemodeToolMenuCategories",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/SANDBOX/AddGamemodeToolMenuCategories",
      "@internal",
      "@param {_SANDBOX} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "SandboxHooks",
    "extends": [
      "Gamemode"
    ],
    "name": "AddGamemodeToolMenuCategories",
    "typings": [
      "(this: _SANDBOX): void"
    ]
  },
  {
    "comments": [
      "\nAdds a workshop addon for the client to download before entering the server.\nHaving the raw files from a workshop item does not count as having already downloaded it.\nSo players who previously downloaded a map through Fast Download will have to re-download it if you use the workshop.\nYou should try to only add addons that have custom content ( models, sounds, etc ).\nGamemodes that are [workshop enabled](https://wiki.garrysmod.com/page/Gamemode_Creation#Gamemode_Text_File) are automatically added to this list - so there's no need to add them.\nThe server's current map is also automatically added, if it is loaded from a workshop addon.\n",
      "@name resource.AddWorkshop",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/resource/AddWorkshop",
      "@warning This will not \"install\" the addon on your server, see [Workshop for Dedicated Servers](https://wiki.garrysmod.com/page/Workshop%20for%20Dedicated%20Servers) for installing Steam Workshop addons onto your servers",
      "@param {void} this - no description",
      "@param {string} workshopid - The workshop id of the file. This cannot be a collection.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "resource",
    "name": "AddWorkshop",
    "typings": [
      "(this: void, workshopid: string): void"
    ]
  },
  {
    "comments": [
      "\nAdds the specified file to the files the client should download.\n",
      "@name resource.AddSingleFile",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/resource/AddSingleFile",
      "@note There's a 8192 downloadable file limit. If you need more, consider using Workshop addons - @resource.AddWorkshop. You should also consider the fact that you have way too many downloads. This limit is shared among all resource.Add functions.",
      "@param {void} this - no description",
      "@param {string} path - Path of the file to be added, relative to garrysmod/",
      "@returns {void}"
    ],
    "type": "func",
    "context": "resource",
    "name": "AddSingleFile",
    "typings": [
      "(this: void, path: string): void"
    ]
  },
  {
    "comments": [
      "\nCopies the entire screen to the screen effect texture, which can be acquired via @render.GetScreenEffectTexture. This function is mainly intended to be used in @GamemodeHooks:RenderScreenspaceEffects\n",
      "@name render.UpdateScreenEffectTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/UpdateScreenEffectTexture",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "UpdateScreenEffectTexture",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nPretty much alias of @render.UpdatePowerOfTwoTexture but does not return the texture.\n",
      "@name render.UpdateRefractTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/UpdateRefractTexture",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "UpdateRefractTexture",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds the specified and all related files to the files the client should download.\nFor convenience, this function will automatically add any other files that are related to the selected one, and throw an error if it can't find them. For example, a .vmt file will automatically add the .vtf with the same name, and a .mdl file will automatically add all .vvd, .ani, .dx80.vtx, .dx90.vtx, .sw.vtx, .phy and .jpg files with the same name, with a separate error for each missing file. If you do not want it to do this, use [resource.AddSingleFile](https://wiki.garrysmod.com/page/resource/AddSingleFile).\n",
      "@name resource.AddFile",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/resource/AddFile",
      "@note There's a 8192 downloadable file limit. If you need more, consider using Workshop addons - @resource.AddWorkshop. You should also consider the fact that you have way too many downloads. This limit is shared among all resource.Add functions.",
      "@note Running this function using a path relative to the main garrysmod/ folder will not work for files in addons and gamemodes. Instead, the files must be added relative to their respective content folders. For example, a sound file from an addon would use the path \"sound/[FILENAME_AND_EXTENSION],\" despite the file being located in \"addons/[ADDON_NAME]/sound/[FILENAME_AND_EXTENSION]\"",
      "@param {void} this - no description",
      "@param {string} path - Virtual path of the file to be added, relative to garrysmod/. Do not add .bz2 to the filepath. Do not put gamemodes//content/ or addons// into the path.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "resource",
    "name": "AddFile",
    "typings": [
      "(this: void, path: string): void"
    ]
  },
  {
    "comments": [
      "\nUpdates the power of two texture.\n",
      "@name render.UpdatePowerOfTwoTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/UpdatePowerOfTwoTexture",
      "@param {void} this - no description",
      "@returns {ITexture} - Returns @render.GetPowerOfTwoTexture."
    ],
    "type": "func",
    "context": "render",
    "name": "UpdatePowerOfTwoTexture",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "\nUpdates the texture returned by @render.GetFullScreenDepthTexture.\nSilently fails if @render.SupportsPixelShaders_2_0 returns false.\n",
      "@name render.UpdateFullScreenDepthTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/UpdateFullScreenDepthTexture",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "UpdateFullScreenDepthTexture",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nEnables HDR tone mapping which influences the brightness.\n",
      "@name render.TurnOnToneMapping",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/TurnOnToneMapping",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "TurnOnToneMapping",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSuppresses or enables any engine lighting for any upcoming render operation.\n",
      "@name render.SuppressEngineLighting",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SuppressEngineLighting",
      "@bug #4070 This does not affect @IMesh typees.",
      "@param {void} this - no description",
      "@param {boolean} suppressLighting - True to suppress false to enable.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SuppressEngineLighting",
    "typings": [
      "(this: void, suppressLighting: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns if the current settings and the system allow the usage of vertex shaders 2.0.\n",
      "@name render.SupportsVertexShaders_2_0",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SupportsVertexShaders 2 0",
      "@param {void} this - no description",
      "@returns {boolean} - Whether Vertex Shaders 2.0 are supported or not."
    ],
    "type": "func",
    "context": "render",
    "name": "SupportsVertexShaders_2_0",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the current settings and the system allow the usage of pixel shaders 2.0.\n",
      "@name render.SupportsPixelShaders_2_0",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SupportsPixelShaders 2 0",
      "@param {void} this - no description",
      "@returns {boolean} - Whether Pixel Shaders 2.0 are supported or not."
    ],
    "type": "func",
    "context": "render",
    "name": "SupportsPixelShaders_2_0",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the current settings and the system allow the usage of pixel shaders 1.4.\n",
      "@name render.SupportsPixelShaders_1_4",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SupportsPixelShaders 1 4",
      "@param {void} this - no description",
      "@returns {boolean} - Whether Pixel Shaders 1.4 are supported or not."
    ],
    "type": "func",
    "context": "render",
    "name": "SupportsPixelShaders_1_4",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nStart a new beam draw operation.\n",
      "@name render.StartBeam",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/StartBeam",
      "@rendering function:3d",
      "@param {void} this - no description",
      "@param {number} segmentCount - Amount of beam segments that are about to be drawn.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "StartBeam",
    "typings": [
      "(this: void, segmentCount: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the game supports HDR, i.e. if the DirectX level is higher than or equal to 8.\n",
      "@name render.SupportsHDR",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SupportsHDR",
      "@param {void} this - no description",
      "@returns {boolean} - supportsHDR"
    ],
    "type": "func",
    "context": "render",
    "name": "SupportsHDR",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nSwaps the frame buffers/cycles the frame. In other words, this updates the screen.\nIf you take a really long time during a single frame render, it is a good idea to use this and let the user know that the game isn't stuck.\n",
      "@name render.Spin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/Spin",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "Spin",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "@name render.SetWriteDepthToDestAlpha",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetWriteDepthToDestAlpha",
      "@param {void} this - no description",
      "@param {boolean} enable - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetWriteDepthToDestAlpha",
    "typings": [
      "(this: void, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nChanges the view port position and size. The values will be clamped to the game's screen resolution.\nIf you are looking to render something to a texture (render target), you should use @render.PushRenderTarget.\n",
      "@name render.SetViewPort",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetViewPort",
      "@note This function will override values of @ScrW function and @ScrH function with the ones you set.",
      "@param {void} this - no description",
      "@param {number} x - X origin of the view port.",
      "@param {number} y - Y origin of the view port.",
      "@param {number} w - Width of the view port.",
      "@param {number} h - Height of the view port.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetViewPort",
    "typings": [
      "(this: void, x: number, y: number, w: number, h: number): void"
    ]
  },
  {
    "comments": [
      "@name render.SetToneMappingScaleLinear",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetToneMappingScaleLinear",
      "@param {void} this - no description",
      "@param {Vector} vec - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetToneMappingScaleLinear",
    "typings": [
      "(this: void, vec: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the operation to be performed on the stencil buffer values if the stencil test is passed but the depth buffer test fails.\n",
      "@name render.SetStencilZFailOperation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetStencilZFailOperation",
      "@param {void} this - no description",
      "@param {STENCILOPERATION} zFailOperation - Z fail operation function, see @STENCILOPERATION enum",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetStencilZFailOperation",
    "typings": [
      "(this: void, zFailOperation: STENCILOPERATION): void"
    ]
  },
  {
    "comments": [
      "\nSets the unsigned 8-bit write bitflag mask to be used for any writes to the stencil buffer.\n",
      "@name render.SetStencilWriteMask",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetStencilWriteMask",
      "@param {void} this - no description",
      "@param {number} mask - The mask bitflag.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetStencilWriteMask",
    "typings": [
      "(this: void, mask: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the unsigned 8-bit test bitflag mask to be used for any stencil testing.\n",
      "@name render.SetStencilTestMask",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetStencilTestMask",
      "@param {void} this - no description",
      "@param {number} mask - The mask bitflag.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetStencilTestMask",
    "typings": [
      "(this: void, mask: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the reference value which will be used for all stencil operations. This is an unsigned integer.\n",
      "@name render.SetStencilReferenceValue",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetStencilReferenceValue",
      "@param {void} this - no description",
      "@param {number} referenceValue - Reference value.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetStencilReferenceValue",
    "typings": [
      "(this: void, referenceValue: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the operation to be performed on the stencil buffer values if the compare function was successful.\n",
      "@name render.SetStencilPassOperation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetStencilPassOperation",
      "@param {void} this - no description",
      "@param {STENCILOPERATION} passOperation - Pass operation function, see @STENCILOPERATION enum",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetStencilPassOperation",
    "typings": [
      "(this: void, passOperation: STENCILOPERATION): void"
    ]
  },
  {
    "comments": [
      "\nSets whether stencil tests are carried out for each rendered pixel.\nOnly pixels passing the stencil test are written to the render target.\n",
      "@name render.SetStencilEnable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetStencilEnable",
      "@param {void} this - no description",
      "@param {boolean} newState - The new state.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetStencilEnable",
    "typings": [
      "(this: void, newState: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the operation to be performed on the stencil buffer values if the compare function was not successful.\nNote that this takes place **before** depth testing.\n",
      "@name render.SetStencilFailOperation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetStencilFailOperation",
      "@param {void} this - no description",
      "@param {STENCILOPERATION} failOperation - Fail operation function, see @STENCILOPERATION enum",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetStencilFailOperation",
    "typings": [
      "(this: void, failOperation: STENCILOPERATION): void"
    ]
  },
  {
    "comments": [
      "\nSets the compare function of the stencil.\nPixels which fail the stencil comparison function are not written to the render target. The operation to be performed on the stencil buffer values for these pixels can be set using @render.SetStencilFailOperation.\nPixels which pass the stencil comparison function are written to the render target unless they fail the depth buffer test (where applicable). The operation to perform on the stencil buffer values for these pixels can be set using @render.SetStencilPassOperation and @render.SetStencilZFailOperation.\n",
      "@name render.SetStencilCompareFunction",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetStencilCompareFunction",
      "@param {void} this - no description",
      "@param {STENCILCOMPARISONFUNCTION} compareFunction - Compare function, see @STENCILCOMPARISONFUNCTION enum, and @STENCIL enum for short.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetStencilCompareFunction",
    "typings": [
      "(this: void, compareFunction: STENCILCOMPARISONFUNCTION): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum shadow projection range.\n",
      "@name render.SetShadowDistance",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetShadowDistance",
      "@param {void} this - no description",
      "@param {number} shadowDistance - The new maximum shadow distance.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetShadowDistance",
    "typings": [
      "(this: void, shadowDistance: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether any future render operations will ignore shadow drawing.\n",
      "@name render.SetShadowsDisabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetShadowsDisabled",
      "@param {void} this - no description",
      "@param {boolean} newState - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetShadowsDisabled",
    "typings": [
      "(this: void, newState: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the shadow projection direction.\n",
      "@name render.SetShadowDirection",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetShadowDirection",
      "@param {void} this - no description",
      "@param {Vector} shadowDirections - The new shadow direction.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetShadowDirection",
    "typings": [
      "(this: void, shadowDirections: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the shadow color.\n",
      "@name render.SetShadowColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetShadowColor",
      "@param {void} this - no description",
      "@param {number} red - The red channel of the shadow color.",
      "@param {number} green - The green channel of the shadow color.",
      "@param {number} blue - The blue channel of the shadow color.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetShadowColor",
    "typings": [
      "(this: void, red: number, green: number, blue: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the render target with the specified index to the specified rt.\n",
      "@name render.SetRenderTargetEx",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetRenderTargetEx",
      "@param {void} this - no description",
      "@param {number} rtIndex - The index of the rt to set.",
      "@param {ITexture} texture - The new render target to be used.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetRenderTargetEx",
    "typings": [
      "(this: void, rtIndex: number, texture: ITexture): void"
    ]
  },
  {
    "comments": [
      "\nSets a scissoring rect which limits the drawing area.\n",
      "@name render.SetScissorRect",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetScissorRect",
      "@param {void} this - no description",
      "@param {number} startX - X start coordinate of the scissor rect.",
      "@param {number} startY - Y start coordinate of the scissor rect.",
      "@param {number} endX - X end coordinate of the scissor rect.",
      "@param {number} endY - Y end coordinate of the scissor rect.",
      "@param {boolean} enable - Enable or disable the scissor rect.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetScissorRect",
    "typings": [
      "(this: void, startX: number, startY: number, endX: number, endY: number, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the render target to the specified rt.\n",
      "@name render.SetRenderTarget",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetRenderTarget",
      "@param {void} this - no description",
      "@param {ITexture} texture - The new render target to be used.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetRenderTarget",
    "typings": [
      "(this: void, texture: ITexture): void"
    ]
  },
  {
    "comments": [
      "\nSets up the ambient lighting for any upcoming render operation. Ambient lighting can be seen as a cube enclosing the object to be drawn, each of its faces representing a directional light source that shines towards the object. Thus, there is a total of six different light sources that can be configured separately.\nLight color components are not restricted to a specific range (i.e. 0-255), instead, higher values will result in a brighter light.\n",
      "@name render.SetModelLighting",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetModelLighting",
      "@param {void} this - no description",
      "@param {BOX} lightDirection - The light source to edit, see @BOX enum.",
      "@param {number} red - The red component of the light color.",
      "@param {number} green - The green component of the light color.",
      "@param {number} blue - The blue component of the light color.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetModelLighting",
    "typings": [
      "(this: void, lightDirection: BOX, red: number, green: number, blue: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the material to be used in any upcoming render operation using the @render library.\nNot to be confused with @surface.SetMaterial.\n",
      "@name render.SetMaterial",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetMaterial",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {IMaterial} mat - The material to be used.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetMaterial",
    "typings": [
      "(this: void, mat: IMaterial): void"
    ]
  },
  {
    "comments": [
      "\nSets up the local lighting for any upcoming render operation. Up to 4 local lights can be defined, with one of three different types (point, directional, spot).\nDisables all local lights if called with no arguments.\n",
      "@name render.SetLocalModelLights",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetLocalModelLights",
      "@param {void} this - no description",
      "@param {LocalLight} lights - A table containing up to 4 tables for each light source that should be set up. Each of these tables should contain the properties of its associated light source, see @LocalLight structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetLocalModelLights",
    "typings": [
      "(this: void, lights?: LocalLight): void"
    ]
  },
  {
    "comments": [
      "\nSets the texture to be used as the lightmap in upcoming rendering operations. This is required when rendering meshes using a material with a lightmapped shader such as LightmappedGeneric.\n",
      "@name render.SetLightmapTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetLightmapTexture",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {ITexture} tex - The texture to be used as the lightmap.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetLightmapTexture",
    "typings": [
      "(this: void, tex: ITexture): void"
    ]
  },
  {
    "comments": [
      "\nSets the lighting origin.\n",
      "@name render.SetLightingOrigin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetLightingOrigin",
      "@bug #2804 This does not work for prop_physics.",
      "@param {void} this - no description",
      "@param {Vector} lightingOrigin - The position from which the light should be \"emitted\".",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetLightingOrigin",
    "typings": [
      "(this: void, lightingOrigin: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets lighting mode when rendering something.\n",
      "@name render.SetLightingMode",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetLightingMode",
      "@note **Do not forget to restore the default value** to avoid unexpected behavior, like the world and the HUD/UI being affected",
      "@param {void} this - no description",
      "@param {number} Mode - Lighting render mode\nPossible values are:\n* 0 - Default\n* 1 - Total fullbright, similar to *mat_fullbright 1* but excluding some weapon view models\n* 2 - Increased brightness(?), models look fullbright",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetLightingMode",
    "typings": [
      "(this: void, Mode: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the goal HDR tone mapping scale.\nUse this in a rendering/think hook as it is reset every frame.\n",
      "@name render.SetGoalToneMappingScale",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetGoalToneMappingScale",
      "@param {void} this - no description",
      "@param {number} scale - The target scale.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetGoalToneMappingScale",
    "typings": [
      "(this: void, scale: number): void"
    ]
  },
  {
    "comments": [
      "\nIf the fog mode is set to [MATERIAL_FOG_LINEAR_BELOW_FOG_Z](https://wiki.garrysmod.com/page/Enums/MATERIAL_FOG), the fog will only be rendered below the specified height.\n",
      "@name render.SetFogZ",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetFogZ",
      "@param {void} this - no description",
      "@param {number} fogZ - The fog Z.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetFogZ",
    "typings": [
      "(this: void, fogZ: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the color modulation.\n",
      "@name render.SetColorModulation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetColorModulation",
      "@param {void} this - no description",
      "@param {number} r - The red channel multiplier normal ranging from 0-1.",
      "@param {number} g - The green channel multiplier normal ranging from 0-1.",
      "@param {number} b - The blue channel multiplier normal ranging from 0-1.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetColorModulation",
    "typings": [
      "(this: void, r: number, g: number, b: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the current drawing material to \"color\".\nThe material is defined as:\n\"UnlitGeneric\"\n{\n\"$basetexture\" \"color/white\"\n\"$model\" \t\t1\n\"$translucent\" \t1\n\"$vertexalpha\" \t1\n\"$vertexcolor\" \t1\n}\n",
      "@name render.SetColorMaterial",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetColorMaterial",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetColorMaterial",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the current drawing material to \"color_ignorez\".\nThe material is defined as:\n\"UnlitGeneric\"\n{\n\"$basetexture\" \"color/white\"\n\"$model\" \t\t1\n\"$translucent\" \t1\n\"$vertexalpha\" \t1\n\"$vertexcolor\" \t1\n\"$ignorez\"\t\t1\n}\n",
      "@name render.SetColorMaterialIgnoreZ",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetColorMaterialIgnoreZ",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetColorMaterialIgnoreZ",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the alpha blending for every upcoming render operation.\n",
      "@name render.SetBlend",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetBlend",
      "@bug #3166 This does not affect non-model render.Draw* functions.",
      "@param {void} this - no description",
      "@param {number} blending - Blending value from 0-1.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetBlend",
    "typings": [
      "(this: void, blending: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the ambient lighting for any upcoming render operation.\n",
      "@name render.SetAmbientLight",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/SetAmbientLight",
      "@param {void} this - no description",
      "@param {number} r - The red part of the color, 0-1.",
      "@param {number} g - The green part of the color, 0-1.",
      "@param {number} b - The blue part of the color, 0-1.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "SetAmbientLight",
    "typings": [
      "(this: void, r: number, g: number, b: number): void"
    ]
  },
  {
    "comments": [
      "\nResets the HDR tone multiplier to the specified value.\nThis will only work on HDR maps, and the value will automatically fade to what it was ( or whatever @render.SetGoalToneMappingScale is ) if called only once.\n",
      "@name render.ResetToneMappingScale",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ResetToneMappingScale",
      "@param {void} this - no description",
      "@param {number} scale - The value which should be used as multiplier.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "ResetToneMappingScale",
    "typings": [
      "(this: void, scale: number): void"
    ]
  },
  {
    "comments": [
      "\nResets the model lighting to the specified color.\nCalls @render.SetModelLighting for every direction with given color.\n",
      "@name render.ResetModelLighting",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ResetModelLighting",
      "@param {void} this - no description",
      "@param {number} r - The red part of the color, 0-1",
      "@param {number} g - The green part of the color, 0-1",
      "@param {number} b - The blue part of the color, 0-1",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "ResetModelLighting",
    "typings": [
      "(this: void, r: number, g: number, b: number): void"
    ]
  },
  {
    "comments": [
      "\nRenders the scene with the specified viewData to the current active render target.\n",
      "@name render.RenderView",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/RenderView",
      "@bug #1330 Static props and LODs are rendered improperly due to incorrectly perceived distance.",
      "@param {void} this - no description",
      "@param {ViewData} view - The view data to be used in the rendering. See @ViewData structure. Any missing value is assumed to be that of the current view. Similarly, you can make a normal render by simply not passing this table at all.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "RenderView",
    "typings": [
      "(this: void, view?: ViewData): void"
    ]
  },
  {
    "comments": [
      "\nRenders the HUD on the screen.\n",
      "@name render.RenderHUD",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/RenderHUD",
      "@param {void} this - no description",
      "@param {number} x - X position for the HUD draw origin.",
      "@param {number} y - Y position for the HUD draw origin.",
      "@param {number} w - Width of the HUD draw.",
      "@param {number} h - Height of the HUD draw.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "RenderHUD",
    "typings": [
      "(this: void, x: number, y: number, w: number, h: number): void"
    ]
  },
  {
    "comments": [
      "\nThis applies the changes made to map lighting using @engine.LightStyle.\n",
      "@name render.RedownloadAllLightmaps",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/RedownloadAllLightmaps",
      "@param {void} this - no description",
      "@param {boolean} DoStaticProps - When true, this will also apply lighting changes to static props. This is really slow on large maps.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "RedownloadAllLightmaps",
    "typings": [
      "(this: void, DoStaticProps?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReads the color of the specified pixel from the RenderTarget sent by @render.CapturePixels\n",
      "@name render.ReadPixel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ReadPixel",
      "@param {void} this - no description",
      "@param {number} x - The x coordinate.",
      "@param {number} y - The y coordinate.",
      "@returns {number} - r",
      "@returns {number} - g",
      "@returns {number} - b",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "render",
    "name": "ReadPixel",
    "typings": [
      "(this: void, x: number, y: number): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nEnables the flashlight projection for the upcoming rendering.\n",
      "@name render.PushFlashlightMode",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PushFlashlightMode",
      "@bug #3029 This will leave models lit under specific conditions.",
      "@param {void} this - no description",
      "@param {boolean} enable - Whether the flashlight mode should be enabled or disabled.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PushFlashlightMode",
    "typings": [
      "(this: void, enable?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nPushes a texture filter onto the minification texture filter stack.\n",
      "@name render.PushFilterMin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PushFilterMin",
      "@param {void} this - no description",
      "@param {TEXFILTER} texFilterType - The texture filter type, see @TEXFILTER enum",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PushFilterMin",
    "typings": [
      "(this: void, texFilterType: TEXFILTER): void"
    ]
  },
  {
    "comments": [
      "\nPushes the current render target and viewport to the RT stack then sets a new current render target and viewport. If the viewport is not specified, the dimensions of the render target are used instead.\nThis is similar to a call to @render.SetRenderTarget and @render.SetViewPort where the current render target and viewport have been saved beforehand, except the viewport isn't clipped to screen bounds.\nSee also @render.PopRenderTarget.\n",
      "@name render.PushRenderTarget",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PushRenderTarget",
      "@note If you want to render to the render target in 2d mode and it is not the same size as the screen, use @cam.Start2D and @cam.End2D.",
      "@note If the render target is bigger than the screen, rendering done with the surface library will be clipped to the screen bounds unless you call @surface.DisableClipping",
      "@param {void} this - no description",
      "@param {ITexture} texture - The new render target to be used.",
      "@param {number} x - X origin of the viewport.",
      "@param {number} y - Y origin of the viewport.",
      "@param {number} w - Width of the viewport.",
      "@param {number} h - Height of the viewport",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PushRenderTarget",
    "typings": [
      "(this: void, texture: ITexture, x?: number, y?: number, w?: number, h?: number): void"
    ]
  },
  {
    "comments": [
      "\nPushes a texture filter onto the magnification texture filter stack.\n",
      "@name render.PushFilterMag",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PushFilterMag",
      "@param {void} this - no description",
      "@param {TEXFILTER} texFilterType - The texture filter type, see @TEXFILTER enum",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PushFilterMag",
    "typings": [
      "(this: void, texFilterType: TEXFILTER): void"
    ]
  },
  {
    "comments": [
      "\nPushes a new clipping plane of the clip plane stack and sets it as active.\n",
      "@name render.PushCustomClipPlane",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PushCustomClipPlane",
      "@note A max of 2 clip planes are supported on Linux/POSIX, and 6 on Windows.",
      "@param {void} this - no description",
      "@param {Vector} normal - The normal of the clipping plane.",
      "@param {number} distance - The distance of the plane from the world origin. You can use @VectorFuncs:Dot between the normal and any point on the plane to find this, see [Example 1](https://wiki.garrysmod.com/page/#Example).",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PushCustomClipPlane",
    "typings": [
      "(this: void, normal: Vector, distance: number): void"
    ]
  },
  {
    "comments": [
      "\nPops the current flashlight mode from the flashlight mode stack.\n",
      "@name render.PopFlashlightMode",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PopFlashlightMode",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PopFlashlightMode",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nPops the last render target and viewport from the RT stack and sets them as the current render target and viewport.\nThis is should be called to restore the previous render target and viewport after a call to @render.PushRenderTarget.\n",
      "@name render.PopRenderTarget",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PopRenderTarget",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PopRenderTarget",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nPops the current texture minification filter from the filter stack.\nSee @render.PushFilterMin\n",
      "@name render.PopFilterMin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PopFilterMin",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PopFilterMin",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the current active clipping plane from the clip plane stack.\n",
      "@name render.PopCustomClipPlane",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PopCustomClipPlane",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PopCustomClipPlane",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nPops the current texture magnification filter from the filter stack.\nSee @render.PushFilterMag\n",
      "@name render.PopFilterMag",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PopFilterMag",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PopFilterMag",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "@name render.PerformFullScreenStencilOperation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/PerformFullScreenStencilOperation",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "PerformFullScreenStencilOperation",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nOverrides the write behaviour of all next rendering operations towards the depth buffer.\n",
      "@name render.OverrideDepthEnable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/OverrideDepthEnable",
      "@param {void} this - no description",
      "@param {boolean} enable - Enable or disable the override.",
      "@param {boolean} shouldWrite - If the previous argument is true, sets whether the next rendering operations should write to the depth buffer or not. Has no effect if the previous argument is false.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "OverrideDepthEnable",
    "typings": [
      "(this: void, enable: boolean, shouldWrite: boolean): void"
    ]
  },
  {
    "comments": [
      "\nOverrides the write behaviour of all next rendering operations towards the color channel of the current render target.\n",
      "@name render.OverrideColorWriteEnable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/OverrideColorWriteEnable",
      "@param {void} this - no description",
      "@param {boolean} enable - Enable or disable the override.",
      "@param {boolean} shouldWrite - If the previous argument is true, sets whether the next rendering operations should write to the color channel or not. Has no effect if the previous argument is false.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "OverrideColorWriteEnable",
    "typings": [
      "(this: void, enable: boolean, shouldWrite: boolean): void"
    ]
  },
  {
    "comments": [
      "\nOverrides the internal graphical functions used to determine the final color and alpha of a rendered texture.\nSee also @render.OverrideAlphaWriteEnable.\n",
      "@name render.OverrideBlend",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/OverrideBlend",
      "@note Doing @surface library draw calls with alpha set to 0 is a no-op and won't have an effect.",
      "@param {void} this - no description",
      "@param {boolean} enabled - true to enable, false to disable. No other arguments are required when disabling.",
      "@param {BLEND} srcBlend - The source color blend function @BLEND enum. Determines how a rendered texture's final color should be calculated.",
      "@param {BLEND} destBlend - The destination color blend function @BLEND enum.",
      "@param {BLENDFUNC} blendFunc - The blend mode used for drawing the color layer @BLENDFUNC enum.",
      "@param {BLEND} srcBlendAlpha - The source alpha blend function @BLEND enum. Determines how a rendered texture's final alpha should be calculated.",
      "@param {BLEND} destBlendAlpha - The destination alpha blend function @BLEND enum.",
      "@param {BLENDFUNC} blendFuncAlpha - The blend mode used for drawing the alpha layer @BLENDFUNC enum.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "OverrideBlend",
    "typings": [
      "(this: void, enabled: boolean, srcBlend: BLEND, destBlend: BLEND, blendFunc: BLENDFUNC, srcBlendAlpha?: BLEND, destBlendAlpha?: BLEND, blendFuncAlpha?: BLENDFUNC): void"
    ]
  },
  {
    "comments": [
      "\nOverrides the internal graphical functions used to determine the final color and alpha of a rendered texture.\nSee also @render.OverrideAlphaWriteEnable.\n",
      "@name render.OverrideBlendFunc",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/OverrideBlendFunc",
      "@note Doing @surface library draw calls with alpha set to 0 is a no-op and will never have any effect.",
      "@param {void} this - no description",
      "@param {boolean} enabled - true to enable, false to disable. No other arguments are required when disabling.",
      "@param {BLEND} srcBlend - The source color blend function @BLEND enum. Determines how a rendered texture's final color should be calculated.",
      "@param {number} destBlend - no description",
      "@param {BLEND} srcBlendAlpha - The source alpha blend function @BLEND enum. Determines how a rendered texture's final alpha should be calculated.",
      "@param {number} destBlendAlpha - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "OverrideBlendFunc",
    "typings": [
      "(this: void, enabled: boolean, srcBlend: BLEND, destBlend: number, srcBlendAlpha?: BLEND, destBlendAlpha?: number): void"
    ]
  },
  {
    "comments": [
      "\nOverrides the write behaviour of all next rendering operations towards the alpha channel of the current render target.\nSee also @render.OverrideBlend.\n",
      "@name render.OverrideAlphaWriteEnable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/OverrideAlphaWriteEnable",
      "@note Doing @surface library draw calls with alpha set to 0 is a no-op and will never have any effect.",
      "@param {void} this - no description",
      "@param {boolean} enable - Enable or disable the override.",
      "@param {boolean} shouldWrite - If the previous argument is true, sets whether the next rendering operations should write to the alpha channel or not. Has no effect if the previous argument is false.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "OverrideAlphaWriteEnable",
    "typings": [
      "(this: void, enable: boolean, shouldWrite: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets a material to override a model's default material. Similar to @EntityFuncs:SetMaterial except it uses an @IMaterial type argument and it can be used to change materials on models which are part of the world geometry.\n",
      "@name render.ModelMaterialOverride",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ModelMaterialOverride",
      "@param {void} this - no description",
      "@param {IMaterial} material - The material override.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "ModelMaterialOverride",
    "typings": [
      "(this: void, material: IMaterial): void"
    ]
  },
  {
    "comments": [
      "\nCreates a new @ClientsideModel function, renders it at the specified pos/ang, and removes it. Can also be given an existing @CSEnt type to reuse instead.\n",
      "@name render.Model",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/Model",
      "@note This function is only meant to be used in a single render pass kind of scenario, if you need to render a model continuously, use a cached @ClientsideModel function and provide it as a second argument.",
      "@bug #3307 Using this with a map model (@game.GetWorld():[GetModel](https://wiki.garrysmod.com/page/Entity/GetModel)()) crashes the game.",
      "@param {void} this - no description",
      "@param {IrenderModelSettings} settings - Requires:",
      "@param {CSEnt} ent - If provided, this entity will be reused instead of creating a new one with @ClientsideModel function. Note that the ent's model, position and angles will be changed, and @EntityFuncs:SetNoDraw will be set to true.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "Model",
    "typings": [
      "(this: void, settings: IrenderModelSettings, ent?: CSEnt): void"
    ],
    "types": [
      {
        "comments": [
          "model - {string}: The model to draw"
        ],
        "type": "interface",
        "name": "model",
        "typing": "string",
        "context": "IrenderModelSettings"
      },
      {
        "comments": [
          "pos - {Vector}: The position to draw the model at"
        ],
        "type": "interface",
        "name": "pos",
        "typing": "Vector",
        "context": "IrenderModelSettings"
      },
      {
        "comments": [
          "angle - {Angle}: The angles to draw the model at"
        ],
        "type": "interface",
        "name": "angle",
        "typing": "Angle",
        "context": "IrenderModelSettings"
      }
    ]
  },
  {
    "comments": [
      "\nReturns the maximum texture width the renderer can handle.\n",
      "@name render.MaxTextureWidth",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/MaxTextureWidth",
      "@param {void} this - no description",
      "@returns {number} - maxTextureWidth"
    ],
    "type": "func",
    "context": "render",
    "name": "MaxTextureWidth",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum texture height the renderer can handle.\n",
      "@name render.MaxTextureHeight",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/MaxTextureHeight",
      "@param {void} this - no description",
      "@returns {number} - maxTextureHeight"
    ],
    "type": "func",
    "context": "render",
    "name": "MaxTextureHeight",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nSimilar to @render.MaterialOverride, but overrides the materials per index.\n@render.MaterialOverride overrides effects of this function.\n",
      "@name render.MaterialOverrideByIndex",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/MaterialOverrideByIndex",
      "@param {void} this - no description",
      "@param {number} index - Starts with 0, the index of the material to override",
      "@param {IMaterial} material - The material to override with",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "MaterialOverrideByIndex",
    "typings": [
      "(this: void, index: number, material: IMaterial): void"
    ]
  },
  {
    "comments": [
      "\nSets the render material override for all next calls of @EntityFuncs:DrawModel. Also overrides @render.MaterialOverrideByIndex.\n",
      "@name render.MaterialOverride",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/MaterialOverride",
      "@param {void} this - no description",
      "@param {IMaterial} material - The material to use as override, use nil to disable.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "MaterialOverride",
    "typings": [
      "(this: void, material: IMaterial): void"
    ]
  },
  {
    "comments": [
      "\nPerforms a render trace and returns the color of the surface hit, this uses a low res version of the texture.\n",
      "@name render.GetSurfaceColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetSurfaceColor",
      "@param {void} this - no description",
      "@param {Vector} startPos - The start position to trace from.",
      "@param {Vector} endPos - The end position of the trace.",
      "@returns {Vector} - color"
    ],
    "type": "func",
    "context": "render",
    "name": "GetSurfaceColor",
    "typings": [
      "(this: void, startPos: Vector, endPos: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns a vector representing linear tone mapping scale.\n",
      "@name render.GetToneMappingScaleLinear",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetToneMappingScaleLinear",
      "@param {void} this - no description",
      "@returns {Vector} - The vector representing linear tone mapping scale."
    ],
    "type": "func",
    "context": "render",
    "name": "GetToneMappingScaleLinear",
    "typings": [
      "(this: void): Vector"
    ]
  },
  {
    "comments": [
      "\n@render/getsuperfptex\n",
      "@name render.GetSuperFPTex2",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetSuperFPTex2",
      "@param {void} this - no description",
      "@returns {ITexture} - Render target named \"__rt_supertexture2\""
    ],
    "type": "func",
    "context": "render",
    "name": "GetSuperFPTex2",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "@name render.GetSmallTex1",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetSmallTex1",
      "@param {void} this - no description",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetSmallTex1",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "\nReturns a floating point texture the same resolution as the screen.\n",
      "@name render.GetSuperFPTex",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetSuperFPTex",
      "@note The @gmodscreenspace shader doesn't behave as expected when drawing a floating-point texture to an integer texture (e.g. the default render target). Use an UnlitGeneric material instead",
      "@param {void} this - no description",
      "@returns {ITexture} - Render target named \"__rt_supertexture1\""
    ],
    "type": "func",
    "context": "render",
    "name": "GetSuperFPTex",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "@name render.GetSmallTex0",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetSmallTex0",
      "@param {void} this - no description",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetSmallTex0",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "\nObtain an @ITexture type of the screen. You must call @render.UpdateScreenEffectTexture in order to update this texture with the currently rendered scene.\nThis texture is mainly used within @GamemodeHooks:RenderScreenspaceEffects\n",
      "@name render.GetScreenEffectTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetScreenEffectTexture",
      "@param {void} this - no description",
      "@param {number} textureIndex - Max index is 3, but engine only creates the first two for you.",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetScreenEffectTexture",
    "typings": [
      "(this: void, textureIndex?: number): ITexture"
    ]
  },
  {
    "comments": [
      "\nAlias of @render.GetPowerOfTwoTexture.\n",
      "@name render.GetRefractTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetRefractTexture",
      "@param {void} this - no description",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetRefractTexture",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "\nReturns the currently active render target.\nInstead of saving the current render target using this function and restoring to it later, it is generally better practice to use @render.PushRenderTarget and @render.PopRenderTarget.\n",
      "@name render.GetRenderTarget",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetRenderTarget",
      "@param {void} this - no description",
      "@returns {ITexture} - The currently active Render Target"
    ],
    "type": "func",
    "context": "render",
    "name": "GetRenderTarget",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "\nReturns the _rt_ResolvedFullFrameDepth texture for SSAO depth.\n",
      "@name render.GetResolvedFullFrameDepth",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetResolvedFullFrameDepth",
      "@param {void} this - no description",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetResolvedFullFrameDepth",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "@name render.GetMorphTex1",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetMorphTex1",
      "@param {void} this - no description",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetMorphTex1",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "@name render.GetMorphTex0",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetMorphTex0",
      "@param {void} this - no description",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetMorphTex0",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "@name render.GetMoBlurTex1",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetMoBlurTex1",
      "@param {void} this - no description",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetMoBlurTex1",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "\nReturns the render target's power of two texture.\n",
      "@name render.GetPowerOfTwoTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetPowerOfTwoTexture",
      "@param {void} this - no description",
      "@returns {ITexture} - The power of two texture, which is **_rt_poweroftwofb** by default."
    ],
    "type": "func",
    "context": "render",
    "name": "GetPowerOfTwoTexture",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "@name render.GetMoBlurTex0",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetMoBlurTex0",
      "@param {void} this - no description",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetMoBlurTex0",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "\nGets the light exposure on the specified position.\n",
      "@name render.GetLightColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetLightColor",
      "@param {void} this - no description",
      "@param {Vector} position - The position of the surface to get the light from.",
      "@returns {Vector} - lightColor"
    ],
    "type": "func",
    "context": "render",
    "name": "GetLightColor",
    "typings": [
      "(this: void, position: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the fog mode.\n",
      "@name render.GetFogMode",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetFogMode",
      "@param {void} this - no description",
      "@returns {MATERIAL_FOG} - Fog mode, see @MATERIAL_FOG enum"
    ],
    "type": "func",
    "context": "render",
    "name": "GetFogMode",
    "typings": [
      "(this: void): MATERIAL_FOG"
    ]
  },
  {
    "comments": [
      "\nReturns the _rt_FullFrameDepth texture. Alias of _rt_PowerOfTwoFB\n",
      "@name render.GetFullScreenDepthTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetFullScreenDepthTexture",
      "@param {void} this - no description",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetFullScreenDepthTexture",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "\nReturns the fog start and end distance.\n",
      "@name render.GetFogDistances",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetFogDistances",
      "@param {void} this - no description",
      "@returns {number} - Fog start distance set by @render.FogStart",
      "@returns {number} - For end distance set by @render.FogEnd",
      "@returns {number} - Fog Z distance set by @render.SetFogZ",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "render",
    "name": "GetFogDistances",
    "typings": [
      "(this: void): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the current fog color.\n",
      "@name render.GetFogColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetFogColor",
      "@param {void} this - no description",
      "@returns {number} - Red part of the color.",
      "@returns {number} - Green part of the color",
      "@returns {number} - Blue part of the color",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "render",
    "name": "GetFogColor",
    "typings": [
      "(this: void): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum available directX version.\n",
      "@name render.GetDXLevel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetDXLevel",
      "@param {void} this - no description",
      "@returns {number} - dxLevel"
    ],
    "type": "func",
    "context": "render",
    "name": "GetDXLevel",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the current color modulation values as normals.\n",
      "@name render.GetColorModulation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetColorModulation",
      "@param {void} this - no description",
      "@returns {number} - r"
    ],
    "type": "func",
    "context": "render",
    "name": "GetColorModulation",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "@name render.GetBloomTex1",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetBloomTex1",
      "@param {void} this - no description",
      "@returns {ITexture} - no description"
    ],
    "type": "func",
    "context": "render",
    "name": "GetBloomTex1",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "@name render.GetBloomTex0",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetBloomTex0",
      "@param {void} this - no description",
      "@returns {ITexture} - The bloom texture"
    ],
    "type": "func",
    "context": "render",
    "name": "GetBloomTex0",
    "typings": [
      "(this: void): ITexture"
    ]
  },
  {
    "comments": [
      "\nReturns the current alpha blending.\n",
      "@name render.GetBlend",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetBlend",
      "@param {void} this - no description",
      "@returns {number} - blend"
    ],
    "type": "func",
    "context": "render",
    "name": "GetBlend",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the ambient color of the map.\n",
      "@name render.GetAmbientLightColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/GetAmbientLightColor",
      "@param {void} this - no description",
      "@returns {Vector} - color"
    ],
    "type": "func",
    "context": "render",
    "name": "GetAmbientLightColor",
    "typings": [
      "(this: void): Vector"
    ]
  },
  {
    "comments": [
      "\nSets the mode of fog.\n",
      "@name render.FogMode",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/FogMode",
      "@param {void} this - no description",
      "@param {MATERIAL_FOG} fogMode - Fog mode, see @MATERIAL_FOG enum.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "FogMode",
    "typings": [
      "(this: void, fogMode: MATERIAL_FOG): void"
    ]
  },
  {
    "comments": [
      "\nSets the distance at which the fog starts showing up.\n",
      "@name render.FogStart",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/FogStart",
      "@note If used in @GamemodeHooks:SetupSkyboxFog, this value **must** be scaled by the first argument of the hook",
      "@param {void} this - no description",
      "@param {number} fogStart - The distance at which the fog starts showing up.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "FogStart",
    "typings": [
      "(this: void, fogStart: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum density of the fog.\n",
      "@name render.FogMaxDensity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/FogMaxDensity",
      "@param {void} this - no description",
      "@param {number} maxDensity - The maximum density of the fog, 0-1.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "FogMaxDensity",
    "typings": [
      "(this: void, maxDensity: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the at which the fog reaches its max density.\n",
      "@name render.FogEnd",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/FogEnd",
      "@note If used in @GamemodeHooks:SetupSkyboxFog, this value **must** be scaled by the first argument of the hook",
      "@param {void} this - no description",
      "@param {number} distance - The distance at which the fog reaches its max density.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "FogEnd",
    "typings": [
      "(this: void, distance: number): void"
    ]
  },
  {
    "comments": [
      "\nEnds the beam mesh of a beam started with @render.StartBeam.\n",
      "@name render.EndBeam",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/EndBeam",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "EndBeam",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the fog.\n",
      "@name render.FogColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/FogColor",
      "@param {void} this - no description",
      "@param {number} red - Red channel of the fog color, 0 - 255.",
      "@param {number} green - Green channel of the fog color, 0 - 255.",
      "@param {number} blue - Blue channel of the fog color, 0 - 255.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "FogColor",
    "typings": [
      "(this: void, red: number, green: number, blue: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the status of the clip renderer, returning previous state.\n",
      "@name render.EnableClipping",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/EnableClipping",
      "@warning To prevent unintended rendering behavior of other mods/the game, you must reset the clipping state to its previous value.",
      "@bug #3105 Reloading the map does not reset the previous value of this function.",
      "@param {void} this - no description",
      "@param {boolean} state - New clipping state.",
      "@returns {boolean} - Previous clipping state."
    ],
    "type": "func",
    "context": "render",
    "name": "EnableClipping",
    "typings": [
      "(this: void, state: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nDraws a wireframe box in 3D space.\n",
      "@name render.DrawWireframeBox",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawWireframeBox",
      "@rendering function:3d",
      "@param {void} this - no description",
      "@param {Vector} position - Position of the box.",
      "@param {Angle} angle - Angles of the box.",
      "@param {Vector} mins - The lowest corner of the box.",
      "@param {Vector} maxs - The highest corner of the box.",
      "@param {Color} color - The color of the box. Uses the @IColor structure.",
      "@param {boolean} writeZ - Sets whenever to write to the zBuffer.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawWireframeBox",
    "typings": [
      "(this: void, position: Vector, angle: Angle, mins: Vector, maxs: Vector, color?: Color, writeZ?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDraws a wireframe sphere in 3d space.\n",
      "@name render.DrawWireframeSphere",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawWireframeSphere",
      "@rendering function:3d",
      "@param {void} this - no description",
      "@param {Vector} position - Position of the sphere.",
      "@param {number} radius - The size of the sphere.",
      "@param {number} longitudeSteps - The amount of longitude steps.\nThe larger this number is, the smoother the sphere is.",
      "@param {number} latitudeSteps - The amount of latitude steps.\nThe larger this number is, the smoother the sphere is.",
      "@param {Color} color - The color of the wireframe. Uses the @IColor structure.",
      "@param {boolean} writeZ - Whether or not to consider the Z buffer. If false, the wireframe will be drawn over everything currently drawn. If true, it will be drawn with depth considered, as if it were a regular object in 3D space.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawWireframeSphere",
    "typings": [
      "(this: void, position: Vector, radius: number, longitudeSteps: number, latitudeSteps: number, color?: Color, writeZ?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDraws a textured rectangle.\n",
      "@name render.DrawTextureToScreenRect",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawTextureToScreenRect",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {ITexture} tex - The texture to draw",
      "@param {number} x - The x coordinate of the rectangle to draw.",
      "@param {number} y - The y coordinate of the rectangle to draw.",
      "@param {number} width - The width of the rectangle to draw.",
      "@param {number} height - The height of the rectangle to draw.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawTextureToScreenRect",
    "typings": [
      "(this: void, tex: ITexture, x: number, y: number, width: number, height: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws a texture over the whole screen.\n",
      "@name render.DrawTextureToScreen",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawTextureToScreen",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {ITexture} tex - The texture to draw",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawTextureToScreen",
    "typings": [
      "(this: void, tex: ITexture): void"
    ]
  },
  {
    "comments": [
      "\nDraws a sprite in 3D space.\n",
      "@name render.DrawSprite",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawSprite",
      "@rendering function:3d",
      "@param {void} this - no description",
      "@param {Vector} position - Position of the sprite.",
      "@param {number} width - Width of the sprite.",
      "@param {number} height - Height of the sprite.",
      "@param {Color} color - Color of the sprite. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawSprite",
    "typings": [
      "(this: void, position: Vector, width: number, height: number, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nDraws a sphere in 3D space. The material previously set with @render.SetMaterial will be applied the sphere's surface.\nSee also @render.DrawWireframeSphere for a wireframe equivalent.\n",
      "@name render.DrawSphere",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawSphere",
      "@rendering function:3d",
      "@param {void} this - no description",
      "@param {Vector} position - Position of the sphere.",
      "@param {number} radius - Radius of the sphere. Negative radius will make the sphere render inwards rather than outwards.",
      "@param {number} longitudeSteps - The number of longitude steps. This controls the quality of the sphere. Higher quality will lower performance significantly. 50 is a good number to start with.",
      "@param {number} latitudeSteps - The number of latitude steps. This controls the quality of the sphere. Higher quality will lower performance significantly. 50 is a good number to start with.",
      "@param {Color} color - The color of the sphere. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawSphere",
    "typings": [
      "(this: void, position: Vector, radius: number, longitudeSteps: number, latitudeSteps: number, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nDraws the the current material set by @render.SetMaterial to the area specified. Color cannot be customized.\nSee also @render.DrawScreenQuad.\n",
      "@name render.DrawScreenQuadEx",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawScreenQuadEx",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {number} startX - X start position of the rect.",
      "@param {number} startY - Y start position of the rect.",
      "@param {number} width - Width of the rect.",
      "@param {number} height - Height of the rect.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawScreenQuadEx",
    "typings": [
      "(this: void, startX: number, startY: number, width: number, height: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws a line in 3D space.\n",
      "@name render.DrawLine",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawLine",
      "@rendering function:3d",
      "@bug #1086 Enabling this option will cause the line to ignore the color's alpha.",
      "@param {void} this - no description",
      "@param {Vector} startPos - Line start position in world coordinates.",
      "@param {Vector} endPos - Line end position in world coordinates.",
      "@param {Color} color - The color to be used. Uses the @IColor structure.",
      "@param {boolean} writeZ - Whether or not to consider the Z buffer. If false, the line will be drawn over everything currently drawn, if true, the line will be drawn with depth considered, as if it were a regular object in 3D space.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawLine",
    "typings": [
      "(this: void, startPos: Vector, endPos: Vector, color?: Color, writeZ?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDraws the the current material set by @render.SetMaterial to the whole screen. The color cannot be customized.\nSee also @render.DrawScreenQuadEx.\n",
      "@name render.DrawScreenQuad",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawScreenQuad",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawScreenQuad",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nDraws 2 connected triangles. Expects material to be set by @render.SetMaterial.\n",
      "@name render.DrawQuad",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawQuad",
      "@rendering function:3d",
      "@param {void} this - no description",
      "@param {Vector} vert1 - First vertex.",
      "@param {Vector} vert2 - The second vertex.",
      "@param {Vector} vert3 - The third vertex.",
      "@param {Vector} vert4 - The fourth vertex.",
      "@param {Color} color - The color of the quad. See @Color function",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawQuad",
    "typings": [
      "(this: void, vert1: Vector, vert2: Vector, vert3: Vector, vert4: Vector, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nDraws a quad.\n",
      "@name render.DrawQuadEasy",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawQuadEasy",
      "@rendering function:3d",
      "@param {void} this - no description",
      "@param {Vector} position - Origin of the sprite.",
      "@param {Vector} normal - The face direction of the quad.",
      "@param {number} width - The width of the quad.",
      "@param {number} height - The height of the quad.",
      "@param {Color} color - The color of the quad. Uses the @IColor structure.",
      "@param {number} rotation - The rotation of the quad counter-clockwise in degrees around the normal axis. In other words, the quad will always face the same way but this will rotate its corners.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawQuadEasy",
    "typings": [
      "(this: void, position: Vector, normal: Vector, width: number, height: number, color: Color, rotation?: number): void"
    ]
  },
  {
    "comments": [
      "\nChanges the cull mode.\n",
      "@name render.CullMode",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/CullMode",
      "@param {void} this - no description",
      "@param {MATERIAL_CULLMODE} cullMode - Cullmode, see @MATERIAL_CULLMODE enum",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "CullMode",
    "typings": [
      "(this: void, cullMode: MATERIAL_CULLMODE): void"
    ]
  },
  {
    "comments": [
      "\nSet's the depth range of the upcoming render.\n",
      "@name render.DepthRange",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DepthRange",
      "@param {void} this - no description",
      "@param {number} depthmin - The minimum depth of the upcoming render. 0.0 = render normally; 1.0 = render nothing",
      "@param {number} depthmax - The maximum depth of the upcoming render. 0.0 = render everything (through walls); 1.0 = render normally",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DepthRange",
    "typings": [
      "(this: void, depthmin: number, depthmax: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws a box in 3D space.\n",
      "@name render.DrawBox",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawBox",
      "@rendering function:3d",
      "@param {void} this - no description",
      "@param {Vector} position - Origin of the box.",
      "@param {Angle} angles - Orientation of the box.",
      "@param {Vector} mins - Start position of the box, relative to origin.",
      "@param {Vector} maxs - End position of the box, relative to origin.",
      "@param {Color} color - The color of the box. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawBox",
    "typings": [
      "(this: void, position: Vector, angles: Angle, mins: Vector, maxs: Vector, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nDraws textured beam.\n",
      "@name render.DrawBeam",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/DrawBeam",
      "@rendering function:3d",
      "@param {void} this - no description",
      "@param {Vector} startPos - Beam start position.",
      "@param {Vector} endPos - Beam end position.",
      "@param {number} width - The width of the beam.",
      "@param {number} textureStart - The start coordinate of the texture used.",
      "@param {number} textureEnd - The end coordinate of the texture used.",
      "@param {Color} color - The color to be used. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "DrawBeam",
    "typings": [
      "(this: void, startPos: Vector, endPos: Vector, width: number, textureStart: number, textureEnd: number, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nCopies the currently active Render Target to the specified texture.\n",
      "@name render.CopyRenderTargetToTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/CopyRenderTargetToTexture",
      "@param {void} this - no description",
      "@param {ITexture} Target - The texture to copy to",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "CopyRenderTargetToTexture",
    "typings": [
      "(this: void, Target: ITexture): void"
    ]
  },
  {
    "comments": [
      "\nCopies the contents of one texture to another. Only works with rendertargets.\n",
      "@name render.CopyTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/CopyTexture",
      "@param {void} this - no description",
      "@param {ITexture} texture_from - no description",
      "@param {ITexture} texture_to - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "CopyTexture",
    "typings": [
      "(this: void, texture_from: ITexture, texture_to: ITexture): void"
    ]
  },
  {
    "comments": [
      "\nCalculates the light color of a certain surface.\n",
      "@name render.ComputeLighting",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ComputeLighting",
      "@param {void} this - no description",
      "@param {Vector} position - The position of the surface to get the light from.",
      "@param {Vector} normal - The normal of the surface to get the light from.",
      "@returns {Vector} - A vector representing the light at that point."
    ],
    "type": "func",
    "context": "render",
    "name": "ComputeLighting",
    "typings": [
      "(this: void, position: Vector, normal: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nCalculates the lighting caused by dynamic lights for the specified surface.\n",
      "@name render.ComputeDynamicLighting",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ComputeDynamicLighting",
      "@param {void} this - no description",
      "@param {Vector} position - The position to sample from.",
      "@param {Vector} normal - The normal of the surface.",
      "@returns {Vector} - A vector representing the light at that point."
    ],
    "type": "func",
    "context": "render",
    "name": "ComputeDynamicLighting",
    "typings": [
      "(this: void, position: Vector, normal: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nSets the stencil value in a specified rect.\nThis is **not** affected by @render.SetStencilWriteMask\n",
      "@name render.ClearStencilBufferRectangle",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ClearStencilBufferRectangle",
      "@param {void} this - no description",
      "@param {number} originX - X origin of the rectangle.",
      "@param {number} originY - Y origin of the rectangle.",
      "@param {number} endX - The end X coordinate of the rectangle.",
      "@param {number} endY - The end Y coordinate of the rectangle.",
      "@param {number} stencilValue - Value to set cleared stencil buffer to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "ClearStencilBufferRectangle",
    "typings": [
      "(this: void, originX: number, originY: number, endX: number, endY: number, stencilValue: number): void"
    ]
  },
  {
    "comments": [
      "\nResets all values in the stencil buffer to zero.\n",
      "@name render.ClearStencil",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ClearStencil",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "ClearStencil",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nResets the depth buffer.\n",
      "@name render.ClearDepth",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ClearDepth",
      "@bug #3317 This function also clears the stencil buffer. Use @render.Clear in the meantime.",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "ClearDepth",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nClears a render target\nIt uses @render.Clear then @render.SetRenderTarget on the modified render target.\n",
      "@name render.ClearRenderTarget",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ClearRenderTarget",
      "@param {void} this - no description",
      "@param {ITexture} texture - no description",
      "@param {Color} color - The color, see @IColor structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "ClearRenderTarget",
    "typings": [
      "(this: void, texture: ITexture, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nClears the current rendertarget for obeying the current stencil buffer conditions.\n",
      "@name render.ClearBuffersObeyStencil",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/ClearBuffersObeyStencil",
      "@param {void} this - no description",
      "@param {number} r - Value of the red channel to clear the current rt with.",
      "@param {number} g - Value of the green channel to clear the current rt with.",
      "@param {number} b - Value of the blue channel to clear the current rt with.",
      "@param {number} a - Value of the alpha channel to clear the current rt with.",
      "@param {boolean} depth - Clear the depth buffer.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "ClearBuffersObeyStencil",
    "typings": [
      "(this: void, r: number, g: number, b: number, a: number, depth: boolean): void"
    ]
  },
  {
    "comments": [
      "\nClears the current render target and the specified buffers.\n",
      "@name render.Clear",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/Clear",
      "@bug #2085 This sets the alpha incorrectly for @surface library draw calls for render targets.",
      "@param {void} this - no description",
      "@param {number} r - Red component to clear to.",
      "@param {number} g - Green component to clear to.",
      "@param {number} b - Blue component to clear to.",
      "@param {number} a - Alpha component to clear to.",
      "@param {boolean} clearDepth - Clear the depth.",
      "@param {boolean} clearStencil - Clear the stencil.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "Clear",
    "typings": [
      "(this: void, r: number, g: number, b: number, a: number, clearDepth?: boolean, clearStencil?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDumps the current render target and allows the pixels to be accessed by @render.ReadPixel.\n",
      "@name render.CapturePixels",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/CapturePixels",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "CapturePixels",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nCaptures a part of the current render target and returns the data as a binary string in the given format.\nSince the pixel buffer clears itself every frame, this will return a black screen outside of [render hooks](https://wiki.garrysmod.com/page/Category:Render_Hooks). To capture the user's final view, use @GamemodeHooks:PostRender. This will not capture the Steam overlay or third-party injections (such as the Discord overlay, Overwolf, and advanced cheats) on the user's screen.\n",
      "@name render.Capture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/Capture",
      "@bug #2571 This sets the alpha channel incorrectly in PNG mode, causing the foreground to be rendered almost completely transparent.",
      "@param {void} this - no description",
      "@param {RenderCaptureData} captureData - Parameters of the capture. See @RenderCaptureData structure.",
      "@returns {string} - binaryData"
    ],
    "type": "func",
    "context": "render",
    "name": "Capture",
    "typings": [
      "(this: void, captureData: RenderCaptureData): string"
    ]
  },
  {
    "comments": [
      "\nBlurs the render target ( or a given texture )\n",
      "@name render.BlurRenderTarget",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/BlurRenderTarget",
      "@param {void} this - no description",
      "@param {ITexture} rendertarget - The texture to blur",
      "@param {number} blurx - Horizontal amount of blur",
      "@param {number} blury - Vertical amount of blur",
      "@param {number} passes - Amount of passes to go through",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "BlurRenderTarget",
    "typings": [
      "(this: void, rendertarget: ITexture, blurx: number, blury: number, passes: number): void"
    ]
  },
  {
    "comments": [
      "@name render.BrushMaterialOverride",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/BrushMaterialOverride",
      "@warning This function is broken and does absolutely nothing",
      "@param {void} this - no description",
      "@param {IMaterial} mat - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "BrushMaterialOverride",
    "typings": [
      "(this: void, mat?: IMaterial): void"
    ]
  },
  {
    "comments": [
      "\nAdds a beam segment to the beam started by @render.StartBeam.\n",
      "@name render.AddBeam",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/render/AddBeam",
      "@param {void} this - no description",
      "@param {Vector} startPos - Beam start position.",
      "@param {number} width - The width of the beam.",
      "@param {number} textureEnd - The end coordinate of the texture used.",
      "@param {Color} color - The color to be used. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "render",
    "name": "AddBeam",
    "typings": [
      "(this: void, startPos: Vector, width: number, textureEnd: number, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nOpens properties menu for given entity.\n",
      "@name properties.OpenEntityMenu",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/properties/OpenEntityMenu",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to open menu for",
      "@param {table} tr - The trace that is passed as second argument to Action callback of a property",
      "@returns {void}"
    ],
    "type": "func",
    "context": "properties",
    "name": "OpenEntityMenu",
    "typings": [
      "(this: void, ent: Entity, tr: table): void"
    ]
  },
  {
    "comments": [
      "\nChecks if player hovers over any entities and open a properties menu for it.\n",
      "@name properties.OnScreenClick",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/properties/OnScreenClick",
      "@param {void} this - no description",
      "@param {Vector} eyepos - The eye pos of a player",
      "@param {Vector} eyevec - The aim vector of a player",
      "@returns {void}"
    ],
    "type": "func",
    "context": "properties",
    "name": "OnScreenClick",
    "typings": [
      "(this: void, eyepos: Vector, eyevec: Vector): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if given entity can be targeted by the player via the properties system.\nThis should be used serverside in your properties to prevent abuse by clientside scripting.\n",
      "@name properties.CanBeTargeted",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/properties/CanBeTargeted",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to test",
      "@param {Player} ply - If given, will also perform a distance check based on the entity's Orientated Bounding Box.",
      "@returns {boolean} - True if entity can be targeted, false otherwise"
    ],
    "type": "func",
    "context": "properties",
    "name": "CanBeTargeted",
    "typings": [
      "(this: void, ent: Entity, ply: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns an entity player is hovering over with his cursor.\n",
      "@name properties.GetHovered",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/properties/GetHovered",
      "@param {void} this - no description",
      "@param {Vector} pos - Eye position of local player, @EntityFuncs:EyePos",
      "@param {Vector} aimVec - Aim vector of local player, @Player:GetAimVector",
      "@returns {Entity} - The hovered entity"
    ],
    "type": "func",
    "context": "properties",
    "name": "GetHovered",
    "typings": [
      "(this: void, pos: Vector, aimVec: Vector): Entity"
    ]
  },
  {
    "comments": [
      "\nAdd properties to the properties module\n",
      "@name properties.Add",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/properties/Add",
      "@param {void} this - no description",
      "@param {string} name - A unique name used to identify the property",
      "@param {PropertyAdd} propertyData - A table that defines the property. Uses the @PropertyAdd structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "properties",
    "name": "Add",
    "typings": [
      "(this: void, name: string, propertyData: PropertyAdd): void"
    ]
  },
  {
    "comments": [
      "\nUpdates the Projected Light and applies all previously set parameters.\n",
      "@name ProjectedTexture:Update",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/Update",
      "@param {ProjectedTexture} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "Update",
    "typings": [
      "(this: ProjectedTexture): void"
    ]
  },
  {
    "comments": [
      "\nSets the vertical angle of projection without affecting the horizontal angle.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetVerticalFOV",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetVerticalFOV",
      "@param {ProjectedTexture} this - no description",
      "@param {number} vFOV - The new vertical Field Of View for the projected texture. Must be in range between 0 and 180.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetVerticalFOV",
    "typings": [
      "(this: ProjectedTexture, vFOV: number): void"
    ]
  },
  {
    "comments": [
      "\nFor animated textures, this will choose which frame in the animation will be projected.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetTextureFrame",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetTextureFrame",
      "@param {ProjectedTexture} this - no description",
      "@param {number} frame - The frame index to use.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetTextureFrame",
    "typings": [
      "(this: ProjectedTexture, frame: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the texture to be projected.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetTexture",
      "@param {ProjectedTexture} this - no description",
      "@param {string} texture - The name of the texture. Can also be an @ITexture type.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetTexture",
    "typings": [
      "(this: ProjectedTexture, texture: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the quadratic attenuation of the projected texture.\nSee also @ProjectedTexture:SetLinearAttenuation and @ProjectedTexture:SetConstantAttenuation.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetQuadraticAttenuation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetQuadraticAttenuation",
      "@param {ProjectedTexture} this - no description",
      "@param {number} quadAtten - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetQuadraticAttenuation",
    "typings": [
      "(this: ProjectedTexture, quadAtten: number): void"
    ]
  },
  {
    "comments": [
      "\nMove the Projected Texture to the specified position.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetPos",
      "@param {ProjectedTexture} this - no description",
      "@param {Vector} position - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetPos",
    "typings": [
      "(this: ProjectedTexture, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nChanges the current projected texture between orthographic and perspective projection.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetOrthographic",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetOrthographic",
      "@param {ProjectedTexture} this - no description",
      "@param {boolean} orthographic - When false, all other arguments are ignored and the texture is reset to perspective projection.",
      "@param {number} left - The amount of units left from the projected texture's origin to project.",
      "@param {number} top - The amount of units upwards from the projected texture's origin to project.",
      "@param {number} right - The amount of units right from the projected texture's origin to project.",
      "@param {number} bottom - The amount of units downwards from the projected texture's origin to project.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetOrthographic",
    "typings": [
      "(this: ProjectedTexture, orthographic: boolean, left: number, top: number, right: number, bottom: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the distance at which the projected texture begins its projection.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetNearZ",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetNearZ",
      "@note Setting this to 0 will disable the projected texture completely! This may be useful if you want to disable a projected texture without actually removing it",
      "@note This seems to affect the rendering of shadows - a higher Near Z value will have shadows begin to render closer to their casting object. Comparing a low Near Z value (like 1) with a normal one (12) or high one (1000) is the easiest way to understand this artifact",
      "@param {ProjectedTexture} this - no description",
      "@param {number} nearZ - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetNearZ",
    "typings": [
      "(this: ProjectedTexture, nearZ: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the linear attenuation of the projected texture.\nSee also @ProjectedTexture:SetConstantAttenuation and @ProjectedTexture:SetQuadraticAttenuation.\nThe default value of linear attenuation when the projected texture is created is 100. (others are 0, as you are not supposed to mix them)\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetLinearAttenuation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetLinearAttenuation",
      "@param {ProjectedTexture} this - no description",
      "@param {number} linearAtten - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetLinearAttenuation",
    "typings": [
      "(this: ProjectedTexture, linearAtten: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the horizontal angle of projection without affecting the vertical angle.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetHorizontalFOV",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetHorizontalFOV",
      "@param {ProjectedTexture} this - no description",
      "@param {number} hFOV - The new horizontal Field Of View for the projected texture. Must be in range between 0 and 180.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetHorizontalFOV",
    "typings": [
      "(this: ProjectedTexture, hFOV: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the angle of projection.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetFOV",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetFOV",
      "@param {ProjectedTexture} this - no description",
      "@param {number} fov - Must be higher than 0 and lower than 180",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetFOV",
    "typings": [
      "(this: ProjectedTexture, fov: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the distance at which the projected texture ends.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetFarZ",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetFarZ",
      "@param {ProjectedTexture} this - no description",
      "@param {number} farZ - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetFarZ",
    "typings": [
      "(this: ProjectedTexture, farZ: number): void"
    ]
  },
  {
    "comments": [
      "\nEnable or disable shadows cast from the projected texture.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetEnableShadows",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetEnableShadows",
      "@note as with all types of projected textures (including the player's flashlight and env_projectedtexture), there can only be 8 projected textures with shadows enabled in total. This limit can be increased with the launch parameter:\n-numshadowtextures limit\nwhere limit is the new limit. Naturally, many projected lights with shadows enabled will drastically decrease framerate.",
      "@param {ProjectedTexture} this - no description",
      "@param {boolean} newState - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetEnableShadows",
    "typings": [
      "(this: ProjectedTexture, newState: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the constant attenuation of the projected texture.\nSee also @ProjectedTexture:SetLinearAttenuation and @ProjectedTexture:SetQuadraticAttenuation.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetConstantAttenuation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetConstantAttenuation",
      "@param {ProjectedTexture} this - no description",
      "@param {number} constAtten - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetConstantAttenuation",
    "typings": [
      "(this: ProjectedTexture, constAtten: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the projected texture.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetColor",
      "@param {ProjectedTexture} this - no description",
      "@param {Color} color - Must be a @IColor structure.\nUnlike other projected textures, this color can only go up to 255.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetColor",
    "typings": [
      "(this: ProjectedTexture, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the brightness of the projected texture.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetBrightness",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetBrightness",
      "@param {ProjectedTexture} this - no description",
      "@param {number} brightness - The brightness to give the projected texture.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetBrightness",
    "typings": [
      "(this: ProjectedTexture, brightness: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the angles (direction) of the projected texture.\nYou must call @ProjectedTexture:Update after using this function for it to take effect.\n",
      "@name ProjectedTexture:SetAngles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/SetAngles",
      "@param {ProjectedTexture} this - no description",
      "@param {Angle} angle - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "SetAngles",
    "typings": [
      "(this: ProjectedTexture, angle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the projected texture. After calling this, @ProjectedTexture:IsValid will return false, and any hooks with the projected texture as the identifier will be automatically deleted.\n",
      "@name ProjectedTexture:Remove",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/Remove",
      "@param {ProjectedTexture} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "Remove",
    "typings": [
      "(this: ProjectedTexture): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if the projected texture is valid (i.e. has not been removed), false otherwise.\nInstead of calling this directly it's a good idea to call @IsValid function in case the variable is nil.\n```IsValid( ptexture )```\nThis not only checks whether the projected texture is valid - but also checks whether it's nil.\n",
      "@name ProjectedTexture:IsValid",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/IsValid",
      "@param {ProjectedTexture} this - no description",
      "@returns {boolean} - Whether the projected texture is valid."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "IsValid",
    "typings": [
      "(this: ProjectedTexture): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the vertical FOV of the ProjectedTexture, which was previously set by @ProjectedTexture:SetVerticalFOV or @ProjectedTexture:SetFOV\n",
      "@name ProjectedTexture:GetVerticalFOV",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetVerticalFOV",
      "@param {ProjectedTexture} this - no description",
      "@returns {number} - The vertical FOV of the ProjectedTexture."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetVerticalFOV",
    "typings": [
      "(this: ProjectedTexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the texture frame of the ProjectedTexture, which was previously set by @ProjectedTexture:SetTextureFrame\n",
      "@name ProjectedTexture:GetTextureFrame",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetTextureFrame",
      "@param {ProjectedTexture} this - no description",
      "@returns {number} - The texture frame."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetTextureFrame",
    "typings": [
      "(this: ProjectedTexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the texture of the ProjectedTexture, which was previously set by @ProjectedTexture:SetTexture\n",
      "@name ProjectedTexture:GetTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetTexture",
      "@param {ProjectedTexture} this - no description",
      "@returns {ITexture} - The texture of the ProjectedTexture."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetTexture",
    "typings": [
      "(this: ProjectedTexture): ITexture"
    ]
  },
  {
    "comments": [
      "\nReturns the quadratic attenuation of the projected texture, which can also be set by @ProjectedTexture:SetQuadraticAttenuation.\n",
      "@name ProjectedTexture:GetQuadraticAttenuation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetQuadraticAttenuation",
      "@param {ProjectedTexture} this - no description",
      "@returns {number} - The quadratic attenuation"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetQuadraticAttenuation",
    "typings": [
      "(this: ProjectedTexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the position of the ProjectedTexture, which was previously set by @ProjectedTexture:SetPos\n",
      "@name ProjectedTexture:GetPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetPos",
      "@param {ProjectedTexture} this - no description",
      "@returns {Vector} - The position of the ProjectedTexture."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetPos",
    "typings": [
      "(this: ProjectedTexture): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the current orthographic settings of the Projected Texture. To set these values, use @ProjectedTexture:SetOrthographic.\n",
      "@name ProjectedTexture:GetOrthographic",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetOrthographic",
      "@param {ProjectedTexture} this - no description",
      "@returns {boolean} - Whether or not this projected texture is orthographic. When false, nothing else is returned.",
      "@returns {number} - left",
      "@returns {number} - top",
      "@returns {number} - right",
      "@returns {number} - bottom",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetOrthographic",
    "typings": [
      "(this: ProjectedTexture): [boolean, number, number, number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the NearZ value of the ProjectedTexture, which was previously set by @ProjectedTexture:SetNearZ\n",
      "@name ProjectedTexture:GetNearZ",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetNearZ",
      "@param {ProjectedTexture} this - no description",
      "@returns {number} - NearZ of the ProjectedTexture."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetNearZ",
    "typings": [
      "(this: ProjectedTexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the linear attenuation of the projected texture, which can also be set by @ProjectedTexture:SetLinearAttenuation.\n",
      "@name ProjectedTexture:GetLinearAttenuation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetLinearAttenuation",
      "@param {ProjectedTexture} this - no description",
      "@returns {number} - The linear attenuation."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetLinearAttenuation",
    "typings": [
      "(this: ProjectedTexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the horizontal FOV of the ProjectedTexture, which was previously set by @ProjectedTexture:SetHorizontalFOV or @ProjectedTexture:SetFOV\n",
      "@name ProjectedTexture:GetHorizontalFOV",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetHorizontalFOV",
      "@param {ProjectedTexture} this - no description",
      "@returns {number} - The horizontal FOV of the ProjectedTexture."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetHorizontalFOV",
    "typings": [
      "(this: ProjectedTexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the projection distance of the ProjectedTexture, which was previously set by @ProjectedTexture:SetFarZ\n",
      "@name ProjectedTexture:GetFarZ",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetFarZ",
      "@param {ProjectedTexture} this - no description",
      "@returns {number} - The projection distance of the ProjectedTexture."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetFarZ",
    "typings": [
      "(this: ProjectedTexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether shadows are enabled for this ProjectedTexture, which was previously set by @ProjectedTexture:SetEnableShadows\n",
      "@name ProjectedTexture:GetEnableShadows",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetEnableShadows",
      "@param {ProjectedTexture} this - no description",
      "@returns {boolean} - Whether shadows are enabled."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetEnableShadows",
    "typings": [
      "(this: ProjectedTexture): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the constant attenuation of the projected texture, which can also be set by @ProjectedTexture:SetConstantAttenuation.\n",
      "@name ProjectedTexture:GetConstantAttenuation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetConstantAttenuation",
      "@param {ProjectedTexture} this - no description",
      "@returns {number} - The constant attenuation"
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetConstantAttenuation",
    "typings": [
      "(this: ProjectedTexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the color of the ProjectedTexture, which was previously set by @ProjectedTexture:SetColor.\n",
      "@name ProjectedTexture:GetColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetColor",
      "@bug #2407 The returned color will not have the color metatable.",
      "@param {ProjectedTexture} this - no description",
      "@returns {IColor} - @IColor structure, the color of the ProjectedTexture."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetColor",
    "typings": [
      "(this: ProjectedTexture): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns the brightness of the ProjectedTexture, which was previously set by @ProjectedTexture:SetBrightness\n",
      "@name ProjectedTexture:GetBrightness",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetBrightness",
      "@param {ProjectedTexture} this - no description",
      "@returns {number} - The brightness of the ProjectedTexture."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetBrightness",
    "typings": [
      "(this: ProjectedTexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the angle of the ProjectedTexture, which were previously set by @ProjectedTexture:SetAngles\n",
      "@name ProjectedTexture:GetAngles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ProjectedTexture/GetAngles",
      "@param {ProjectedTexture} this - no description",
      "@returns {Angle} - The angles of the ProjectedTexture."
    ],
    "type": "class",
    "context": "ProjectedTexture",
    "name": "GetAngles",
    "typings": [
      "(this: ProjectedTexture): Angle"
    ]
  },
  {
    "comments": [
      "\nRenames preset.\n",
      "@name presets.Rename",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/presets/Rename",
      "@param {void} this - no description",
      "@param {string} groupname - Preset group name",
      "@param {string} oldname - Old preset name",
      "@param {string} newname - New preset name",
      "@returns {void}"
    ],
    "type": "func",
    "context": "presets",
    "name": "Rename",
    "typings": [
      "(this: void, groupname: string, oldname: string, newname: string): void"
    ]
  },
  {
    "comments": [
      "\nRemoves a preset entry from a preset group.\n",
      "@name presets.Remove",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/presets/Remove",
      "@param {void} this - no description",
      "@param {string} groupname - Preset group to remove from",
      "@param {string} name - Name of preset to remove",
      "@returns {void}"
    ],
    "type": "func",
    "context": "presets",
    "name": "Remove",
    "typings": [
      "(this: void, groupname: string, name: string): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally to ask the player if they want to override an already existing preset.\n",
      "@name presets.OverwritePresetPrompt",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/presets/OverwritePresetPrompt",
      "@internal",
      "@param {void} this - no description",
      "@param {function} callback - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "presets",
    "name": "OverwritePresetPrompt",
    "typings": [
      "(this: void, callback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nReturns a table with preset names and values from a single preset group.\n",
      "@name presets.GetTable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/presets/GetTable",
      "@param {void} this - no description",
      "@param {string} groupname - Preset group name.",
      "@returns {table} - All presets in specified group."
    ],
    "type": "func",
    "context": "presets",
    "name": "GetTable",
    "typings": [
      "(this: void, groupname: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns whether a preset with given name exists or not\n",
      "@name presets.Exists",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/presets/Exists",
      "@param {void} this - no description",
      "@param {string} type - The preset group name, usually it's tool class name.",
      "@param {string} name - Name of the preset to test",
      "@returns {boolean} - true if the preset does exist"
    ],
    "type": "func",
    "context": "presets",
    "name": "Exists",
    "typings": [
      "(this: void, type: string, name: string): boolean"
    ]
  },
  {
    "comments": [
      "\nUsed internally to tell the player that the name they tried to use in their preset is not acceptable.\n",
      "@name presets.BadNameAlert",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/presets/BadNameAlert",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "presets",
    "name": "BadNameAlert",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds preset to a preset group.\n",
      "@name presets.Add",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/presets/Add",
      "@param {void} this - no description",
      "@param {string} groupname - The preset group name, usually it's tool class name.",
      "@param {string} name - Preset name, must be unique.",
      "@param {table} values - A table of preset console commands.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "presets",
    "name": "Add",
    "typings": [
      "(this: void, groupname: string, name: string, values: table): void"
    ]
  },
  {
    "comments": [
      "\nReturns the simplified name for a valid model path of a player model.\nOpposite of @player_manager.TranslatePlayerModel.\n",
      "@name player_manager.TranslateToPlayerModelName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/TranslateToPlayerModelName",
      "@param {void} this - no description",
      "@param {string} model - The model path to a player model",
      "@returns {string} - The simplified name for that model"
    ],
    "type": "func",
    "context": "player_manager",
    "name": "TranslateToPlayerModelName",
    "typings": [
      "(this: void, model: string): string"
    ]
  },
  {
    "comments": [
      "\nRetrieves correct hands for given player model. By default returns citizen hands.\n",
      "@name player_manager.TranslatePlayerHands",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/TranslatePlayerHands",
      "@param {void} this - no description",
      "@param {string} name - Player model name",
      "@returns {table} - A table with following contents:\n* @string type model - Model of hands\n* @number type skin - Skin of hands\n* @string type body - Bodygroups of hands"
    ],
    "type": "func",
    "context": "player_manager",
    "name": "TranslatePlayerHands",
    "typings": [
      "(this: void, name: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns the valid model path for a simplified name.\n",
      "@name player_manager.TranslatePlayerModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/TranslatePlayerModel",
      "@param {void} this - no description",
      "@param {string} shortName - The short name of the model.",
      "@returns {string} - The valid model path for the short name."
    ],
    "type": "func",
    "context": "player_manager",
    "name": "TranslatePlayerModel",
    "typings": [
      "(this: void, shortName: string): string"
    ]
  },
  {
    "comments": [
      "\nSets a player's class\n",
      "@name player_manager.SetPlayerClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/SetPlayerClass",
      "@param {void} this - no description",
      "@param {Player} ply - Player to set class",
      "@param {string} classname - Name of class to set",
      "@returns {void}"
    ],
    "type": "func",
    "context": "player_manager",
    "name": "SetPlayerClass",
    "typings": [
      "(this: void, ply: Player, classname: string): void"
    ]
  },
  {
    "comments": [
      "\nExecute a named function within the player's set class\n",
      "@name player_manager.RunClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/RunClass",
      "@param {void} this - no description",
      "@param {Player} ply - Player to execute function on.",
      "@param {string} funcName - Name of function.",
      "@param {any[]} ...arguments - Optional arguments. Can be of any type.",
      "@returns {any[]} - The values returned by the called function."
    ],
    "type": "func",
    "context": "player_manager",
    "name": "RunClass",
    "typings": [
      "(this: void, ply: Player, funcName: string, ...arguments: any[]): any[]"
    ]
  },
  {
    "comments": [
      "\nRegister a class metatable to be assigned to players later\n",
      "@name player_manager.RegisterClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/RegisterClass",
      "@param {void} this - no description",
      "@param {string} name - Class name",
      "@param {table} table - Class metatable",
      "@param {string} base - Base class name",
      "@returns {void}"
    ],
    "type": "func",
    "context": "player_manager",
    "name": "RegisterClass",
    "typings": [
      "(this: void, name: string, table: table, base: string): void"
    ]
  },
  {
    "comments": [
      "\nGets a players class\n",
      "@name player_manager.GetPlayerClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/GetPlayerClass",
      "@param {void} this - no description",
      "@param {Player} ply - Player to get class",
      "@returns {string} - The players class"
    ],
    "type": "func",
    "context": "player_manager",
    "name": "GetPlayerClass",
    "typings": [
      "(this: void, ply: Player): string"
    ]
  },
  {
    "comments": [
      "\nApplies basic class variables when the player spawns.\nCalled from @GamemodeHooks:PlayerSpawn in the base gamemode.\n",
      "@name player_manager.OnPlayerSpawn",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/OnPlayerSpawn",
      "@param {void} this - no description",
      "@param {Player} ply - Player to setup",
      "@returns {void}"
    ],
    "type": "func",
    "context": "player_manager",
    "name": "OnPlayerSpawn",
    "typings": [
      "(this: void, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nClears a player's class association by setting their ClassID to 0\n",
      "@name player_manager.ClearPlayerClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/ClearPlayerClass",
      "@param {void} this - no description",
      "@param {Player} ply - Player to clear class from",
      "@returns {void}"
    ],
    "type": "func",
    "context": "player_manager",
    "name": "ClearPlayerClass",
    "typings": [
      "(this: void, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns the entire list of valid player models.\n",
      "@name player_manager.AllValidModels",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/AllValidModels",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "player_manager",
    "name": "AllValidModels",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAssociates a simplified name with a path to a valid player model.\nOnly used internally.\n",
      "@name player_manager.AddValidModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/AddValidModel",
      "@param {void} this - no description",
      "@param {string} name - Simplified name",
      "@param {string} model - Valid PlayerModel path",
      "@returns {void}"
    ],
    "type": "func",
    "context": "player_manager",
    "name": "AddValidModel",
    "typings": [
      "(this: void, name: string, model: string): void"
    ]
  },
  {
    "comments": [
      "\nAssigns view model hands to player model.\n",
      "@name player_manager.AddValidHands",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player manager/AddValidHands",
      "@param {void} this - no description",
      "@param {string} name - Player model name",
      "@param {string} model - Hands model",
      "@param {number} skin - Skin to apply to the hands",
      "@param {string} bodygroups - Bodygroups to apply to the hands",
      "@returns {void}"
    ],
    "type": "func",
    "context": "player_manager",
    "name": "AddValidHands",
    "typings": [
      "(this: void, name: string, model: string, skin: number, bodygroups: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the players voice volume, how loud the player's voice communication currently is, as a normal number. Doesn't work on local player unless the voice_loopback convar is set to 1.\n",
      "@name Player:VoiceVolume",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Player/VoiceVolume",
      "@param {Player} this - no description",
      "@returns {number} - The voice volume."
    ],
    "type": "class",
    "context": "Player",
    "name": "VoiceVolume",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nResets the player's view punch ( @Player:ViewPunch ) effect back to normal.\n",
      "@name Player:ViewPunchReset",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/ViewPunchReset",
      "@param {Player} this - no description",
      "@param {number} tolerance - Reset all ViewPunch below this threshold.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "ViewPunchReset",
    "typings": [
      "(this: Player, tolerance?: number): void"
    ]
  },
  {
    "comments": [
      "\nSimulates a push on the client's screen.\n",
      "@name Player:ViewPunch",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/ViewPunch",
      "@param {Player} this - no description",
      "@param {Angle} PunchAngle - The angle in which to push the player's screen.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "ViewPunch",
    "typings": [
      "(this: Player, PunchAngle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player changes their weapon to another one causing their viewmodel model to change\n",
      "@name PlayerHooks:ViewModelChanged",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/ViewModelChanged",
      "@param {Player} this - no description",
      "@param {Entity} viewmodel - The viewmodel that is changing",
      "@param {string} prev - The old model",
      "@param {string} next - The new model",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "ViewModelChanged",
    "typings": [
      "(this: Player, viewmodel: Entity, prev: string, next: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the player's ID.\nYou can use @Player function() to get the player by their ID.\n",
      "@name Player:UserID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/UserID",
      "@param {Player} this - no description",
      "@returns {number} - The player's user ID"
    ],
    "type": "class",
    "context": "Player",
    "name": "UserID",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nStops the player from spectating another entity.\n",
      "@name Player:UnSpectate",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/UnSpectate",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "UnSpectate",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nUnlocks the player movement if locked previously.\nWill disable godmode for the player if locked previously.\n",
      "@name Player:UnLock",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/UnLock",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "UnLock",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns a table that will stay allocated for the specific player between connects until the server shuts down. Note, that this table is not synchronized between client and server.\n",
      "@name Player:UniqueIDTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/UniqueIDTable",
      "@param {Player} this - no description",
      "@param {any} key - Unique table key.",
      "@returns {table} - The table that contains any info you have put in it."
    ],
    "type": "class",
    "context": "Player",
    "name": "UniqueIDTable",
    "typings": [
      "(this: Player, key: any): table"
    ]
  },
  {
    "comments": [
      "\nReturns a 32 bit integer that remains constant for a player across joins/leaves and across different servers. This can be used when a string is inappropriate - e.g. in a database primary key.\n",
      "@name Player:UniqueID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/UniqueID",
      "@note In Singleplayer, this function will always return 1.",
      "@warning **This function has collisions,** where more than one player has the same UniqueID. It is **highly** recommended to use @Player:AccountID, @Player:SteamID or @Player:SteamID64 instead, which are guaranteed to be unique to each player.",
      "@param {Player} this - no description",
      "@returns {number} - The player's Unique ID"
    ],
    "type": "class",
    "context": "Player",
    "name": "UniqueID",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nUnfreezes all objects the player has frozen with their Physics Gun. Same as double pressing R while holding Physics Gun.\n",
      "@name Player:UnfreezePhysicsObjects",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/UnfreezePhysicsObjects",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "UnfreezePhysicsObjects",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nTranslates @ACT enum according to the holdtype of players currently held weapon.\n",
      "@name Player:TranslateWeaponActivity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/TranslateWeaponActivity",
      "@param {Player} this - no description",
      "@param {ACT} act - The initial @ACT enum",
      "@returns {ACT} - Translated @ACT enum"
    ],
    "type": "class",
    "context": "Player",
    "name": "TranslateWeaponActivity",
    "typings": [
      "(this: Player, act: ACT): ACT"
    ]
  },
  {
    "comments": [
      "\nPerforms a trace hull and applies damage to the entities hit, returns the first entity hit.\n",
      "@name Player:TraceHullAttack",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/TraceHullAttack",
      "@warning Hitting the victim entity with this function in @EntityHooks:OnTakeDamage can cause infinite loops.",
      "@param {Player} this - no description",
      "@param {Vector} startPos - The start position of the hull trace.",
      "@param {Vector} endPos - The end position of the hull trace.",
      "@param {Vector} mins - The minimum coordinates of the hull.",
      "@param {Vector} maxs - The maximum coordinates of the hull.",
      "@param {number} damage - The damage to be applied.",
      "@param {Vector} damageFlags - Bitflag specifying the damage type, see @DMG enum.",
      "@param {number} damageForce - The force to be applied to the hit object.",
      "@param {boolean} damageAllNPCs - Whether to apply damage to all hit NPCs or not.",
      "@returns {Entity} - The hit entity"
    ],
    "type": "class",
    "context": "Player",
    "name": "TraceHullAttack",
    "typings": [
      "(this: Player, startPos: Vector, endPos: Vector, mins: Vector, maxs: Vector, damage: number, damageFlags: Vector, damageForce: number, damageAllNPCs: boolean): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the time in seconds since the player connected.\n",
      "@name Player:TimeConnected",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/TimeConnected",
      "@param {Player} this - no description",
      "@returns {number} - connectTime"
    ],
    "type": "class",
    "context": "Player",
    "name": "TimeConnected",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the player's team ID.\nReturns 0 clientside when the game is not fully loaded.\n",
      "@name Player:Team",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/Team",
      "@param {Player} this - no description",
      "@returns {TEAM} - The player's team's index number, as in the @TEAM enum or a custom team defined in @team.SetUp."
    ],
    "type": "class",
    "context": "Player",
    "name": "Team",
    "typings": [
      "(this: Player): TEAM"
    ]
  },
  {
    "comments": [
      "\nAttempts to switch the player weapon to the one specified in the \"cl_defaultweapon\" convar, if the player does not own the specified weapon nothing will happen.\nIf you want to switch to a specific weapon, use: @Player:SetActiveWeapon\n",
      "@name Player:SwitchToDefaultWeapon",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SwitchToDefaultWeapon",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SwitchToDefaultWeapon",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nPrevents a hint from showing up.\n",
      "@name Player:SuppressHint",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SuppressHint",
      "@note This function is only available in Sandbox and its derivatives",
      "@param {Player} this - no description",
      "@param {string} name - Hint name/class/index to prevent from showing up",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SuppressHint",
    "typings": [
      "(this: Player, name: string): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all weapons from a certain player\n",
      "@name Player:StripWeapons",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/StripWeapons",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "StripWeapons",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the specified weapon class from a certain player\n",
      "@name Player:StripWeapon",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/StripWeapon",
      "@param {Player} this - no description",
      "@param {string} weapon - The weapon class to remove",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "StripWeapon",
    "typings": [
      "(this: Player, weapon: string): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all ammo from the player.\n",
      "@name Player:StripAmmo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/StripAmmo",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "StripAmmo",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nTurns off the zoom mode of the player. (+zoom console command)\nBasically equivalent of entering \"-zoom\" into player's console.\n",
      "@name Player:StopZooming",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/StopZooming",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "StopZooming",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nWhen used in a @GamemodeHooks:SetupMove hook, this function behaves unexpectedly by preventing the player from sprinting similar to @Player:StopSprinting.\n",
      "@name Player:StopWalking",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/StopWalking",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "StopWalking",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nWhen used in a @GamemodeHooks:SetupMove hook, this function will prevent the player from sprinting.\nWhen +walk is engaged, the player will still be able to sprint to half speed (normal run speed) as opposed to full sprint speed without this function.\n",
      "@name Player:StopSprinting",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/StopSprinting",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "StopSprinting",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns the player's 64bit SteamID aka CommunityID.\nIn singleplayer, this will return no value serverside.\nIn a multirun environment, this will return no value serverside for all \"copies\" of a player.\nFor bots, this will return 90071996842377216 (equivalent to STEAM_0:0:0) for the first bot to join.\nFor each additional bot, the number increases by 1. So the next bot will be 90071996842377217 (STEAM_0:1:0) then 90071996842377218 (STEAM_0:0:1) and so on.\nOn the client it returns no value for bots.\nUse @Player:AccountID for a shorter version of the SteamID.\n",
      "@name Player:SteamID64",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SteamID64",
      "@param {Player} this - no description",
      "@returns {string} - Player's 64bit SteamID aka CommunityID."
    ],
    "type": "class",
    "context": "Player",
    "name": "SteamID64",
    "typings": [
      "(this: Player): string"
    ]
  },
  {
    "comments": [
      "\nReturns the player's SteamID. In singleplayer, this will be STEAM_ID_PENDING serverside.\nFor Bots this will return \"BOT\" on the server and on the client it returns \"NULL\".\nUse @Player:AccountID for a shorter version of the SteamID.\n",
      "@name Player:SteamID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SteamID",
      "@param {Player} this - no description",
      "@returns {string} - SteamID"
    ],
    "type": "class",
    "context": "Player",
    "name": "SteamID",
    "typings": [
      "(this: Player): string"
    ]
  },
  {
    "comments": [
      "\nWhen used in a @GamemodeHooks:SetupMove hook, this function will force the player to walk, as well as preventing the player from sprinting.\n",
      "@name Player:StartWalking",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/StartWalking",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "StartWalking",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled from @GamemodeHooks:CreateMove.\n",
      "@name PlayerHooks:StartMove",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/StartMove",
      "@note This hook is run after the @drive.StartMove has been called.",
      "@warning This hook will not work if the current gamemode overrides @GamemodeHooks:SetupMove and does not call this hook.",
      "@param {Player} this - no description",
      "@param {CMoveData} mv - no description",
      "@param {CUserCmd} cmd - no description",
      "@returns {boolean} - Return true to prevent default action"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "StartMove",
    "typings": [
      "(this: Player, mv: CMoveData, cmd: CUserCmd): boolean"
    ]
  },
  {
    "comments": [
      "\nDoesn't appear to do anything.\n",
      "@name Player:StartSprinting",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/StartSprinting",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "StartSprinting",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nEnables the sprint on the player.\n",
      "@name Player:SprintEnable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SprintEnable",
      "@bug #2390 Not working - use @Player:SetRunSpeed or @CMoveData:SetMaxSpeed in a @GamemodeHooks:Move hook, instead.",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SprintEnable",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nDisables the sprint on the player.\n",
      "@name Player:SprintDisable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SprintDisable",
      "@bug #2390 Not working - use @Player:SetRunSpeed or @CMoveData:SetMaxSpeed in a @GamemodeHooks:Move hook, instead.",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SprintDisable",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nMakes a player spray their decal.\n",
      "@name Player:SprayDecal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SprayDecal",
      "@param {Player} this - no description",
      "@param {Vector} sprayOrigin - The location to spray from",
      "@param {Vector} sprayEndPos - The location to spray to",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SprayDecal",
    "typings": [
      "(this: Player, sprayOrigin: Vector, sprayEndPos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nMakes the player spectate the entity\nTo get the applied spectated entity, use @Player:GetObserverTarget().\n",
      "@name Player:SpectateEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SpectateEntity",
      "@bug #3267 The player's position will not update while spectating, causing area portals and other map optimisations to not work properly. You can fix this by setting the player's position to the spectated entity's each tick.",
      "@param {Player} this - no description",
      "@param {Entity} entity - Entity to spectate.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SpectateEntity",
    "typings": [
      "(this: Player, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nStarts spectate mode for given player. This will also affect the players movetype in some cases.\n",
      "@name Player:Spectate",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/Spectate",
      "@param {Player} this - no description",
      "@param {OBS_MODE} mode - Spectate mode, see @OBS_MODE enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "Spectate",
    "typings": [
      "(this: Player, mode: OBS_MODE): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player spawns\n",
      "@name PlayerHooks:Spawn",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/Spawn",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "Spawn",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nSignals the entity that it was dropped by the gravity gun.\n",
      "@name Player:SimulateGravGunDrop",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SimulateGravGunDrop",
      "@param {Player} this - no description",
      "@param {Entity} ent - Entity that was dropped.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SimulateGravGunDrop",
    "typings": [
      "(this: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSignals the entity that it was picked up by the gravity gun. This call is only required if you want to simulate the situation of picking up objects.\n",
      "@name Player:SimulateGravGunPickup",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SimulateGravGunPickup",
      "@param {Player} this - no description",
      "@param {Entity} ent - The entity picked up",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SimulateGravGunPickup",
    "typings": [
      "(this: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nOpens the player steam profile page in the steam overlay browser.\n",
      "@name Player:ShowProfile",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Player/ShowProfile",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "ShowProfile",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the player's current weapon should drop on death.\n",
      "@name Player:ShouldDropWeapon",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/ShouldDropWeapon",
      "@note This is reset on spawn to the [player class](https://wiki.garrysmod.com/page/Player_Classes)'s **DropWeaponOnDie** field by @player_manager.OnPlayerSpawn.",
      "@param {Player} this - no description",
      "@param {boolean} drop - Whether to drop the player's current weapon or not",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "ShouldDropWeapon",
    "typings": [
      "(this: Player, drop: boolean): void"
    ]
  },
  {
    "comments": [
      "\nPolls the engine to request if the player should be drawn at the time the function is called.\n",
      "@name Player:ShouldDrawLocalPlayer",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Player/ShouldDrawLocalPlayer",
      "@param {Player} this - no description",
      "@returns {boolean} - shouldDraw"
    ],
    "type": "class",
    "context": "Player",
    "name": "ShouldDrawLocalPlayer",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the player weapon's color. The part of the model that is colored is determined by the model itself, and is different for each model.\n",
      "@name Player:SetWeaponColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetWeaponColor",
      "@param {Player} this - no description",
      "@param {Vector} Color - This is the color to be set. The format is Vector(r,g,b), and each color should be between 0 and 1.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetWeaponColor",
    "typings": [
      "(this: Player, Color: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets client's view punch. See @Player:ViewPunch\n",
      "@name Player:SetViewPunchAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetViewPunchAngles",
      "@param {Player} this - no description",
      "@param {Angle} punchAngle - The angle to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetViewPunchAngles",
    "typings": [
      "(this: Player, punchAngle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the player's normal walking speed. Not sprinting, not slow walking @+walk key.\nThere currently is no way to modify the slow walking @+walk key speed.\nSee also @Player:GetWalkSpeed, @Player:SetCrouchedWalkSpeed, @Player:SetMaxSpeed and @Player:SetRunSpeed.\n",
      "@name Player:SetWalkSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetWalkSpeed",
      "@bug #2030 Using a speed of 0 can lead to prediction errors.",
      "@param {Player} this - no description",
      "@param {number} walkSpeed - The new walk speed when sv_friction is below 10. Higher sv_friction values will result in slower speed.\nHas to be 7 or above or the player won't be able to move.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetWalkSpeed",
    "typings": [
      "(this: Player, walkSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the **desired** view offset which equals the difference between the players actual position and their view when standing.\nIf you want to set **actual** view offset, use @Player:SetCurrentViewOffset\nSee also @Player:SetViewOffsetDucked for **desired** view offset when crouching.\n",
      "@name Player:SetViewOffset",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetViewOffset",
      "@param {Player} this - no description",
      "@param {Vector} viewOffset - The new desired view offset when standing.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetViewOffset",
    "typings": [
      "(this: Player, viewOffset: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the **desired** view offset which equals the difference between the players actual position and their view when crouching.\nIf you want to set **actual** view offset, use @Player:SetCurrentViewOffset\nSee also @Player:SetViewOffset for **desired** view offset when standing.\n",
      "@name Player:SetViewOffsetDucked",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetViewOffsetDucked",
      "@param {Player} this - no description",
      "@param {Vector} viewOffset - The new desired view offset when crouching.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetViewOffsetDucked",
    "typings": [
      "(this: Player, viewOffset: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the usergroup of the player.\n",
      "@name Player:SetUserGroup",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetUserGroup",
      "@param {Player} this - no description",
      "@param {string} groupName - The user group of the player.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetUserGroup",
    "typings": [
      "(this: Player, groupName: string): void"
    ]
  },
  {
    "comments": [
      "\nAttaches the players view to the position and angles of the specified entity.\n",
      "@name Player:SetViewEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetViewEntity",
      "@param {Player} this - no description",
      "@param {Entity} viewEntity - The entity to attach the player view to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetViewEntity",
    "typings": [
      "(this: Player, viewEntity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets up the players view model hands. Calls @GamemodeHooks:PlayerSetHandsModel to set the model of the hands.\n",
      "@name Player:SetupHands",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetupHands",
      "@param {Player} this - no description",
      "@param {Entity} ent - If the player is spectating an entity, this should be the entity the player is spectating, so we can use its hands model instead.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetupHands",
    "typings": [
      "(this: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSetup the network table accessors.\n",
      "@name PlayerHooks:SetupDataTables",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/SetupDataTables",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "SetupDataTables",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nSets how quickly a player un-ducks\n",
      "@name Player:SetUnDuckSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetUnDuckSpeed",
      "@param {Player} this - no description",
      "@param {number} UnDuckSpeed - How quickly the player will un-duck",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetUnDuckSpeed",
    "typings": [
      "(this: Player, UnDuckSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whenever to suppress the pickup notification for the player.\n",
      "@name Player:SetSuppressPickupNotices",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetSuppressPickupNotices",
      "@param {Player} this - no description",
      "@param {boolean} doSuppress - Whenever to suppress the notice or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetSuppressPickupNotices",
    "typings": [
      "(this: Player, doSuppress: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the player to the chosen team.\n",
      "@name Player:SetTeam",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetTeam",
      "@param {Player} this - no description",
      "@param {number} Team - The team that the player is being set to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetTeam",
    "typings": [
      "(this: Player, Team: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the player's HEV suit power.\n",
      "@name Player:SetSuitPower",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetSuitPower",
      "@bug #3449 This will only work for the local player when used clientside.",
      "@param {Player} this - no description",
      "@param {number} power - The new suit power.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetSuitPower",
    "typings": [
      "(this: Player, power: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum height a player can step onto without jumping.\n",
      "@name Player:SetStepSize",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetStepSize",
      "@param {Player} this - no description",
      "@param {number} stepHeight - The new maximum height the player can step onto without jumping",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetStepSize",
    "typings": [
      "(this: Player, stepHeight: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the player's sprint speed.\nSee also @Player:GetRunSpeed, @Player:SetWalkSpeed and @Player:SetMaxSpeed.\n",
      "@name Player:SetRunSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetRunSpeed",
      "@param {Player} this - no description",
      "@param {number} runSpeed - The new sprint speed when sv_friction is below 10. Higher sv_friction values will result in slower speed.\nHas to be 7 or above or the player won't be able to move.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetRunSpeed",
    "typings": [
      "(this: Player, runSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the render angles of a player.\n",
      "@name Player:SetRenderAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetRenderAngles",
      "@param {Player} this - no description",
      "@param {Angle} ang - The new render angles to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetRenderAngles",
    "typings": [
      "(this: Player, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the widget that is currently in use by the player's mouse.\nHaving a pressed widget stops the player from firing his weapon to allow input to be passed onto the widget.\n",
      "@name Player:SetPressedWidget",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetPressedWidget",
      "@param {Player} this - no description",
      "@param {Entity} pressedWidget - The widget the player is currently using.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetPressedWidget",
    "typings": [
      "(this: Player, pressedWidget?: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the player model's color. The part of the model that is colored is determined by the model itself, and is different for each model.\n",
      "@name Player:SetPlayerColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetPlayerColor",
      "@param {Player} this - no description",
      "@param {Vector} Color - This is the color to be set. The format is Vector(r,g,b), and each color should be between 0 and 1.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetPlayerColor",
    "typings": [
      "(this: Player, Color: Vector): void"
    ]
  },
  {
    "comments": [
      "\nWrites a **P**layer **Data** key-value pair to the SQL database. (sv.db when called on server,  cl.db when called on client)\nInternally uses the @sql library.\n",
      "@name Player:SetPData",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetPData",
      "@note PData is not networked from servers to clients!",
      "@warning This function internally uses @Player:UniqueID, which can cause collisions (two or more players sharing the same PData entry). It's recommended that you don't use it. See the related wiki page for more information.",
      "@param {Player} this - no description",
      "@param {string} key - Name of the PData key",
      "@param {any} value - Value to write to the key (**must** be an SQL valid data type, such as a string or integer)",
      "@returns {boolean} - Whether the operation was successful or not"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetPData",
    "typings": [
      "(this: Player, key: string, value: any): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the players visibility towards NPCs.\nInternally this toggles the [FL_NOTARGET](https://wiki.garrysmod.com/page/Enums/FL) flag, which you can manually test for using @EntityFuncs:IsFlagSet\n",
      "@name Player:SetNoTarget",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetNoTarget",
      "@param {Player} this - no description",
      "@param {boolean} visibility - The visibility.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetNoTarget",
    "typings": [
      "(this: Player, visibility: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the players observer mode. You must start the spectating first with @Player:Spectate.\n",
      "@name Player:SetObserverMode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetObserverMode",
      "@param {Player} this - no description",
      "@param {OBS_MODE} mode - Spectator mode using @OBS_MODE enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetObserverMode",
    "typings": [
      "(this: Player, mode: OBS_MODE): void"
    ]
  },
  {
    "comments": [
      "\nCalled when we need to set player model from the class.\n",
      "@name PlayerHooks:SetModel",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/SetModel",
      "@note This will only be called if you have not overridden @GamemodeHooks:PlayerSetModel or call this function from it or anywhere else using @player_manager.RunClass",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "SetModel",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nSets if the player should be muted locally.\n",
      "@name Player:SetMuted",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Player/SetMuted",
      "@param {Player} this - no description",
      "@param {boolean} mute - Mute or unmute.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetMuted",
    "typings": [
      "(this: Player, mute: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whenever the player should not collide with their teammates.\n",
      "@name Player:SetNoCollideWithTeammates",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetNoCollideWithTeammates",
      "@bug #2757 This only works with @Player:Team IDs 1-4. This also has major collision issues.",
      "@param {Player} this - no description",
      "@param {boolean} shouldNotCollide - True to disable, false to enable collision.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetNoCollideWithTeammates",
    "typings": [
      "(this: Player, shouldNotCollide: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum speed which the player can move at.\n",
      "@name Player:SetMaxSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetMaxSpeed",
      "@note This is called automatically by the engine. If you wish to limit player speed without setting their run/sprint speeds, see @CMoveData:SetMaxClientSpeed.",
      "@param {Player} this - no description",
      "@param {number} walkSpeed - The maximum speed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetMaxSpeed",
    "typings": [
      "(this: Player, walkSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the mins and maxs of the AABB of the players collision when ducked.\n",
      "@name Player:SetHullDuck",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetHullDuck",
      "@param {Player} this - no description",
      "@param {Vector} hullMins - The min coordinates of the hull.",
      "@param {Vector} hullMaxs - The max coordinates of the hull.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetHullDuck",
    "typings": [
      "(this: Player, hullMins: Vector, hullMaxs: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSlows down the player movement simulation by the timescale, this is used internally in the HL2 weapon stripping sequence.\nIt achieves such behavior by multiplying the @FrameTime function by the specified timescale at the start of the movement simulation and then restoring it afterwards.\n",
      "@name Player:SetLaggedMovementValue",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetLaggedMovementValue",
      "@note This is reset to 1 on spawn",
      "@note There is no weapon counterpart to this, you'll have to hardcode the multiplier in the weapon or call @WeaponFuncs:SetNextPrimaryFire / @WeaponFuncs:SetNextSecondaryFire manually from a [Predicted Hook](https://wiki.garrysmod.com/page/Category:Predicted_Hooks)",
      "@param {Player} this - no description",
      "@param {number} timescale - The timescale multiplier.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetLaggedMovementValue",
    "typings": [
      "(this: Player, timescale: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the mins and maxs of the AABB of the players collision.\n",
      "@name Player:SetHull",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetHull",
      "@bug #3365 Setting both the mins and maxs to @Vector function(0,0,0) will crash the game.",
      "@param {Player} this - no description",
      "@param {Vector} hullMins - The min coordinates of the hull.",
      "@param {Vector} hullMaxs - The max coordinates of the hull.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetHull",
    "typings": [
      "(this: Player, hullMins: Vector, hullMaxs: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the jump power, eg. the velocity the player will applied to when he jumps.\n",
      "@name Player:SetJumpPower",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetJumpPower",
      "@param {Player} this - no description",
      "@param {number} jumpPower - The new jump velocity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetJumpPower",
    "typings": [
      "(this: Player, jumpPower: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the hands entity of a player.\nThe hands entity is an entity introduced in Garry's Mod 13 and it's used to show the player's hands attached to the viewmodel.\nThis is similar to the approach used in L4D and CS:GO, for more information on how to implement this system in your gamemode visit [Using Viewmodel Hands](https://wiki.garrysmod.com/page/Using%20Viewmodel%20Hands).\n",
      "@name Player:SetHands",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetHands",
      "@param {Player} this - no description",
      "@param {Entity} hands - The hands entity to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetHands",
    "typings": [
      "(this: Player, hands: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the widget that is currently hovered by the player's mouse.\n",
      "@name Player:SetHoveredWidget",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetHoveredWidget",
      "@param {Player} this - no description",
      "@param {Entity} widget - The widget entity that the player is hovering.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetHoveredWidget",
    "typings": [
      "(this: Player, widget?: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets a player's frags (kills)\n",
      "@name Player:SetFrags",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetFrags",
      "@param {Player} this - no description",
      "@param {number} fragcount - Number of frags (positive or negative)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetFrags",
    "typings": [
      "(this: Player, fragcount: number): void"
    ]
  },
  {
    "comments": [
      "\nSet a player's FOV (Field Of View) over a certain amount of time.\n",
      "@name Player:SetFOV",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetFOV",
      "@param {Player} this - no description",
      "@param {number} fov - the angle of perception (FOV). Set to 0 to return to default user FOV. ( Which is ranging from 75 to 90, depending on user settings )",
      "@param {number} time - the time it takes to transition to the FOV expressed in a floating point.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetFOV",
    "typings": [
      "(this: Player, fov: number, time?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the angle of the player's view (may rotate body too if angular difference is large)\n",
      "@name Player:SetEyeAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetEyeAngles",
      "@param {Player} this - no description",
      "@param {Angle} angle - Angle to set the view to",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetEyeAngles",
    "typings": [
      "(this: Player, angle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets how quickly a player ducks.\n",
      "@name Player:SetDuckSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetDuckSpeed",
      "@bug #2722 This will not work for values >= 1.",
      "@param {Player} this - no description",
      "@param {number} duckSpeed - How quickly the player will duck.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetDuckSpeed",
    "typings": [
      "(this: Player, duckSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nApplies the specified sound filter to the player.\n",
      "@name Player:SetDSP",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetDSP",
      "@param {Player} this - no description",
      "@param {number} soundFilter - The index of the sound filter to apply.\nPick from the [list of DSP's](https://developer.valvesoftware.com/wiki/Dsp_presets).",
      "@param {boolean} fastReset - If set to true the sound filter will be removed faster.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetDSP",
    "typings": [
      "(this: Player, soundFilter: number, fastReset: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the driving entity and driving mode.\nUse @drive.PlayerStartDriving instead, see [Entity Driving](https://wiki.garrysmod.com/page/Entity%20Driving).\n",
      "@name Player:SetDrivingEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetDrivingEntity",
      "@internal",
      "@param {Player} this - no description",
      "@param {Entity} drivingEntity - The entity the player should drive.",
      "@param {number} drivingMode - The driving mode index.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetDrivingEntity",
    "typings": [
      "(this: Player, drivingEntity?: Entity, drivingMode: number): void"
    ]
  },
  {
    "comments": [
      "\nSets a player's death count\n",
      "@name Player:SetDeaths",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetDeaths",
      "@param {Player} this - no description",
      "@param {number} deathcount - Number of deaths (positive or negative)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetDeaths",
    "typings": [
      "(this: Player, deathcount: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the **actual** view offset which equals the difference between the players actual position and their view when standing.\nDo not confuse with @Player:SetViewOffset and @Player:SetViewOffsetDucked\n",
      "@name Player:SetCurrentViewOffset",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetCurrentViewOffset",
      "@param {Player} this - no description",
      "@param {Vector} viewOffset - The new view offset.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetCurrentViewOffset",
    "typings": [
      "(this: Player, viewOffset: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the crouched walk speed multiplier.\nDoesn't work for values above 1.\nSee also @Player:SetWalkSpeed and @Player:GetCrouchedWalkSpeed.\n",
      "@name Player:SetCrouchedWalkSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetCrouchedWalkSpeed",
      "@param {Player} this - no description",
      "@param {number} speed - The walk speed multiplier that crouch speed should be.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetCrouchedWalkSpeed",
    "typings": [
      "(this: Player, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the player's class id.\n",
      "@name Player:SetClassID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetClassID",
      "@param {Player} this - no description",
      "@param {number} classID - The class id the player is being set with.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetClassID",
    "typings": [
      "(this: Player, classID: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the player can use the HL2 suit zoom (\"+zoom\" bind) or not.\n",
      "@name Player:SetCanZoom",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetCanZoom",
      "@param {Player} this - no description",
      "@param {boolean} canZoom - Whether to make the player able or unable to zoom.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetCanZoom",
    "typings": [
      "(this: Player, canZoom: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSet if the player should be allowed to walk using the (default) alt key.\n",
      "@name Player:SetCanWalk",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetCanWalk",
      "@param {Player} this - no description",
      "@param {boolean} abletowalk - True allows the player to walk.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetCanWalk",
    "typings": [
      "(this: Player, abletowalk: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the player armor to the argument.\n",
      "@name Player:SetArmor",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetArmor",
      "@param {Player} this - no description",
      "@param {number} Amount - The amount that the player armor is going to be set to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetArmor",
    "typings": [
      "(this: Player, Amount: number): void"
    ]
  },
  {
    "comments": [
      "\nPushes the player away from another player whenever it's inside the other players bounding box.\n",
      "@name Player:SetAvoidPlayers",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetAvoidPlayers",
      "@param {Player} this - no description",
      "@param {boolean} avoidPlayers - Avoid or not avoid.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetAvoidPlayers",
    "typings": [
      "(this: Player, avoidPlayers: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the amount of the specified ammo for the player.\n",
      "@name Player:SetAmmo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetAmmo",
      "@param {Player} this - no description",
      "@param {number} ammoCount - The amount of ammunition to set.",
      "@param {number | string} ammoType - The ammunition type. Can be either @number type ammo ID or @string type ammo name.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetAmmo",
    "typings": [
      "(this: Player, ammoCount: number, ammoType: number | string): void"
    ]
  },
  {
    "comments": [
      "\nAllows player to use his weapons in a vehicle. You need to call this before entering a vehicle.\n",
      "@name Player:SetAllowWeaponsInVehicle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetAllowWeaponsInVehicle",
      "@bug #1277 Shooting in a vehicle fires two bullets.",
      "@bug #3261 Weapon viewpunch does not decay while in a vehicle, leading to incorrect aim angles.",
      "@param {Player} this - no description",
      "@param {boolean} allow - Show we allow player to use his weapons in a vehicle or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetAllowWeaponsInVehicle",
    "typings": [
      "(this: Player, allow: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSet if the players' model is allowed to rotate around the pitch and roll axis.\n",
      "@name Player:SetAllowFullRotation",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetAllowFullRotation",
      "@param {Player} this - no description",
      "@param {boolean} Allowed - Allowed to rotate",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetAllowFullRotation",
    "typings": [
      "(this: Player, Allowed: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the player's active weapon. You should use @CUserCmd:SelectWeapon or @Player:SelectWeapon, instead in most cases.\n",
      "@name Player:SetActiveWeapon",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SetActiveWeapon",
      "@note This function will not trigger the weapon switch event or associated equip animations. You can achieve this using @Player:SelectWeapon with @EntityFuncs:GetClass.",
      "@note This will not call @GamemodeHooks:PlayerSwitchWeapon.",
      "@param {Player} this - no description",
      "@param {Weapon} weapon - The weapon to equip.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SetActiveWeapon",
    "typings": [
      "(this: Player, weapon: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nExecutes a simple Lua string on the player.\n",
      "@name Player:SendLua",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SendLua",
      "@note The string is limited to 254 bytes. Instead of sending Lua code with this function, consider using the @net library for more advanced server-client interaction, see example 2 for SendLua replacement",
      "@param {Player} this - no description",
      "@param {string} script - The script to execute.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SendLua",
    "typings": [
      "(this: Player, script: string): void"
    ]
  },
  {
    "comments": [
      "\nSends a hint to a player.\n",
      "@name Player:SendHint",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SendHint",
      "@note This function is only available in Sandbox and its derivatives. Since this adds *#Hint_* to the beginning of each message, you should only use it with default hint messages, or those cached with @language.Add. For hints with custom text, look at @notification.AddLegacy",
      "@param {Player} this - no description",
      "@param {string} name - Name/class/index of the hint. The text of the hint will contain this value. ( \"#Hint_\" .. name ) An example is *PhysgunFreeze*.",
      "@param {number} delay - Delay in seconds before showing the hint",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SendHint",
    "typings": [
      "(this: Player, name: string, delay: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the active weapon of the player by its class name.\n",
      "@name Player:SelectWeapon",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/SelectWeapon",
      "@note This will trigger the weapon switch event and associated animations. To switch weapons silently, use @Player:SetActiveWeapon.",
      "@warning This will switch the weapon out of prediction, causing delay on the client and @WeaponHooks:Deploy to be called out of prediction. Try using @CUserCmd:SelectWeapon or @input.SelectWeapon, instead.",
      "@param {Player} this - no description",
      "@param {string} className - The class name of the weapon to switch to.\nIf the player doesn't have the specified weapon, nothing will happen. You can use @Player:Give to give the weapon first.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "SelectWeapon",
    "typings": [
      "(this: Player, className: string): void"
    ]
  },
  {
    "comments": [
      "\nFades the screen\n",
      "@name Player:ScreenFade",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/ScreenFade",
      "@param {Player} this - no description",
      "@param {SCREENFADE} flags - Fade flags defined with @SCREENFADE enum.",
      "@param {number} clr - The color of the screenfade",
      "@param {number} fadeTime - Fade(in/out) effect transition time ( From no fade to full fade and vice versa )",
      "@param {number} fadeHold - Fade effect hold time",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "ScreenFade",
    "typings": [
      "(this: Player, flags: SCREENFADE, clr?: number, fadeTime: number, fadeHold: number): void"
    ]
  },
  {
    "comments": [
      "\nForces the player to say whatever the first argument is. Works on bots too.\n",
      "@name Player:Say",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/Say",
      "@note This function ignores the default chat message cooldown",
      "@param {Player} this - no description",
      "@param {string} text - The text to force the player to say.",
      "@param {boolean} teamOnly - Whether to send this message to our own team only.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "Say",
    "typings": [
      "(this: Player, text: string, teamOnly?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nResets both normal and duck hulls to their default values.\n",
      "@name Player:ResetHull",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/ResetHull",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "ResetHull",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nStrips the player's suit item.\n",
      "@name Player:RemoveSuit",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/RemoveSuit",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "RemoveSuit",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nRemoves a **P**layer **Data** key-value pair from the SQL database. (sv.db when called on server,  cl.db when called on client)\nInternally uses the @sql library.\n",
      "@name Player:RemovePData",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/RemovePData",
      "@warning This function internally uses @Player:UniqueID, which can cause collisions (two or more players sharing the same PData entry). It's recommended that you don't use it. See the related wiki page for more information.",
      "@param {Player} this - no description",
      "@param {string} key - Key to remove",
      "@returns {boolean} - true is succeeded, false otherwise"
    ],
    "type": "class",
    "context": "Player",
    "name": "RemovePData",
    "typings": [
      "(this: Player, key: string): boolean"
    ]
  },
  {
    "comments": [
      "\nRemoves the amount of the specified ammo from the player.\n",
      "@name Player:RemoveAmmo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/RemoveAmmo",
      "@param {Player} this - no description",
      "@param {number} ammoCount - The amount of ammunition to remove.",
      "@param {string} ammoName - The name of the ammunition to remove from. This can also be a @number type ammoID.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "RemoveAmmo",
    "typings": [
      "(this: Player, ammoCount: number, ammoName: string): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all weapons and ammo from the player.\n",
      "@name Player:RemoveAllItems",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/RemoveAllItems",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "RemoveAllItems",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all ammo from a certain player\n",
      "@name Player:RemoveAllAmmo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/RemoveAllAmmo",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "RemoveAllAmmo",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nDisplays a message either in their chat, console, or center of the screen. See also @PrintMessage function.\n",
      "@name Player:PrintMessage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/PrintMessage",
      "@note When called serverside, this uses the archaic user message system (the @umsg library) and hence is limited to ≈250 characters.",
      "@note *HUD_PRINTCENTER* will not work when this is called clientside.",
      "@param {Player} this - no description",
      "@param {HUD} type - Which type of message should be sent to the player (@HUD enum)",
      "@param {string} message - Message to be sent to the player",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "PrintMessage",
    "typings": [
      "(this: Player, type: HUD, message: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled before the viewmodel is drawn\n",
      "@name PlayerHooks:PreDrawViewModel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/PreDrawViewModel",
      "@param {Player} this - no description",
      "@param {Entity} viewmodel - The viewmodel",
      "@param {Entity} weapon - The weapon",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "PreDrawViewModel",
    "typings": [
      "(this: Player, viewmodel: Entity, weapon: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the viewmodel has been drawn\n",
      "@name PlayerHooks:PostDrawViewModel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/PostDrawViewModel",
      "@param {Player} this - no description",
      "@param {Entity} viewmodel - The viewmodel",
      "@param {Entity} weapon - The weapon",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "PostDrawViewModel",
    "typings": [
      "(this: Player, viewmodel: Entity, weapon: Entity): void"
    ]
  },
  {
    "comments": [
      "\nPlays the correct step sound according to what the player is staying on.\n",
      "@name Player:PlayStepSound",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/PlayStepSound",
      "@param {Player} this - no description",
      "@param {number} volume - Volume for the sound, in range from 0 to 1",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "PlayStepSound",
    "typings": [
      "(this: Player, volume: number): void"
    ]
  },
  {
    "comments": [
      "\nThis makes the player hold ( same as pressing @E key on a small prop ) the provided entity.\n",
      "@name Player:PickupObject",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/PickupObject",
      "@note Don't get this confused with picking up items like ammo or health kits",
      "@note This picks up the passed entity regardless of its mass or distance from the player",
      "@param {Player} this - no description",
      "@param {Entity} entity - Entity to pick up.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "PickupObject",
    "typings": [
      "(this: Player, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nReturns the player's ping to server.\n",
      "@name Player:Ping",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/Ping",
      "@param {Player} this - no description",
      "@returns {number} - The player's ping."
    ],
    "type": "class",
    "context": "Player",
    "name": "Ping",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the packet loss of the client. It is not networked so it only returns 0 when run clientside.\n",
      "@name Player:PacketLoss",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/PacketLoss",
      "@param {Player} this - no description",
      "@returns {number} - Packets lost"
    ],
    "type": "class",
    "context": "Player",
    "name": "PacketLoss",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nUnfreezes the props player is looking at. This is essentially the same as pressing reload with the physics gun, including double press for unfreeze all.\n",
      "@name Player:PhysgunUnfreeze",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/PhysgunUnfreeze",
      "@param {Player} this - no description",
      "@returns {number} - Number of props unfrozen."
    ],
    "type": "class",
    "context": "Player",
    "name": "PhysgunUnfreeze",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the player's nickname.\n",
      "@name Player:Nick",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/Nick",
      "@bug #3178 This is limited to 31 characters even though Steam names can have 32.",
      "@param {Player} this - no description",
      "@returns {string} - Player's Steam name"
    ],
    "type": "class",
    "context": "Player",
    "name": "Nick",
    "typings": [
      "(this: Player): string"
    ]
  },
  {
    "comments": [
      "\nReturns the players name. Identical to @Player:Nick and @Player:GetName.\n",
      "@name Player:Name",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/Name",
      "@bug #3178 This is limited to 31 characters even though Steam names can have 32.",
      "@param {Player} this - no description",
      "@returns {string} - Player's Steam name."
    ],
    "type": "class",
    "context": "Player",
    "name": "Name",
    "typings": [
      "(this: Player): string"
    ]
  },
  {
    "comments": [
      "\nCalled from @GamemodeHooks:Move.\n",
      "@name PlayerHooks:Move",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/Move",
      "@note This hook is run after the @drive.Move has been called.",
      "@warning This hook will not work if the current gamemode overrides @GamemodeHooks:Move and does not call this hook.",
      "@param {Player} this - no description",
      "@param {CMoveData} mv - Movement information",
      "@returns {boolean} - Return true to prevent default action"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "Move",
    "typings": [
      "(this: Player, mv: CMoveData): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the position of a Kinect bone.\n",
      "@name Player:MotionSensorPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/MotionSensorPos",
      "@param {Player} this - no description",
      "@param {number} bone - Bone to get the position of. Must be from 0 to 19.",
      "@returns {Vector} - Position of the bone."
    ],
    "type": "class",
    "context": "Player",
    "name": "MotionSensorPos",
    "typings": [
      "(this: Player, bone: number): Vector"
    ]
  },
  {
    "comments": [
      "\nCalled on spawn to give the player their default loadout\n",
      "@name PlayerHooks:Loadout",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/Loadout",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "Loadout",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nStops a player from using any inputs, such as moving, turning, or attacking. Key binds are still called. Similar to @Player:Freeze but the player takes no damage.\nAdds the [FL_FROZEN](https://wiki.garrysmod.com/page/Enums/FL) and [FL_GODMODE](https://wiki.garrysmod.com/page/Enums/FL) flags to the player.\n",
      "@name Player:Lock",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/Lock",
      "@bug  Frozen bots will still be able to look around.",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "Lock",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns the hitgroup where the player was last hit.\n",
      "@name Player:LastHitGroup",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/LastHitGroup",
      "@param {Player} this - no description",
      "@returns {HITGROUP} - Hitgroup, see @HITGROUP enum"
    ],
    "type": "class",
    "context": "Player",
    "name": "LastHitGroup",
    "typings": [
      "(this: Player): HITGROUP"
    ]
  },
  {
    "comments": [
      "\nShows \"limit hit\" notification in sandbox.\n",
      "@name Player:LimitHit",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/LimitHit",
      "@note This function is only available in Sandbox and its derivatives",
      "@param {Player} this - no description",
      "@param {string} type - Type of hit limit",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "LimitHit",
    "typings": [
      "(this: Player, type: string): void"
    ]
  },
  {
    "comments": [
      "\nThis allows the server to mitigate the lag of the player by moving back all the entities that can be lag compensated to the time the player attacked with his weapon.\nThis technique is most commonly used on things that hit other entities instantaneously, such as traces.\nLag compensation only works for players and entities that have been enabled with @EntityFuncs:SetLagCompensated\nDespite being defined shared, it can only be used server side in a [Predicted Hook](https://wiki.garrysmod.com/page/Category:Predicted_Hooks).\n",
      "@name Player:LagCompensation",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/LagCompensation",
      "@note @EntityFuncs:FireBullets calls this function internally.",
      "@warning This function NEEDS to be disabled after you're done with it or it will break the movement of the entities affected!",
      "@bug #3683 Lag compensation does not support pose parameters.",
      "@param {Player} this - no description",
      "@param {boolean} lagCompensation - The state of the lag compensation, true to enable and false to disable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "LagCompensation",
    "typings": [
      "(this: Player, lagCompensation: boolean): void"
    ]
  },
  {
    "comments": [
      "\nKills a player without notifying the rest of the server.\nThis will call @GamemodeHooks:PlayerSilentDeath instead of @GamemodeHooks:PlayerDeath.\n",
      "@name Player:KillSilent",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/KillSilent",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "KillSilent",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nGets whether a key was just released this tick\n",
      "@name Player:KeyReleased",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/KeyReleased",
      "@param {Player} this - no description",
      "@param {IN} key - The key, see @IN enum",
      "@returns {boolean} - Was released or not"
    ],
    "type": "class",
    "context": "Player",
    "name": "KeyReleased",
    "typings": [
      "(this: Player, key: IN): boolean"
    ]
  },
  {
    "comments": [
      "\nKills a player and calls @GamemodeHooks:PlayerDeath.\n",
      "@name Player:Kill",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/Kill",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "Kill",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nGets whether a key was just pressed this tick\n",
      "@name Player:KeyPressed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/KeyPressed",
      "@param {Player} this - no description",
      "@param {IN} key - Corresponds to an @IN enum",
      "@returns {boolean} - Was pressed or not"
    ],
    "type": "class",
    "context": "Player",
    "name": "KeyPressed",
    "typings": [
      "(this: Player, key: IN): boolean"
    ]
  },
  {
    "comments": [
      "\nKicks the player from the server.\n",
      "@name Player:Kick",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/Kick",
      "@note This can not be run before the player has fully joined in. Use @game.KickID for that.",
      "@warning This will be shortened to ~512 chars, though this includes the command itself and the player index so will realistically be more around ~498. It is recommended to avoid going near the limit to avoid truncation.",
      "@param {Player} this - no description",
      "@param {string} reason - Reason to show for disconnection.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "Kick",
    "typings": [
      "(this: Player, reason?: string): void"
    ]
  },
  {
    "comments": [
      "\nGets whether a key was down one tick ago.\n",
      "@name Player:KeyDownLast",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/KeyDownLast",
      "@param {Player} this - no description",
      "@param {IN} key - The key, see @IN enum",
      "@returns {boolean} - Is key down"
    ],
    "type": "class",
    "context": "Player",
    "name": "KeyDownLast",
    "typings": [
      "(this: Player, key: IN): boolean"
    ]
  },
  {
    "comments": [
      "\nGets whether a key is down. This is not networked to other players, meaning only the local client can see the keys they are pressing.\n",
      "@name Player:KeyDown",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/KeyDown",
      "@param {Player} this - no description",
      "@param {IN} key - The key, see @IN enum",
      "@returns {boolean} - isDown"
    ],
    "type": "class",
    "context": "Player",
    "name": "KeyDown",
    "typings": [
      "(this: Player, key: IN): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the player can be heard by the local player.\n",
      "@name Player:IsVoiceAudible",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Player/IsVoiceAudible",
      "@param {Player} this - no description",
      "@returns {boolean} - isAudible"
    ],
    "type": "class",
    "context": "Player",
    "name": "IsVoiceAudible",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the player is in the context menu.\n",
      "@name Player:IsWorldClicking",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsWorldClicking",
      "@note Although this is shared, it will only work properly on the CLIENT for the local player. Using this serverside or on other players will return false.",
      "@param {Player} this - no description",
      "@returns {boolean} - Is the player world clicking or not."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsWorldClicking",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true/false if the player is in specified group or not.\n",
      "@name Player:IsUserGroup",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsUserGroup",
      "@param {Player} this - no description",
      "@param {string} groupname - Group to check the player for.",
      "@returns {boolean} - isInUserGroup"
    ],
    "type": "class",
    "context": "Player",
    "name": "IsUserGroup",
    "typings": [
      "(this: Player, groupname: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the player is typing in their chat.\nThis may not work properly if the server uses a custom chatbox.\n",
      "@name Player:IsTyping",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsTyping",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the player is typing in their chat or not."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsTyping",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the player is timing out (i.e. is losing connection), false otherwise.\n",
      "@name Player:IsTimingOut",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsTimingOut",
      "@param {Player} this - no description",
      "@returns {boolean} - isTimingOut"
    ],
    "type": "class",
    "context": "Player",
    "name": "IsTimingOut",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the player is a superadmin.\n",
      "@name Player:IsSuperAdmin",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsSuperAdmin",
      "@param {Player} this - no description",
      "@returns {boolean} - True if the player is a superadmin."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsSuperAdmin",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the player is equipped with the suit item.\n",
      "@name Player:IsSuitEquipped",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsSuitEquipped",
      "@bug #3449 This will only work for the local player when used clientside.",
      "@param {Player} this - no description",
      "@returns {boolean} - Is the suit equipped or not."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsSuitEquipped",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the player is currently sprinting or not.\n",
      "@name Player:IsSprinting",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsSprinting",
      "@param {Player} this - no description",
      "@returns {boolean} - Is the player sprinting or not"
    ],
    "type": "class",
    "context": "Player",
    "name": "IsSprinting",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the player is heard by the local player.\n",
      "@name Player:IsSpeaking",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Player/IsSpeaking",
      "@param {Player} this - no description",
      "@returns {boolean} - isSpeaking"
    ],
    "type": "class",
    "context": "Player",
    "name": "IsSpeaking",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the player is playing a taunt.\n",
      "@name Player:IsPlayingTaunt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsPlayingTaunt",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the player is playing a taunt."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsPlayingTaunt",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the player is muted locally.\n",
      "@name Player:IsMuted",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Player/IsMuted",
      "@param {Player} this - no description",
      "@returns {boolean} - whether or not the player is muted locally."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsMuted",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if a player is the host of the current session.\n",
      "@name Player:IsListenServerHost",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsListenServerHost",
      "@param {Player} this - no description",
      "@returns {boolean} - True if the player is the listen server host, false otherwise.\nThis will always be true in single player, and false on a dedicated server."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsListenServerHost",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the player identity was confirmed by the steam network.\n",
      "@name Player:IsFullyAuthenticated",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsFullyAuthenticated",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the player has been fully authenticated or not.\nThis will always be true for singleplayer and the listen server host.\nThis will always be false for bots."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsFullyAuthenticated",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the players movement is currently frozen, contolled by @Player:Freeze.\n",
      "@name Player:IsFrozen",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsFrozen",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the players movement is currently frozen or not."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsFrozen",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nUsed to find out if a player is currently 'driving' an entity (by which we mean 'right click > drive' ).\n",
      "@name Player:IsDrivingEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsDrivingEntity",
      "@param {Player} this - no description",
      "@returns {boolean} - A value representing whether or not the player is 'driving' an entity."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsDrivingEntity",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the player is an bot or not\n",
      "@name Player:IsBot",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsBot",
      "@param {Player} this - no description",
      "@returns {boolean} - True if the player is a bot."
    ],
    "type": "class",
    "context": "Player",
    "name": "IsBot",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true from the point when the player is sending client info but not fully in the game until they disconnect.\n",
      "@name Player:IsConnected",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsConnected",
      "@param {Player} this - no description",
      "@returns {boolean} - isConnected"
    ],
    "type": "class",
    "context": "Player",
    "name": "IsConnected",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the player is an admin or not\n",
      "@name Player:IsAdmin",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/IsAdmin",
      "@param {Player} this - no description",
      "@returns {boolean} - True if the player is an admin"
    ],
    "type": "class",
    "context": "Player",
    "name": "IsAdmin",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the player's IP address and connection port in ip:port form\n",
      "@name Player:IPAddress",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/IPAddress",
      "@param {Player} this - no description",
      "@returns {string} - The player's IP address and connection port"
    ],
    "type": "class",
    "context": "Player",
    "name": "IPAddress",
    "typings": [
      "(this: Player): string"
    ]
  },
  {
    "comments": [
      "\nCalled when the class object is created\n",
      "@name PlayerHooks:Init",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/Init",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "Init",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns if the player is in a vehicle\n",
      "@name Player:InVehicle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/InVehicle",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the player is in a vehicle."
    ],
    "type": "class",
    "context": "Player",
    "name": "InVehicle",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the player has the specified weapon\n",
      "@name Player:HasWeapon",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/HasWeapon",
      "@param {Player} this - no description",
      "@param {string} className - Class name of the weapon",
      "@returns {boolean} - True if the player has the weapon"
    ],
    "type": "class",
    "context": "Player",
    "name": "HasWeapon",
    "typings": [
      "(this: Player, className: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the player has god mode or not, contolled by @Player:GodEnable and @Player:GodDisable.\n",
      "@name Player:HasGodMode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/HasGodMode",
      "@bug #2038 This is not synced between the client and server. This will cause the client to always return false even in godmode.",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the player has god mode or not."
    ],
    "type": "class",
    "context": "Player",
    "name": "HasGodMode",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nDisables god mode on the player.\n",
      "@name Player:GodDisable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/GodDisable",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "GodDisable",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nEnables god mode on the player.\n",
      "@name Player:GodEnable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/GodEnable",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "GodEnable",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nGives ammo to a player\n",
      "@name Player:GiveAmmo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/GiveAmmo",
      "@param {Player} this - no description",
      "@param {number} amount - Amount of ammo",
      "@param {string} type - Type of ammo.\nThis can also be a number for ammo ID, useful for custom ammo types.\nYou can find a list of default ammo types [here](https://wiki.garrysmod.com/page/Default_Ammo_Types).",
      "@param {boolean} hidePopup - Hide display popup when giving the ammo",
      "@returns {number} - Ammo given."
    ],
    "type": "class",
    "context": "Player",
    "name": "GiveAmmo",
    "typings": [
      "(this: Player, amount: number, type: string, hidePopup?: boolean): number"
    ]
  },
  {
    "comments": [
      "\nGives the player a weapon.\n",
      "@name Player:Give",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/Give",
      "@note While this function is meant for weapons/pickupables only, it is **not** restricted to weapons. Any entity can be spawned using this function, including NPCs and SENTs.",
      "@param {Player} this - no description",
      "@param {string} weaponClassName - Class name of weapon to give the player",
      "@param {boolean} bNoAmmo - Set to true to not give any ammo on weapon spawn. (Reserve ammo set by DefaultClip)",
      "@returns {Weapon} - The weapon given to the player, if one was given. It will return NULL if the player already has the weapon, or the weapon entity (entity with given classname) doesn't exist."
    ],
    "type": "class",
    "context": "Player",
    "name": "Give",
    "typings": [
      "(this: Player, weaponClassName: string, bNoAmmo?: boolean): Weapon"
    ]
  },
  {
    "comments": [
      "\nReturns a player's weapon color. The part of the model that is colored is determined by the model itself, and is different for each model. The format is Vector(r,g,b), and each color should be between 0 and 1.\n",
      "@name Player:GetWeaponColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetWeaponColor",
      "@param {Player} this - no description",
      "@returns {Vector} - color"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetWeaponColor",
    "typings": [
      "(this: Player): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns a table of the player's weapons.\n",
      "@name Player:GetWeapons",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetWeapons",
      "@param {Player} this - no description",
      "@returns {table} - All the weapons the player currently has."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetWeapons",
    "typings": [
      "(this: Player): table"
    ]
  },
  {
    "comments": [
      "\nReturns the weapon for the specified class\n",
      "@name Player:GetWeapon",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetWeapon",
      "@param {Player} this - no description",
      "@param {string} className - Class name of weapon",
      "@returns {Weapon} - The weapon for the specified class."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetWeapon",
    "typings": [
      "(this: Player, className: string): Weapon"
    ]
  },
  {
    "comments": [
      "\nReturns the player's normal walking speed. Not sprinting, not slow walking. (+walk)\nSee also @Player:SetWalkSpeed, @Player:GetMaxSpeed and @Player:GetRunSpeed.\n",
      "@name Player:GetWalkSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetWalkSpeed",
      "@param {Player} this - no description",
      "@returns {number} - The normal walking speed."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetWalkSpeed",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the view offset of the player which equals the difference between the players actual position and their view when ducked.\nSee also @Player:GetViewOffset.\n",
      "@name Player:GetViewOffsetDucked",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetViewOffsetDucked",
      "@param {Player} this - no description",
      "@returns {Vector} - New crouching view offset, must be local vector to players @EntityFuncs:GetPos"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetViewOffsetDucked",
    "typings": [
      "(this: Player): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns players screen punch effect angle.\n",
      "@name Player:GetViewPunchAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetViewPunchAngles",
      "@param {Player} this - no description",
      "@returns {Angle} - The punch angle"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetViewPunchAngles",
    "typings": [
      "(this: Player): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the view offset of the player which equals the difference between the players actual position and their view.\nSee also @Player:GetViewOffsetDucked.\n",
      "@name Player:GetViewOffset",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetViewOffset",
      "@param {Player} this - no description",
      "@returns {Vector} - New view offset, must be local vector to players @EntityFuncs:GetPos"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetViewOffset",
    "typings": [
      "(this: Player): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the player's view model entity by the index.\nEach player has 3 view models by default, but only the first one is used.\nTo use the other viewmodels in your SWEP, see @EntityFuncs:SetWeaponModel.\n",
      "@name Player:GetViewModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetViewModel",
      "@note In the Client [realm](https://wiki.garrysmod.com/page/States), other players' viewmodels are not available unless they are being spectated.",
      "@param {Player} this - no description",
      "@param {number} index - optional index of the view model to return, can range from 0 to 2",
      "@returns {Entity} - The view model entity"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetViewModel",
    "typings": [
      "(this: Player, index?: number): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the entity the player is using to see from (such as the player itself, the camera, or another entity).\n",
      "@name Player:GetViewEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetViewEntity",
      "@param {Player} this - no description",
      "@returns {Entity} - The entity the player is using to see from"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetViewEntity",
    "typings": [
      "(this: Player): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the player's user group.\n",
      "@name Player:GetUserGroup",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetUserGroup",
      "@param {Player} this - no description",
      "@returns {string} - The user group of the player. This will return \"user\" if player has no user group."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetUserGroup",
    "typings": [
      "(this: Player): string"
    ]
  },
  {
    "comments": [
      "\nGets the vehicle the player is driving, returns NULL ENTITY if the player is not driving.\n",
      "@name Player:GetVehicle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetVehicle",
      "@param {Player} this - no description",
      "@returns {Vehicle} - vehicle"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetVehicle",
    "typings": [
      "(this: Player): Vehicle"
    ]
  },
  {
    "comments": [
      "\nReturns a player's unduck speed (in seconds)\n",
      "@name Player:GetUnDuckSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetUnDuckSpeed",
      "@param {Player} this - no description",
      "@returns {number} - unduck speed"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetUnDuckSpeed",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns TOOL table of players current tool, or of the one specified.\n",
      "@name Player:GetTool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetTool",
      "@param {Player} this - no description",
      "@param {string} mode - Classname of the tool to retrieve. ( Filename of the tool in gmod_tool/stools/ )",
      "@returns {table} - TOOL table, or nil if the table wasn't found or the player doesn't have a tool gun."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetTool",
    "typings": [
      "(this: Player, mode?: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns the number of seconds that the player has been timing out for. You can check if a player is timing out with @Player:IsTimingOut.\n",
      "@name Player:GetTimeoutSeconds",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetTimeoutSeconds",
      "@param {Player} this - no description",
      "@returns {number} - Timeout seconds."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetTimeoutSeconds",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum height player can step onto.\n",
      "@name Player:GetStepSize",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetStepSize",
      "@param {Player} this - no description",
      "@returns {number} - The maximum height player can get up onto without jumping, in hammer units."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetStepSize",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the position of a Player's view\n",
      "@name Player:GetShootPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetShootPos",
      "@note This is the same as calling @EntityFuncs:EyePos on the player.",
      "@param {Player} this - no description",
      "@returns {Vector} - aim pos"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetShootPos",
    "typings": [
      "(this: Player): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the player's HEV suit power.\n",
      "@name Player:GetSuitPower",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetSuitPower",
      "@bug #3449 This will only work for the local player when used clientside.",
      "@param {Player} this - no description",
      "@returns {number} - The current suit power."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetSuitPower",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the player's sprint speed.\nSee also @Player:SetRunSpeed, @Player:GetWalkSpeed and @Player:GetMaxSpeed.\n",
      "@name Player:GetRunSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetRunSpeed",
      "@param {Player} this - no description",
      "@returns {number} - The sprint speed"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetRunSpeed",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the render angles for the player.\n",
      "@name Player:GetRenderAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetRenderAngles",
      "@param {Player} this - no description",
      "@returns {Angle} - The render angles of the player. Only **yaw** part of the angle seems to be present."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetRenderAngles",
    "typings": [
      "(this: Player): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns players death ragdoll. The ragdoll is created by @Player:CreateRagdoll.\n",
      "@name Player:GetRagdollEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetRagdollEntity",
      "@param {Player} this - no description",
      "@returns {Entity} - The ragdoll.\nUnlike normal clientside ragdolls (C_ClientRagdoll), this will be a C_HL2MPRagdoll on the client, and hl2mp_ragdoll on the server."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetRagdollEntity",
    "typings": [
      "(this: Player): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns players screen punch effect angle.\n",
      "@name Player:GetPunchAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetPunchAngle",
      "@param {Player} this - no description",
      "@returns {Angle} - The punch angle"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetPunchAngle",
    "typings": [
      "(this: Player): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the preferred carry angles of an object, if any are set.\nCalls @GamemodeHooks:GetPreferredCarryAngles with the target entity and returns the carry angles.\n",
      "@name Player:GetPreferredCarryAngles",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetPreferredCarryAngles",
      "@param {Player} this - no description",
      "@param {Entity} carryEnt - Entity to retrieve the carry angles of.",
      "@returns {Angle} - Carry angles or nil if the entity has no preferred carry angles."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetPreferredCarryAngles",
    "typings": [
      "(this: Player, carryEnt: Entity): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns a table containing player information.\n",
      "@name Player:GetPlayerInfo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Player/GetPlayerInfo",
      "@param {Player} this - no description",
      "@returns {table} - A table containing player information."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetPlayerInfo",
    "typings": [
      "(this: Player): table"
    ]
  },
  {
    "comments": [
      "\nReturns the weapon the player previously had equipped.\n",
      "@name Player:GetPreviousWeapon",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetPreviousWeapon",
      "@warning This is not guaranteed to be a weapon entity so it should be checked with @EntityFuncs:IsWeapon for safety.",
      "@param {Player} this - no description",
      "@returns {Entity} - The previous weapon of the player."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetPreviousWeapon",
    "typings": [
      "(this: Player): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the widget entity the player is using.\nHaving a pressed widget stops the player from firing his weapon to allow input to be passed onto the widget.\n",
      "@name Player:GetPressedWidget",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetPressedWidget",
      "@param {Player} this - no description",
      "@returns {Entity} - The pressed widget."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetPressedWidget",
    "typings": [
      "(this: Player): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns a player model's color. The part of the model that is colored is determined by the model itself, and is different for each model. The format is Vector(r,g,b), and each color should be between 0 and 1.\n",
      "@name Player:GetPlayerColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetPlayerColor",
      "@param {Player} this - no description",
      "@returns {Vector} - color"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetPlayerColor",
    "typings": [
      "(this: Player): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns a **P**layer **Data** key-value pair from the SQL database. (sv.db when called on server,  cl.db when called on client)\nInternally uses the @sql library.\n",
      "@name Player:GetPData",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetPData",
      "@note PData is not networked from servers to clients!",
      "@warning This function internally uses @Player:UniqueID, which can cause collisions (two or more players sharing the same PData entry). It's recommended that you don't use it. See the related wiki page for more information.",
      "@param {Player} this - no description",
      "@param {string} key - Name of the PData key",
      "@param {any} def - Default value if PData key doesn't exist.",
      "@returns {string} - The data in the SQL database or the default value given."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetPData",
    "typings": [
      "(this: Player, key: string, def?: any): string"
    ]
  },
  {
    "comments": [
      "\nReturns the entity the player is currently observing.\nSet using @Player:SpectateEntity.\n",
      "@name Player:GetObserverTarget",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetObserverTarget",
      "@param {Player} this - no description",
      "@returns {Entity} - The entity the player is currently spectating, or [NULL](https://wiki.garrysmod.com/page/Global_Variables) if the player has no target."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetObserverTarget",
    "typings": [
      "(this: Player): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the the observer mode of the player\n",
      "@name Player:GetObserverMode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetObserverMode",
      "@param {Player} this - no description",
      "@returns {OBS_MODE} - Observe mode of that player, see @OBS_MODE enum."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetObserverMode",
    "typings": [
      "(this: Player): OBS_MODE"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the player is set not to collide with their teammates.\n",
      "@name Player:GetNoCollideWithTeammates",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetNoCollideWithTeammates",
      "@param {Player} this - no description",
      "@returns {boolean} - noCollideWithTeammates"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetNoCollideWithTeammates",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the player's maximum movement speed.\nSee also @Player:SetMaxSpeed, @Player:GetWalkSpeed and @Player:GetRunSpeed.\n",
      "@name Player:GetMaxSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetMaxSpeed",
      "@param {Player} this - no description",
      "@returns {number} - The maximum movement speed the player can go at."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetMaxSpeed",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the player's name, this is an alias of @Player:Nick.\n",
      "@name Player:GetName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetName",
      "@note This function overrides @EntityFuncs:GetName (in the Lua metatable, not in c++), keep it in mind when dealing with @ents.FindByName or any engine function which requires the mapping name.",
      "@bug #3178 This is limited to 31 characters even though Steam names can have 32.",
      "@param {Player} this - no description",
      "@returns {string} - The player's name."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetName",
    "typings": [
      "(this: Player): string"
    ]
  },
  {
    "comments": [
      "\nReturns the timescale multiplier of the player movement.\n",
      "@name Player:GetLaggedMovementValue",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetLaggedMovementValue",
      "@param {Player} this - no description",
      "@returns {number} - The timescale multiplier, defaults to 1."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetLaggedMovementValue",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the jump power of the player\n",
      "@name Player:GetJumpPower",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetJumpPower",
      "@param {Player} this - no description",
      "@returns {number} - Jump power"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetJumpPower",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nRetrieves the numeric value of a client-side convar, returns nil if value is not convertible to a number. The @ConVar type must have a [FCVAR_USERINFO](https://wiki.garrysmod.com/page/Enums/FCVAR) flag for this to work.\n",
      "@name Player:GetInfoNum",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetInfoNum",
      "@param {Player} this - no description",
      "@param {string} cVarName - The name of the @ConVar type to query the value of",
      "@param {number} def - Default value if we failed to retrieve the number.",
      "@returns {number} - The value of the @ConVar type or the default value"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetInfoNum",
    "typings": [
      "(this: Player, cVarName: string, def: number): number"
    ]
  },
  {
    "comments": [
      "\nRetrieves the value of a client-side @ConVar type. The @ConVar type must have a [FCVAR_USERINFO](https://wiki.garrysmod.com/page/Enums/FCVAR) flag for this to work.\n",
      "@name Player:GetInfo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetInfo",
      "@warning The returned value is truncated to 31 bytes.",
      "@param {Player} this - no description",
      "@param {string} cVarName - The name of the client-side @ConVar type",
      "@returns {string} - The value of the @ConVar type"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetInfo",
    "typings": [
      "(this: Player, cVarName: string): string"
    ]
  },
  {
    "comments": [
      "\nGets the bottom base and the top base size of the player's crouch hull.\n",
      "@name Player:GetHullDuck",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetHullDuck",
      "@param {Player} this - no description",
      "@returns {Vector} - Player's crouch hull bottom base size",
      "@returns {Vector} - Player's crouch hull top base size",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetHullDuck",
    "typings": [
      "(this: Player): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nGets the bottom base and the top base size of the player's hull.\n",
      "@name Player:GetHull",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetHull",
      "@param {Player} this - no description",
      "@returns {Vector} - Player's hull bottom base size",
      "@returns {Vector} - Player's hull top base size",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetHull",
    "typings": [
      "(this: Player): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all human ( non bot/AI ) players.\nUnlike @player.GetAll, this does not include bots.\n",
      "@name player.GetHumans",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player/GetHumans",
      "@param {void} this - no description",
      "@returns {table} - A table of all human ( non bot/AI ) players."
    ],
    "type": "func",
    "context": "player",
    "name": "GetHumans",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nCalled on player spawn to determine which hand model to use\n",
      "@name PlayerHooks:GetHandsModel",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/GetHandsModel",
      "@param {Player} this - no description",
      "@returns {table} - A table containing info about view model hands model to be set. See examples."
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "GetHandsModel",
    "typings": [
      "(this: Player): table"
    ]
  },
  {
    "comments": [
      "\nGets the hands entity of a player\n",
      "@name Player:GetHands",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetHands",
      "@param {Player} this - no description",
      "@returns {Entity} - The hands entity if players has one"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetHands",
    "typings": [
      "(this: Player): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the widget the player is hovering with his mouse.\n",
      "@name Player:GetHoveredWidget",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetHoveredWidget",
      "@param {Player} this - no description",
      "@returns {Entity} - The hovered widget."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetHoveredWidget",
    "typings": [
      "(this: Player): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the steam \"relationship\" towards the player.\n",
      "@name Player:GetFriendStatus",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Player/GetFriendStatus",
      "@param {Player} this - no description",
      "@returns {string} - Should return one of four different things depending on their status on your friends list: \"friend\", \"blocked\", \"none\" or \"requested\"."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetFriendStatus",
    "typings": [
      "(this: Player): string"
    ]
  },
  {
    "comments": [
      "\nReturns the FOV of the player.\n",
      "@name Player:GetFOV",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetFOV",
      "@param {Player} this - no description",
      "@returns {number} - Field of view as a float"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetFOV",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table with information of what the player is looking at.\nThe results of this function are cached every frame.\nSee also @Player:GetEyeTraceNoCursor\n",
      "@name Player:GetEyeTrace",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetEyeTrace",
      "@param {Player} this - no description",
      "@returns {TraceResult} - Trace information, see @TraceResult structure"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetEyeTrace",
    "typings": [
      "(this: Player): TraceResult"
    ]
  },
  {
    "comments": [
      "\nReturns the trace according to the players view direction, ignoring their mouse ( Holding C and moving the mouse in Sandbox ).\nThe results of this function are cached every frame.\nSee also @Player:GetEyeTrace\n",
      "@name Player:GetEyeTraceNoCursor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetEyeTraceNoCursor",
      "@param {Player} this - no description",
      "@returns {TraceResult} - Trace result. See @TraceResult structure"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetEyeTraceNoCursor",
    "typings": [
      "(this: Player): TraceResult"
    ]
  },
  {
    "comments": [
      "\nReturns the entity the player is currently using, like func_tank mounted turrets or +use prop pickups.\n",
      "@name Player:GetEntityInUse",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetEntityInUse",
      "@param {Player} this - no description",
      "@returns {Entity} - Entity in use, or NULL entity otherwise. For +use prop pickups, this will be NULL clientside."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetEntityInUse",
    "typings": [
      "(this: Player): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns a player's duck speed (in seconds)\n",
      "@name Player:GetDuckSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetDuckSpeed",
      "@param {Player} this - no description",
      "@returns {number} - duckspeed"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetDuckSpeed",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns driving mode of the player. See [Entity Driving](https://wiki.garrysmod.com/page/Entity%20Driving).\n",
      "@name Player:GetDrivingMode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetDrivingMode",
      "@param {Player} this - no description",
      "@returns {number} - The drive mode ID or 0 if player doesn't use the drive system."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetDrivingMode",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nGets the entity the player is currently driving.\n",
      "@name Player:GetDrivingEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetDrivingEntity",
      "@param {Player} this - no description",
      "@returns {Entity} - DriveEntity"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetDrivingEntity",
    "typings": [
      "(this: Player): Entity"
    ]
  },
  {
    "comments": [
      "\nGets the **actual** view offset which equals the difference between the players actual position and their view when standing.\nDo not confuse with @Player:GetViewOffset and @Player:GetViewOffsetDucked\n",
      "@name Player:GetCurrentViewOffset",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetCurrentViewOffset",
      "@param {Player} this - no description",
      "@returns {Vector} - The actual view offset."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetCurrentViewOffset",
    "typings": [
      "(this: Player): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the last command which was sent by the specified player. Can only be used in a [Predicted Hook](https://wiki.garrysmod.com/page/Category:Predicted_Hooks).\n",
      "@name Player:GetCurrentCommand",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetCurrentCommand",
      "@note When called clientside in singleplayer during @WeaponHooks:Think, it will return nothing as the hook is not technically predicted in that instance. See the note on the page.",
      "@bug #3302 This will fail in @GamemodeHooks:StartCommand.",
      "@param {Player} this - no description",
      "@returns {CUserCmd} - Last user commands"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetCurrentCommand",
    "typings": [
      "(this: Player): CUserCmd"
    ]
  },
  {
    "comments": [
      "\nGives you the player count.\nSimilar to #@player.GetAll but with much better performance.\n",
      "@name player.GetCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player/GetCount",
      "@param {void} this - no description",
      "@returns {number} - Number of players"
    ],
    "type": "func",
    "context": "player",
    "name": "GetCount",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the crouched walk speed multiplier.\nSee also @Player:GetWalkSpeed and @Player:SetCrouchedWalkSpeed.\n",
      "@name Player:GetCrouchedWalkSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetCrouchedWalkSpeed",
      "@param {Player} this - no description",
      "@returns {number} - The crouched walk speed multiplier."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetCrouchedWalkSpeed",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nGets total count of entities of same class.\n",
      "@name Player:GetCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetCount",
      "@param {Player} this - no description",
      "@param {string} type - Entity type to get count of.",
      "@param {number} minus - If specified, it will reduce the counter by this value. Works only serverside.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetCount",
    "typings": [
      "(this: Player, type: string, minus?: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the player's class id.\n",
      "@name Player:GetClassID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetClassID",
      "@param {Player} this - no description",
      "@returns {number} - The player's class id."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetClassID",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns true if the player is able to walk using the (default) alt key.\n",
      "@name Player:GetCanWalk",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetCanWalk",
      "@param {Player} this - no description",
      "@returns {boolean} - AbleToWalk"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetCanWalk",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines whenever the player is allowed to use the zoom functionality.\n",
      "@name Player:GetCanZoom",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetCanZoom",
      "@param {Player} this - no description",
      "@returns {boolean} - canZoom"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetCanZoom",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the player with the specified uniqueID (not recommended way to identify players).\n",
      "@name player.GetByUniqueID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player/GetByUniqueID",
      "@warning It is highly recommended to use @player.GetByAccountID, @player.GetBySteamID or @player.GetBySteamID64 instead as this function can have collisions ( be same for different people ) while SteamID is guaranteed to unique to each player.",
      "@param {void} this - no description",
      "@param {string} uniqueID - The @Player:UniqueID to find the player by.",
      "@returns {Player} - Player if one is found, false otherwise."
    ],
    "type": "func",
    "context": "player",
    "name": "GetByUniqueID",
    "typings": [
      "(this: void, uniqueID: string): Player"
    ]
  },
  {
    "comments": [
      "\nGets the player with the specified SteamID64.\n",
      "@name player.GetBySteamID64",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player/GetBySteamID64",
      "@param {void} this - no description",
      "@param {string} steamID64 - The @Player:SteamID64 to find the player by. Also accepts numbers.",
      "@returns {Player} - Player if one is found, false otherwise."
    ],
    "type": "func",
    "context": "player",
    "name": "GetBySteamID64",
    "typings": [
      "(this: void, steamID64: string): Player"
    ]
  },
  {
    "comments": [
      "\nGets the player with the specified connection ID.\nConnection ID can be retrieved via @gameevent.Listen events.\nFor a function that returns a player based on their @EntityFuncs:EntIndex, see @Entity function.\nFor a function that returns a player based on their @Player:UserID, see @Player function.\n",
      "@name player.GetByID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player/GetByID",
      "@param {void} this - no description",
      "@param {number} connectionID - The connection ID to find the player by.",
      "@returns {Player} - Player if one is found, nil otherwise"
    ],
    "type": "func",
    "context": "player",
    "name": "GetByID",
    "typings": [
      "(this: void, connectionID: number): Player"
    ]
  },
  {
    "comments": [
      "\nGets the player with the specified SteamID.\n",
      "@name player.GetBySteamID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player/GetBySteamID",
      "@param {void} this - no description",
      "@param {string} steamID - The @Player:SteamID to find the player by.",
      "@returns {Player} - Player if one is found, false otherwise."
    ],
    "type": "func",
    "context": "player",
    "name": "GetBySteamID",
    "typings": [
      "(this: void, steamID: string): Player"
    ]
  },
  {
    "comments": [
      "\nGets the player with the specified AccountID.\n",
      "@name player.GetByAccountID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player/GetByAccountID",
      "@param {void} this - no description",
      "@param {string} accountID - The @Player:AccountID to find the player by.",
      "@returns {Player} - Player if one is found, false otherwise."
    ],
    "type": "func",
    "context": "player",
    "name": "GetByAccountID",
    "typings": [
      "(this: void, accountID: string): Player"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all bots on the server.\n",
      "@name player.GetBots",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player/GetBots",
      "@param {void} this - no description",
      "@returns {table} - A table only containing bots ( AI / non human players )"
    ],
    "type": "func",
    "context": "player",
    "name": "GetBots",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nGets the amount of ammo the player has.\n",
      "@name Player:GetAmmoCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetAmmoCount",
      "@param {Player} this - no description",
      "@param {number | string} ammotype - The ammunition type. Can be either @number type ammo ID or @string type ammo name.",
      "@returns {number} - The amount of ammo player has in reserve."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetAmmoCount",
    "typings": [
      "(this: Player, ammotype: number | string): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all ammo the player has.\n",
      "@name Player:GetAmmo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetAmmo",
      "@param {Player} this - no description",
      "@returns {table} - @number type Key: AmmoID to be used with functions like @game.GetAmmoName.\n@number type Value: Amount of ammo the player has of this kind."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetAmmo",
    "typings": [
      "(this: Player): table"
    ]
  },
  {
    "comments": [
      "\nGets if the player will be pushed out of nocollided players.\n",
      "@name Player:GetAvoidPlayers",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetAvoidPlayers",
      "@param {Player} this - no description",
      "@returns {boolean} - pushed"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetAvoidPlayers",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the players' model is allowed to rotate around the pitch and roll axis.\n",
      "@name Player:GetAllowFullRotation",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetAllowFullRotation",
      "@param {Player} this - no description",
      "@returns {boolean} - Allowed"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetAllowFullRotation",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the player is allowed to use his weapons in a vehicle or not.\n",
      "@name Player:GetAllowWeaponsInVehicle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetAllowWeaponsInVehicle",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the player is allowed to use his weapons in a vehicle or not."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetAllowWeaponsInVehicle",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the direction that the player is aiming.\n",
      "@name Player:GetAimVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetAimVector",
      "@param {Player} this - no description",
      "@returns {Vector} - The direction vector of players aim"
    ],
    "type": "class",
    "context": "Player",
    "name": "GetAimVector",
    "typings": [
      "(this: Player): Vector"
    ]
  },
  {
    "comments": [
      "\nGets all the current players in the server (not including connecting clients).\n",
      "@name player.GetAll",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/player/GetAll",
      "@note This function returns bots as well as human players. See @player.GetBots and  @player.GetHumans.",
      "@param {void} this - no description",
      "@returns {table} - All @Player types currently in the server."
    ],
    "type": "func",
    "context": "player",
    "name": "GetAll",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nFreeze the player. Frozen players cannot move, look around, or attack. Key bindings are still called. Similar to @Player:Lock but the player can still take damage.\nAdds or removes the [FL_FROZEN](https://wiki.garrysmod.com/page/Enums/FL) flag from the player.\n",
      "@name Player:Freeze",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/Freeze",
      "@bug  Frozen bots will still be able to look around.",
      "@param {Player} this - no description",
      "@param {boolean} frozen - Whether the player should be frozen.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "Freeze",
    "typings": [
      "(this: Player, frozen?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of kills a player has.\n",
      "@name Player:Frags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/Frags",
      "@param {Player} this - no description",
      "@returns {number} - kills"
    ],
    "type": "class",
    "context": "Player",
    "name": "Frags",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns the player's active weapon.\n",
      "@name Player:GetActiveWeapon",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/GetActiveWeapon",
      "@param {Player} this - no description",
      "@returns {Weapon} - The weapon the player is currently has equipped."
    ],
    "type": "class",
    "context": "Player",
    "name": "GetActiveWeapon",
    "typings": [
      "(this: Player): Weapon"
    ]
  },
  {
    "comments": [
      "\nReturns true if the player's flashlight is on.\n",
      "@name Player:FlashlightIsOn",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/FlashlightIsOn",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the player's flashlight is on."
    ],
    "type": "class",
    "context": "Player",
    "name": "FlashlightIsOn",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nEnables/Disables the player's flashlight\n",
      "@name Player:Flashlight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/Flashlight",
      "@param {Player} this - no description",
      "@param {boolean} isOn - Turns the flashlight on/off",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "Flashlight",
    "typings": [
      "(this: Player, isOn: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled from @GamemodeHooks:FinishMove.\n",
      "@name PlayerHooks:FinishMove",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PLAYER/FinishMove",
      "@note This hook is run after the @drive.FinishMove has been called.",
      "@warning This hook will not work if the current gamemode overrides @GamemodeHooks:FinishMove and does not call this hook.",
      "@param {Player} this - no description",
      "@param {CMoveData} mv - no description",
      "@returns {boolean} - Return true to prevent default action"
    ],
    "type": "class",
    "context": "PlayerHooks",
    "extends": [
      "Player"
    ],
    "name": "FinishMove",
    "typings": [
      "(this: Player, mv: CMoveData): boolean"
    ]
  },
  {
    "comments": [
      "\nMakes the player exit the vehicle if they're in one.\n",
      "@name Player:ExitVehicle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/ExitVehicle",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "ExitVehicle",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nEquips the player with the HEV suit.\nAllows the player to zoom, walk slowly, sprint, pickup armor batteries, use the health and armor stations and also shows the HUD.\nThe player also emits a flatline sound on death, which can be overridden with @GamemodeHooks:PlayerDeathSound.\nThe player is automatically equipped with the suit on spawn, if you wish to stop that, use @Player:RemoveSuit.\n",
      "@name Player:EquipSuit",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/EquipSuit",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "EquipSuit",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nEnters the player into specified vehicle\n",
      "@name Player:EnterVehicle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/EnterVehicle",
      "@param {Player} this - no description",
      "@param {Vehicle} vehicle - Vehicle the player will enter",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "EnterVehicle",
    "typings": [
      "(this: Player, vehicle: Vehicle): void"
    ]
  },
  {
    "comments": [
      "\nForces the player to drop the specified weapon\n",
      "@name Player:DropWeapon",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/DropWeapon",
      "@param {Player} this - no description",
      "@param {Weapon} weapon - Weapon to be dropped. If unset, will default to the currently equipped weapon.",
      "@param {Vector} target - If set, launches the weapon at given position. There is a limit to how far it is willing to throw the weapon. Overrides velocity argument.",
      "@param {Vector} velocity - If set and previous argument is unset, launches the weapon with given velocity. If the velocity is higher than 400, it will be clamped to 400.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DropWeapon",
    "typings": [
      "(this: Player, weapon?: Weapon, target?: Vector, velocity?: Vector): void"
    ]
  },
  {
    "comments": [
      "\nDrops any object the player is currently holding with either gravitygun or +Use (E key)\n",
      "@name Player:DropObject",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/DropObject",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DropObject",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nShow/Hide the player's weapon's worldmodel.\n",
      "@name Player:DrawWorldModel",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/DrawWorldModel",
      "@param {Player} this - no description",
      "@param {boolean} draw - Should draw",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DrawWorldModel",
    "typings": [
      "(this: Player, draw: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDrops the players' weapon of a specific class.\n",
      "@name Player:DropNamedWeapon",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/DropNamedWeapon",
      "@param {Player} this - no description",
      "@param {string} cls - The class to drop.",
      "@param {Vector} target - If set, launches the weapon at given position. There is a limit to how far it is willing to throw the weapon. Overrides velocity argument.",
      "@param {Vector} velocity - If set and previous argument is unset, launches the weapon with given velocity. If the velocity is higher than 400, it will be clamped to 400.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DropNamedWeapon",
    "typings": [
      "(this: Player, cls: string, target?: Vector, velocity?: Vector): void"
    ]
  },
  {
    "comments": [
      "\nShow/Hide the player's weapon's viewmodel.\n",
      "@name Player:DrawViewModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/DrawViewModel",
      "@param {Player} this - no description",
      "@param {boolean} draw - Should draw",
      "@param {number} vm - Which view model to show/hide, 0-2.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DrawViewModel",
    "typings": [
      "(this: Player, draw: boolean, vm?: number): void"
    ]
  },
  {
    "comments": [
      "\nSends a third person secondary fire animation event to the player.\nSimilar to other animation event functions, calls @GamemodeHooks:DoAnimationEvent with [PLAYERANIMEVENT_ATTACK_SECONDARY](https://wiki.garrysmod.com/page/Enums/PLAYERANIMEVENT%20) as the event and no extra data.\n",
      "@name Player:DoSecondaryAttack",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/DoSecondaryAttack",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DoSecondaryAttack",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nSends a third person reload animation event to the player.\nSimilar to other animation event functions, calls @GamemodeHooks:DoAnimationEvent with [PLAYERANIMEVENT_RELOAD](https://wiki.garrysmod.com/page/Enums/PLAYERANIMEVENT%20) as the event and no extra data.\n",
      "@name Player:DoReloadEvent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/DoReloadEvent",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DoReloadEvent",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nSends a specified third person animation event to the player.\nCalls @GamemodeHooks:DoAnimationEvent with specified arguments.\n",
      "@name Player:DoCustomAnimEvent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/DoCustomAnimEvent",
      "@param {Player} this - no description",
      "@param {PLAYERANIMEVENT} event - The event to send. See @PLAYERANIMEVENT enum.",
      "@param {number} data - The data to send alongside the event.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DoCustomAnimEvent",
    "typings": [
      "(this: Player, event: PLAYERANIMEVENT, data: number): void"
    ]
  },
  {
    "comments": [
      "\nDetonates all tripmines belonging to the player.\n",
      "@name Player:DetonateTripmines",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/DetonateTripmines",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DetonateTripmines",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nStarts the player's attack animation. The attack animation is determined by the weapon's HoldType.\nSimilar to other animation event functions, calls @GamemodeHooks:DoAnimationEvent with [PLAYERANIMEVENT_ATTACK_PRIMARY](https://wiki.garrysmod.com/page/Enums/PLAYERANIMEVENT%20) as the event and no extra data.\n",
      "@name Player:DoAttackEvent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/DoAttackEvent",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DoAttackEvent",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nSends a third person animation event to the player.\nCalls @GamemodeHooks:DoAnimationEvent with [PLAYERANIMEVENT_CUSTOM_GESTURE](https://wiki.garrysmod.com/page/Enums/PLAYERANIMEVENT%20) as the event, data as the given data.\n",
      "@name Player:DoAnimationEvent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/DoAnimationEvent",
      "@param {Player} this - no description",
      "@param {number} data - The data to send.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DoAnimationEvent",
    "typings": [
      "(this: Player, data: number): void"
    ]
  },
  {
    "comments": [
      "\nPrints the players' name and position to the console.\n",
      "@name Player:DebugInfo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/DebugInfo",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "DebugInfo",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns the player's death count\n",
      "@name Player:Deaths",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/Deaths",
      "@param {Player} this - no description",
      "@returns {number} - The number of deaths the player has had."
    ],
    "type": "class",
    "context": "Player",
    "name": "Deaths",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether the player is crouching or not\n",
      "@name Player:Crouching",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/Crouching",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the player is crouching"
    ],
    "type": "class",
    "context": "Player",
    "name": "Crouching",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nEnables the player's crosshair, if it was previously disabled via @Player:CrosshairDisable.\n",
      "@name Player:CrosshairEnable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/CrosshairEnable",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "CrosshairEnable",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nDisables the default player's crosshair. Can be reenabled with @Player:CrosshairEnable. This will affect @WeaponHooks:DoDrawCrosshair.\n",
      "@name Player:CrosshairDisable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/CrosshairDisable",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "CrosshairDisable",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nCreates the player's death ragdoll entity and deletes the old one.\nThis is normally used when a player dies, to create their death ragdoll.\nThe ragdoll will be created with the player's properties such as [Position](https://wiki.garrysmod.com/page/Entity/GetPos), [Angles](https://wiki.garrysmod.com/page/Entity/GetAngles), [PlayerColor](https://wiki.garrysmod.com/page/Player/GetPlayerColor), [Velocity](https://wiki.garrysmod.com/page/Entity/GetVelocity) and [Model](https://wiki.garrysmod.com/page/Entity/GetModel).\nYou can retrieve the entity this creates with @Player:GetRagdollEntity.\n",
      "@name Player:CreateRagdoll",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/CreateRagdoll",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "CreateRagdoll",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nSimilar to the serverside command \"bot\", this function creates a new Player bot with the given name. This bot will not obey to the usual \"bot_*\" commands, and it's the same bot base used in TF2 and CS:S.\nThe best way to control the behaviour of a Player bot right now is to use the @GamemodeHooks:StartCommand hook and modify its input serverside.\n",
      "@name player.CreateNextBot",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/player/CreateNextBot",
      "@note Despite this Player being fake, it has to be removed from the server by using @Player:Kick and **NOT** @EntityFuncs:Remove.\nAlso keep in mind that these bots still use player slots, so you won't be able to spawn them in singleplayer!",
      "@note Any Bot created using this method will be considered UnAuthed by Garry's Mod",
      "@param {void} this - no description",
      "@param {string} botName - The name of the bot, using an already existing name will append brackets at the end of it with a number pertaining it.\nExample: \"Bot name test\", \"Bot name test(1)\".",
      "@returns {Player} - The newly created Player bot. Returns NULL if there's no Player slots available to host it."
    ],
    "type": "func",
    "context": "player",
    "name": "CreateNextBot",
    "typings": [
      "(this: void, botName: string): Player"
    ]
  },
  {
    "comments": [
      "\nRuns the concommand on the player. This does not work on bots.\nIf you wish to directly modify the movement input of bots, use @GamemodeHooks:StartCommand instead.\n",
      "@name Player:ConCommand",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/ConCommand",
      "@note Some commands/convars are blocked from being ran/changed using this function, usually to prevent harm/annoyance to clients. For a list of blocked commands, see [Blocked ConCommands](https://wiki.garrysmod.com/page/Blocked%20ConCommands).",
      "@param {Player} this - no description",
      "@param {string} command - command to run",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "ConCommand",
    "typings": [
      "(this: Player, command: string): void"
    ]
  },
  {
    "comments": [
      "\nChecks if the limit is hit or not. If it is, it will throw a notification saying so.\n",
      "@name Player:CheckLimit",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/CheckLimit",
      "@param {Player} this - no description",
      "@param {string} limitType - Limit type. In unmodified Sandbox possible values are:\n* \"props\"\n* \"ragdolls\"\n* \"vehicles\"\n* \"effects\"\n* \"balloons\"\n* \"cameras\"\n* \"npcs\"\n* \"sents\"\n* \"dynamite\"\n* \"lamps\"\n* \"lights\"\n* \"wheels\"\n* \"thrusters\"\n* \"hoverballs\"\n* \"buttons\"\n* \"emitters\"",
      "@returns {boolean} - Returns true if limit is not hit, false if it is hit"
    ],
    "type": "class",
    "context": "Player",
    "name": "CheckLimit",
    "typings": [
      "(this: Player, limitType: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the player's flashlight hasn't been disabled by @ Player:AllowFlashlight.\n",
      "@name Player:CanUseFlashlight",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/CanUseFlashlight",
      "@note This is not synchronized between clients and server automatically!",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the player can use flashlight."
    ],
    "type": "class",
    "context": "Player",
    "name": "CanUseFlashlight",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nBans the player from the server for a certain amount of minutes.\n",
      "@name Player:Ban",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/Ban",
      "@param {Player} this - no description",
      "@param {number} minutes - Duration of the ban in minutes (0 is permanent)",
      "@param {boolean} kick - Whether to kick the player after banning them or not",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "Ban",
    "typings": [
      "(this: Player, minutes: number, kick?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nPrints a string to the chatbox of the client.\n",
      "@name Player:ChatPrint",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/ChatPrint",
      "@warning Just like the @usermessage library, this function is affected by the 255 byte limit!",
      "@param {Player} this - no description",
      "@param {string} message - String to be printed",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "ChatPrint",
    "typings": [
      "(this: Player, message: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the player's armor.\n",
      "@name Player:Armor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/Armor",
      "@param {Player} this - no description",
      "@returns {number} - The player's armor."
    ],
    "type": "class",
    "context": "Player",
    "name": "Armor",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nSets the weight of the animation playing in the given gesture slot.\n",
      "@name Player:AnimSetGestureWeight",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/AnimSetGestureWeight",
      "@param {Player} this - no description",
      "@param {GESTURE_SLOT} slot - The gesture slot. See @GESTURE_SLOT enum",
      "@param {number} weight - The weight this slot should be set to. Value must be ranging from 0 to 1.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AnimSetGestureWeight",
    "typings": [
      "(this: Player, slot: GESTURE_SLOT, weight: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the sequence of the animation playing in the given gesture slot.\n",
      "@name Player:AnimSetGestureSequence",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/AnimSetGestureSequence",
      "@param {Player} this - no description",
      "@param {GESTURE_SLOT} slot - The gesture slot. See @GESTURE_SLOT enum",
      "@param {number} sequenceID - Sequence ID to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AnimSetGestureSequence",
    "typings": [
      "(this: Player, slot: GESTURE_SLOT, sequenceID: number): void"
    ]
  },
  {
    "comments": [
      "\nRestarts the main animation on the player, has the same effect as calling @EntityFuncs:SetCycle( 0 ).\n",
      "@name Player:AnimRestartMainSequence",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/AnimRestartMainSequence",
      "@param {Player} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AnimRestartMainSequence",
    "typings": [
      "(this: Player): void"
    ]
  },
  {
    "comments": [
      "\nRestart a gesture on a player, within a gesture slot.\n",
      "@name Player:AnimRestartGesture",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/AnimRestartGesture",
      "@warning This is not automatically networked. This function has to be called on the client to be seen by said client.",
      "@param {Player} this - no description",
      "@param {GESTURE_SLOT} slot - Gesture slot using @GESTURE_SLOT enum",
      "@param {ACT} activity - The activity ( see @ACT enum ) or sequence that should be played",
      "@param {boolean} autokill - Whether the animation should be automatically stopped. true = stops the animation, false = the animation keeps playing/looping",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AnimRestartGesture",
    "typings": [
      "(this: Player, slot: GESTURE_SLOT, activity: ACT, autokill?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nResets player gesture in selected slot.\n",
      "@name Player:AnimResetGestureSlot",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/AnimResetGestureSlot",
      "@param {Player} this - no description",
      "@param {GESTURE_SLOT} slot - Slot to reset. See the @GESTURE_SLOT enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AnimResetGestureSlot",
    "typings": [
      "(this: Player, slot: GESTURE_SLOT): void"
    ]
  },
  {
    "comments": [
      "\nLets the player spray his decal without delay\n",
      "@name Player:AllowImmediateDecalPainting",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/AllowImmediateDecalPainting",
      "@param {Player} this - no description",
      "@param {boolean} allow - Allow or disallow",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AllowImmediateDecalPainting",
    "typings": [
      "(this: Player, allow: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets if the player can toggle his flashlight. Function exists on both the server and client but has no effect when ran on the client.\n",
      "@name Player:AllowFlashlight",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/AllowFlashlight",
      "@param {Player} this - no description",
      "@param {boolean} canFlashlight - True allows flashlight toggling",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AllowFlashlight",
    "typings": [
      "(this: Player, canFlashlight: boolean): void"
    ]
  },
  {
    "comments": [
      "\nPlays a sequence directly from a sequence number, similar to @Player:AnimRestartGesture. This function has the advantage to play sequences that haven't been bound to an existing @ACT enum\n",
      "@name Player:AddVCDSequenceToGestureSlot",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/AddVCDSequenceToGestureSlot",
      "@param {Player} this - no description",
      "@param {GESTURE_SLOT} slot - Gesture slot using @GESTURE_SLOT enum",
      "@param {number} sequenceId - The sequence ID to play, can be retrieved with @EntityFuncs:LookupSequence.",
      "@param {number} cycle - The cycle to start the animation at, ranges from 0 to 1.",
      "@param {boolean} autokill - If the animation should not loop. true = stops the animation, false = the animation keeps playing.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AddVCDSequenceToGestureSlot",
    "typings": [
      "(this: Player, slot: GESTURE_SLOT, sequenceId: number, cycle: number, autokill?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nChecks if the player is alive.\n",
      "@name Player:Alive",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/Alive",
      "@param {Player} this - no description",
      "@returns {boolean} - Whether the player is alive"
    ],
    "type": "class",
    "context": "Player",
    "name": "Alive",
    "typings": [
      "(this: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nSets up the voting system for the player.\nThis is a really barebone system. By calling this a vote gets started, when the player presses 0-9 the callback function gets called along with the key the player pressed. Use the draw callback to draw the vote panel.\n",
      "@name Player:AddPlayerOption",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Player/AddPlayerOption",
      "@param {Player} this - no description",
      "@param {string} name - Name of the vote",
      "@param {number} timeout - Time until the vote expires",
      "@param {function} vote_callback - The function to be run when the player presses 0-9 while a vote is active.",
      "@param {function} draw_callback - Used to draw the vote panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AddPlayerOption",
    "typings": [
      "(this: Player, name: string, timeout: number, vote_callback: UnknownFunc, draw_callback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nAdd a certain amount to the player's death count\n",
      "@name Player:AddDeaths",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/AddDeaths",
      "@param {Player} this - no description",
      "@param {number} count - number of deaths to add",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AddDeaths",
    "typings": [
      "(this: Player, count: number): void"
    ]
  },
  {
    "comments": [
      "\nAdds a entity to the players list of frozen objects.\n",
      "@name Player:AddFrozenPhysicsObject",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/AddFrozenPhysicsObject",
      "@param {Player} this - no description",
      "@param {Entity} ent - Entity",
      "@param {PhysObj} physobj - Physics object belonging to ent",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AddFrozenPhysicsObject",
    "typings": [
      "(this: Player, ent: Entity, physobj: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nAdd a certain amount to the player's frag count (or kills count)\n",
      "@name Player:AddFrags",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Player/AddFrags",
      "@param {Player} this - no description",
      "@param {number} count - number of frags to add",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AddFrags",
    "typings": [
      "(this: Player, count: number): void"
    ]
  },
  {
    "comments": [
      "\nAdds an entity to the total count of entities of same class.\n",
      "@name Player:AddCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/AddCount",
      "@param {Player} this - no description",
      "@param {string} str - Entity type",
      "@param {Entity} ent - Entity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AddCount",
    "typings": [
      "(this: Player, str: string, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nReturns the player's AccountID aka SteamID3.\nFor bots and in singleplayer, this will return no value.\n",
      "@name Player:AccountID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/AccountID",
      "@param {Player} this - no description",
      "@returns {number} - Player's SteamID3 aka AccountID."
    ],
    "type": "class",
    "context": "Player",
    "name": "AccountID",
    "typings": [
      "(this: Player): number"
    ]
  },
  {
    "comments": [
      "\nAdds an entity to the players clean up list.\n",
      "@name Player:AddCleanup",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Player/AddCleanup",
      "@param {Player} this - no description",
      "@param {string} type - Cleanup type",
      "@param {Entity} ent - Entity to add",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Player",
    "name": "AddCleanup",
    "typings": [
      "(this: Player, type: string, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nRotate a vector from the world frame to the local frame of the physics object.\n",
      "@name PhysObj:WorldToLocalVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/WorldToLocalVector",
      "@note This function only rotates the vector, without any translation operation.",
      "@param {PhysObj} this - no description",
      "@param {Vector} WorldVec - A vector in the world frame",
      "@returns {Vector} - The corresponding vector relative to the PhysObj"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "WorldToLocalVector",
    "typings": [
      "(this: PhysObj, WorldVec: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nConverts a vector to a relative to the physics object coordinate system.\n",
      "@name PhysObj:WorldToLocal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/WorldToLocal",
      "@param {PhysObj} this - no description",
      "@param {Vector} vec - The vector in world space coordinates.",
      "@returns {Vector} - The vector local to @PhysObj:GetPos."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "WorldToLocal",
    "typings": [
      "(this: PhysObj, vec: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nWakes the physics object.\nSee @PhysObj:Sleep for more information.\n",
      "@name PhysObj:Wake",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/Wake",
      "@param {PhysObj} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "Wake",
    "typings": [
      "(this: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nUnlike @PhysObj:SetPos and @PhysObj:SetAngles, this allows the movement of a physobj while leaving physics interactions intact.\nThis is used internally by the motion controller of the Gravity Gun , the +use pickup and the Physics Gun, and entities such as the crane.\n",
      "@name PhysObj:UpdateShadow",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/UpdateShadow",
      "@note This is the ideal function to move a physics shadow created with @EntityFuncs:PhysicsInitShadow or @EntityFuncs:MakePhysicsObjectAShadow.",
      "@param {PhysObj} this - no description",
      "@param {Vector} targetPosition - The position we should move to.",
      "@param {Angle} targetAngles - The angle we should rotate towards.",
      "@param {number} frameTime - The frame time to use for this movement, can be generally filled with @FrameTime function or @EntityHooks:PhysicsSimulate with the deltaTime.\nCan be set to 0 when you need to update the physics object just once.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "UpdateShadow",
    "typings": [
      "(this: PhysObj, targetPosition: Vector, targetAngles: Angle, frameTime: number): void"
    ]
  },
  {
    "comments": [
      "\nMakes the physics object \"sleep\".\nThe physics object will no longer be moving unless it is \"woken up\" by either a collision with another moving object, or by @PhysObj:Wake. This is an optimization feature of the physics engine.\n",
      "@name PhysObj:Sleep",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/Sleep",
      "@param {PhysObj} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "Sleep",
    "typings": [
      "(this: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nSets the velocity of the physics object.\n",
      "@name PhysObj:SetVelocityInstantaneous",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetVelocityInstantaneous",
      "@param {PhysObj} this - no description",
      "@param {Vector} velocity - The new velocity of the physics object.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetVelocityInstantaneous",
    "typings": [
      "(this: PhysObj, velocity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the velocity of the physics object for the next iteration.\n",
      "@name PhysObj:SetVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetVelocity",
      "@param {PhysObj} this - no description",
      "@param {Vector} velocity - The new velocity of the physics object.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetVelocity",
    "typings": [
      "(this: PhysObj, velocity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the position of the physobject.\n",
      "@name PhysObj:SetPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetPos",
      "@param {PhysObj} this - no description",
      "@param {Vector} position - The new position of the physobject.",
      "@param {boolean} teleport - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetPos",
    "typings": [
      "(this: PhysObj, position: Vector, teleport?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the material of the physobject.\n",
      "@name PhysObj:SetMaterial",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetMaterial",
      "@note Impact sounds will only change if this is called on client",
      "@param {PhysObj} this - no description",
      "@param {string} materialName - The name of the phys material to use. From this list: [Valve Developer](https://developer.valvesoftware.com/wiki/Material_surface_properties)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetMaterial",
    "typings": [
      "(this: PhysObj, materialName: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the directional inertia.\n",
      "@name PhysObj:SetInertia",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetInertia",
      "@param {PhysObj} this - no description",
      "@param {Vector} directionalInertia - The directional inertia of the object.\nA value of Vector(0,0,0) makes the physobject go invalid.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetInertia",
    "typings": [
      "(this: PhysObj, directionalInertia: Vector): void"
    ]
  },
  {
    "comments": [
      "\nModifies how much drag (air resistance) affects the object.\n",
      "@name PhysObj:SetDragCoefficient",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetDragCoefficient",
      "@param {PhysObj} this - no description",
      "@param {number} drag - The drag coefficient\nIt can be positive or negative.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetDragCoefficient",
    "typings": [
      "(this: PhysObj, drag: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the mass of the physics object.\n",
      "@name PhysObj:SetMass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetMass",
      "@param {PhysObj} this - no description",
      "@param {number} mass - The mass in kilograms.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetMass",
    "typings": [
      "(this: PhysObj, mass: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the linear and angular damping of the physics object.\n",
      "@name PhysObj:SetDamping",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetDamping",
      "@param {PhysObj} this - no description",
      "@param {number} linearDamping - Linear damping.",
      "@param {number} angularDamping - Angular damping.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetDamping",
    "typings": [
      "(this: PhysObj, linearDamping: number, angularDamping: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the contents flag of the @PhysObj type.\n",
      "@name PhysObj:SetContents",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetContents",
      "@param {PhysObj} this - no description",
      "@param {CONTENTS} contents - The @CONTENTS enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetContents",
    "typings": [
      "(this: PhysObj, contents: CONTENTS): void"
    ]
  },
  {
    "comments": [
      "\nSets the buoyancy ratio of the physics object. (How well it floats in water)\n",
      "@name PhysObj:SetBuoyancyRatio",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetBuoyancyRatio",
      "@param {PhysObj} this - no description",
      "@param {number} buoyancy - Buoyancy ratio, where 0 is not buoyant at all (like a rock), and 1 is very buoyant (like wood)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetBuoyancyRatio",
    "typings": [
      "(this: PhysObj, buoyancy: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the angles of the physobject.\n",
      "@name PhysObj:SetAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetAngles",
      "@param {PhysObj} this - no description",
      "@param {Angle} angles - The new angles of the physobject.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetAngles",
    "typings": [
      "(this: PhysObj, angles: Angle): void"
    ]
  },
  {
    "comments": [
      "\nA convinience function for @AngleFuncs:RotateAroundAxis.\n",
      "@name PhysObj:RotateAroundAxis",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/RotateAroundAxis",
      "@param {PhysObj} this - no description",
      "@param {Vector} dir - Direction, around which we will rotate",
      "@param {number} ang - Amount of rotation, in degrees",
      "@returns {Angle} - The resulting angle"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "RotateAroundAxis",
    "typings": [
      "(this: PhysObj, dir: Vector, ang: number): Angle"
    ]
  },
  {
    "comments": [
      "\nSets the amount of [drag](https://en.wikipedia.org/wiki/Drag_(physics)) to apply to a physics object when attempting to rotate.\n",
      "@name PhysObj:SetAngleDragCoefficient",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/SetAngleDragCoefficient",
      "@param {PhysObj} this - no description",
      "@param {number} coefficient - [Drag coefficient](https://en.wikipedia.org/wiki/Drag_coefficient). The bigger this value is, the slower the angles will change.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "SetAngleDragCoefficient",
    "typings": [
      "(this: PhysObj, coefficient: number): void"
    ]
  },
  {
    "comments": [
      "\nCall this when the collision filter conditions change due to this object's state (e.g. changing solid type or collision group)\n",
      "@name PhysObj:RecheckCollisionFilter",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/RecheckCollisionFilter",
      "@param {PhysObj} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "RecheckCollisionFilter",
    "typings": [
      "(this: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nPrints debug info about the state of the physics object to the console.\n",
      "@name PhysObj:OutputDebugInfo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/OutputDebugInfo",
      "@param {PhysObj} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "OutputDebugInfo",
    "typings": [
      "(this: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nRotate a vector from the local frame of the physics object to world frame.\n",
      "@name PhysObj:LocalToWorldVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/LocalToWorldVector",
      "@note This function only rotates the vector, without any translation operation.",
      "@param {PhysObj} this - no description",
      "@param {Vector} LocalVec - A vector in the physics object's local frame",
      "@returns {Vector} - The corresponding vector in world frame"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "LocalToWorldVector",
    "typings": [
      "(this: PhysObj, LocalVec: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nMapping a vector in local frame of the physics object to world frame.\n",
      "@name PhysObj:LocalToWorld",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/LocalToWorld",
      "@note this function does translation and rotation, with translation done first.",
      "@param {PhysObj} this - no description",
      "@param {Vector} LocalVec - A vector in the physics object's local frame",
      "@returns {Vector} - The corresponding vector in world frame"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "LocalToWorld",
    "typings": [
      "(this: PhysObj, LocalVec: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns if the physics object is valid/not NULL.\n",
      "@name PhysObj:IsValid",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/IsValid",
      "@param {PhysObj} this - no description",
      "@returns {boolean} - isValid"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "IsValid",
    "typings": [
      "(this: PhysObj): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the physics object is penetrating another physics object.\nThis is internally implemented as PhysObj:HasGameFlag( FVPHYSICS_PENETRATING )``` and thus is only updated for non-static physics objects.\n",
      "@name PhysObj:IsPenetrating",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/IsPenetrating",
      "@param {PhysObj} this - no description",
      "@returns {boolean} - Whether the physics object is penetrating another object."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "IsPenetrating",
    "typings": [
      "(this: PhysObj): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the entity is able to move.\n",
      "@name PhysObj:IsMoveable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/IsMoveable",
      "@param {PhysObj} this - no description",
      "@returns {boolean} - movable"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "IsMoveable",
    "typings": [
      "(this: PhysObj): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the physics object can move itself (by velocity, acceleration)\n",
      "@name PhysObj:IsMotionEnabled",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/IsMotionEnabled",
      "@param {PhysObj} this - no description",
      "@returns {boolean} - motionEnabled"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "IsMotionEnabled",
    "typings": [
      "(this: PhysObj): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the entity is affected by gravity.\n",
      "@name PhysObj:IsGravityEnabled",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/IsGravityEnabled",
      "@param {PhysObj} this - no description",
      "@returns {boolean} - gravitated"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "IsGravityEnabled",
    "typings": [
      "(this: PhysObj): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the entity is affected by drag.\n",
      "@name PhysObj:IsDragEnabled",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/IsDragEnabled",
      "@param {PhysObj} this - no description",
      "@returns {boolean} - dragEnabled"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "IsDragEnabled",
    "typings": [
      "(this: PhysObj): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the entity is able to collide or not.\n",
      "@name PhysObj:IsCollisionEnabled",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/IsCollisionEnabled",
      "@param {PhysObj} this - no description",
      "@returns {boolean} - isCollisionEnabled"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "IsCollisionEnabled",
    "typings": [
      "(this: PhysObj): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the physics object is \"sleeping\".\nSee @PhysObj:Sleep for more information.\n",
      "@name PhysObj:IsAsleep",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/IsAsleep",
      "@param {PhysObj} this - no description",
      "@returns {boolean} - Whether the physics object is sleeping."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "IsAsleep",
    "typings": [
      "(this: PhysObj): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the specified flag(s) is/are set.\n",
      "@name PhysObj:HasGameFlag",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/HasGameFlag",
      "@param {PhysObj} this - no description",
      "@param {FVPHYSICS} flags - Bitflag, see @FVPHYSICS enum.",
      "@returns {boolean} - If flag was set or not"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "HasGameFlag",
    "typings": [
      "(this: PhysObj, flags: FVPHYSICS): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the volume in source units³. Or nil if the PhysObj is a generated sphere or box.\n",
      "@name PhysObj:GetVolume",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetVolume",
      "@param {PhysObj} this - no description",
      "@returns {number} - The volume or nil if the PhysObj is a generated sphere or box."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetVolume",
    "typings": [
      "(this: PhysObj): number"
    ]
  },
  {
    "comments": [
      "\nReturns the world velocity of a point in world coordinates about the object.\n",
      "@name PhysObj:GetVelocityAtPoint",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetVelocityAtPoint",
      "@param {PhysObj} this - no description",
      "@param {Vector} point - no description",
      "@returns {Vector} - no description"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetVelocityAtPoint",
    "typings": [
      "(this: PhysObj, point: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the absolute directional velocity of the physobject.\n",
      "@name PhysObj:GetVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetVelocity",
      "@param {PhysObj} this - no description",
      "@returns {Vector} - velocity"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetVelocity",
    "typings": [
      "(this: PhysObj): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the surface area of the physics object in source-units². Or nil if the PhysObj is a generated sphere or box.\n",
      "@name PhysObj:GetSurfaceArea",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetSurfaceArea",
      "@param {PhysObj} this - no description",
      "@returns {number} - The surface area or nil if the PhysObj is a generated sphere or box."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetSurfaceArea",
    "typings": [
      "(this: PhysObj): number"
    ]
  },
  {
    "comments": [
      "\nReturns the stress of the entity.\n",
      "@name PhysObj:GetStress",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetStress",
      "@param {PhysObj} this - no description",
      "@returns {number} - exertedStress"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetStress",
    "typings": [
      "(this: PhysObj): number"
    ]
  },
  {
    "comments": [
      "\nReturns the speed damping of the physics object.\n",
      "@name PhysObj:GetSpeedDamping",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetSpeedDamping",
      "@param {PhysObj} this - no description",
      "@returns {number} - speedDamping"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetSpeedDamping",
    "typings": [
      "(this: PhysObj): number"
    ]
  },
  {
    "comments": [
      "\nReturns the position of the @PhysObj type shadow. See @PhysObj:UpdateShadow.\n",
      "@name PhysObj:GetShadowPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetShadowPos",
      "@param {PhysObj} this - no description",
      "@returns {PhysObj} - The position of the @PhysObj type shadow."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetShadowPos",
    "typings": [
      "(this: PhysObj): PhysObj"
    ]
  },
  {
    "comments": [
      "\nReturns the angles of the @PhysObj type shadow. See @PhysObj:UpdateShadow.\n",
      "@name PhysObj:GetShadowAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetShadowAngles",
      "@param {PhysObj} this - no description",
      "@returns {PhysObj} - The angles of the @PhysObj type shadow."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetShadowAngles",
    "typings": [
      "(this: PhysObj): PhysObj"
    ]
  },
  {
    "comments": [
      "\nReturns the rotation damping of the physics object.\n",
      "@name PhysObj:GetRotDamping",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetRotDamping",
      "@param {PhysObj} this - no description",
      "@returns {number} - The rotation damping"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetRotDamping",
    "typings": [
      "(this: PhysObj): number"
    ]
  },
  {
    "comments": [
      "\nReturns the position and angle of the physics object as a 3x4 matrix (@VMatrix type is 4x4 so the fourth row goes unused). The first three columns store the angle as a [rotation matrix](https://en.wikipedia.org/wiki/Rotation_matrix), and the fourth column stores the position vector.\n",
      "@name PhysObj:GetPositionMatrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetPositionMatrix",
      "@param {PhysObj} this - no description",
      "@returns {VMatrix} - The position and angle matrix."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetPositionMatrix",
    "typings": [
      "(this: PhysObj): VMatrix"
    ]
  },
  {
    "comments": [
      "\nReturns the position of the physics object.\n",
      "@name PhysObj:GetPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetPos",
      "@param {PhysObj} this - no description",
      "@returns {Vector} - The position"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetPos",
    "typings": [
      "(this: PhysObj): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the physics object.\n",
      "@name PhysObj:GetName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetName",
      "@param {PhysObj} this - no description",
      "@returns {string} - The name of the physics object."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetName",
    "typings": [
      "(this: PhysObj): string"
    ]
  },
  {
    "comments": [
      "\nReturns all convex physics meshes of the object. See @EntityFuncs.PhysicsInitMultiConvex for more information.\n",
      "@name PhysObj:GetMeshConvexes",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetMeshConvexes",
      "@param {PhysObj} this - no description",
      "@returns {MeshVertex[]} - Table of @MeshVertex structures where each @MeshVertex structure is an independent convex mesh and each three vertices represent a triangle. Returns nil if the physics object is a sphere."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetMeshConvexes",
    "typings": [
      "(this: PhysObj): MeshVertex[]"
    ]
  },
  {
    "comments": [
      "\nReturns the physics mesh of the object which is used for physobj-on-physobj collision.\n",
      "@name PhysObj:GetMesh",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetMesh",
      "@param {PhysObj} this - no description",
      "@returns {MeshVertex[]} - Table of @MeshVertex structures where each three vertices represent a triangle. Returns nil if the physics object is a sphere."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetMesh",
    "typings": [
      "(this: PhysObj): MeshVertex[]"
    ]
  },
  {
    "comments": [
      "\nReturns the physical material of the physics object.\n",
      "@name PhysObj:GetMaterial",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetMaterial",
      "@param {PhysObj} this - no description",
      "@returns {string} - The physical material"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetMaterial",
    "typings": [
      "(this: PhysObj): string"
    ]
  },
  {
    "comments": [
      "\nReturns the center of mass of the physics object as a local vector.\n",
      "@name PhysObj:GetMassCenter",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetMassCenter",
      "@param {PhysObj} this - no description",
      "@returns {Vector} - The center of mass of the physics object."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetMassCenter",
    "typings": [
      "(this: PhysObj): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the mass of the physics object.\n",
      "@name PhysObj:GetMass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetMass",
      "@param {PhysObj} this - no description",
      "@returns {number} - The mass in kilograms."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetMass",
    "typings": [
      "(this: PhysObj): number"
    ]
  },
  {
    "comments": [
      "\nReturns 1 divided by the inertia.\n",
      "@name PhysObj:GetInvInertia",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetInvInertia",
      "@param {PhysObj} this - no description",
      "@returns {number} - The inverted inertia"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetInvInertia",
    "typings": [
      "(this: PhysObj): number"
    ]
  },
  {
    "comments": [
      "\nReturns 1 divided by the physics object's mass.\n",
      "@name PhysObj:GetInvMass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetInvMass",
      "@param {PhysObj} this - no description",
      "@returns {number} - The inverted mass."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetInvMass",
    "typings": [
      "(this: PhysObj): number"
    ]
  },
  {
    "comments": [
      "\nReturns the directional inertia of the physics object.\n",
      "@name PhysObj:GetInertia",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetInertia",
      "@param {PhysObj} this - no description",
      "@returns {Vector} - directionalInertia"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetInertia",
    "typings": [
      "(this: PhysObj): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the linear and angular damping of the physics object.\n",
      "@name PhysObj:GetDamping",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetDamping",
      "@param {PhysObj} this - no description",
      "@returns {number} - The linear damping",
      "@returns {number} - The angular damping",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetDamping",
    "typings": [
      "(this: PhysObj): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the parent entity of the physics object.\n",
      "@name PhysObj:GetEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetEntity",
      "@param {PhysObj} this - no description",
      "@returns {Entity} - parent"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetEntity",
    "typings": [
      "(this: PhysObj): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the kinetic energy of the physobject.\n",
      "@name PhysObj:GetEnergy",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetEnergy",
      "@param {PhysObj} this - no description",
      "@returns {number} - The kinetic energy"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetEnergy",
    "typings": [
      "(this: PhysObj): number"
    ]
  },
  {
    "comments": [
      "\nReturns the contents flag of the @PhysObj type.\n",
      "@name PhysObj:GetContents",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetContents",
      "@param {PhysObj} this - no description",
      "@returns {CONTENTS} - The @CONTENTS enum."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetContents",
    "typings": [
      "(this: PhysObj): CONTENTS"
    ]
  },
  {
    "comments": [
      "\nGets the angular velocity of the object in degrees per second.\n",
      "@name PhysObj:GetAngleVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetAngleVelocity",
      "@param {PhysObj} this - no description",
      "@returns {Vector} - The angular velocity"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetAngleVelocity",
    "typings": [
      "(this: PhysObj): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the angles of the physics object.\n",
      "@name PhysObj:GetAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetAngles",
      "@param {PhysObj} this - no description",
      "@returns {Angle} - The angles of the physics object."
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetAngles",
    "typings": [
      "(this: PhysObj): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the mins and max of the physics object.\n",
      "@name PhysObj:GetAABB",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/GetAABB",
      "@param {PhysObj} this - no description",
      "@returns {Vector} - Mins",
      "@returns {Vector} - Maxs",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "GetAABB",
    "typings": [
      "(this: PhysObj): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nSets whenever the physics object should be affected by drag.\n",
      "@name PhysObj:EnableDrag",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/EnableDrag",
      "@param {PhysObj} this - no description",
      "@param {boolean} enable - True to enable, false to disable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "EnableDrag",
    "typings": [
      "(this: PhysObj, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the PhysObject should be affected by gravity\n",
      "@name PhysObj:EnableGravity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/EnableGravity",
      "@param {PhysObj} this - no description",
      "@param {boolean} enable - True to enable, false to disable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "EnableGravity",
    "typings": [
      "(this: PhysObj, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the physobject should be able to move or not.\nThis is the exact method the Physics Gun uses to freeze props. If a motion-disabled physics object is grabbed with the physics gun, the object will be able to move again. To disallow this, use @GamemodeHooks:PhysgunPickup.\n",
      "@name PhysObj:EnableMotion",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/EnableMotion",
      "@param {PhysObj} this - no description",
      "@param {boolean} enable - True to enable, false to disable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "EnableMotion",
    "typings": [
      "(this: PhysObj, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the physics object should collide with anything or not, including world.\n",
      "@name PhysObj:EnableCollisions",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/EnableCollisions",
      "@warning This function currently has major problems with player collisions, and as such should be avoided at all costs.A better alternative to this function would be using @EntityFuncs:SetCollisionGroup( COLLISION_GROUP_WORLD ).",
      "@param {PhysObj} this - no description",
      "@param {boolean} enable - True to enable, false to disable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "EnableCollisions",
    "typings": [
      "(this: PhysObj, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nAllows you to move a PhysObj to a point and angle in 3D space.\n",
      "@name PhysObj:ComputeShadowControl",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/ComputeShadowControl",
      "@param {PhysObj} this - no description",
      "@param {table} shadowparams - The parameters for the shadow. See example code to see how its used.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "ComputeShadowControl",
    "typings": [
      "(this: PhysObj, shadowparams: table): void"
    ]
  },
  {
    "comments": [
      "\nCalculates the linear and angular velocities on the center of mass for an offset force impulse. The outputs can be directly passed to @PhysObj:AddVelocity and @PhysObj:AddAngleVelocity, respectively.\n",
      "@name PhysObj:CalculateVelocityOffset",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/CalculateVelocityOffset",
      "@param {PhysObj} this - no description",
      "@param {Vector} force - The initial force",
      "@param {Vector} pos - The location of the force in world coordinates",
      "@returns {Vector} - The calculated linear velocity from the force on the physics object's center of mass",
      "@returns {Vector} - The calculated angular velocity from the force on the physics object's center of mass",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "CalculateVelocityOffset",
    "typings": [
      "(this: PhysObj, force: Vector, pos: Vector): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nRemoves one of more specified flags.\n",
      "@name PhysObj:ClearGameFlag",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/ClearGameFlag",
      "@param {PhysObj} this - no description",
      "@param {FVPHYSICS} flags - Bitflag, see @FVPHYSICS enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "ClearGameFlag",
    "typings": [
      "(this: PhysObj, flags: FVPHYSICS): void"
    ]
  },
  {
    "comments": [
      "\nCalculates the force and torque on the center of mass for an offset force impulse. The outputs can be directly passed to @PhysObj:ApplyForceCenter and @PhysObj:ApplyTorqueCenter, respectively.\n",
      "@name PhysObj:CalculateForceOffset",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/CalculateForceOffset",
      "@param {PhysObj} this - no description",
      "@param {Vector} force - The initial force",
      "@param {Vector} pos - The location of the force in world coordinates",
      "@returns {Vector} - The calculated force on the physics object's center of mass",
      "@returns {Vector} - The calculated torque on the physics object's center of mass",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "CalculateForceOffset",
    "typings": [
      "(this: PhysObj, force: Vector, pos: Vector): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nApplies specified torque to the physics object.\n",
      "@name PhysObj:ApplyTorqueCenter",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/ApplyTorqueCenter",
      "@param {PhysObj} this - no description",
      "@param {Vector} torque - The torque to be applied in kg * degrees / s.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "ApplyTorqueCenter",
    "typings": [
      "(this: PhysObj, torque: Vector): void"
    ]
  },
  {
    "comments": [
      "\nApplies the specified force on the physics object at the specified position\n",
      "@name PhysObj:ApplyForceOffset",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/ApplyForceOffset",
      "@param {PhysObj} this - no description",
      "@param {Vector} force - The force to be applied.",
      "@param {Vector} position - The position in world coordinates where the force is applied to the physics object.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "ApplyForceOffset",
    "typings": [
      "(this: PhysObj, force: Vector, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nApplies the specified force to the physics object. (in Newtons)\n",
      "@name PhysObj:ApplyForceCenter",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/ApplyForceCenter",
      "@note This will not work on players, use @EntityFuncs:SetVelocity instead.",
      "@note -9.80665 (meters / second^2)  Is the approximate acceleration of objects on Earth due to gravity. (It is negative because gravity pushes things downwards.)",
      "@param {PhysObj} this - no description",
      "@param {Vector} force - The force to be applied.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "ApplyForceCenter",
    "typings": [
      "(this: PhysObj, force: Vector): void"
    ]
  },
  {
    "comments": [
      "\nRotates the object so that it's angles are aligned to the ones inputted.\n",
      "@name PhysObj:AlignAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/AlignAngles",
      "@param {PhysObj} this - no description",
      "@param {Angle} from - no description",
      "@param {Angle} to - no description",
      "@returns {Angle} - no description"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "AlignAngles",
    "typings": [
      "(this: PhysObj, from: Angle, to: Angle): Angle"
    ]
  },
  {
    "comments": [
      "\nAdds the specified velocity to the current.\n",
      "@name PhysObj:AddVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/AddVelocity",
      "@param {PhysObj} this - no description",
      "@param {Vector} velocity - Additional velocity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "AddVelocity",
    "typings": [
      "(this: PhysObj, velocity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nAdds one or more bit flags.\n",
      "@name PhysObj:AddGameFlag",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/AddGameFlag",
      "@param {PhysObj} this - no description",
      "@param {FVPHYSICS} flags - Bitflag, see @FVPHYSICS enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "AddGameFlag",
    "typings": [
      "(this: PhysObj, flags: FVPHYSICS): void"
    ]
  },
  {
    "comments": [
      "\nAdds the specified velocity to the current.\n",
      "@name PhysObj:AddAngleVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysObj/AddAngleVelocity",
      "@param {PhysObj} this - no description",
      "@param {Vector} angularVelocity - Additional velocity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysObj",
    "name": "AddAngleVelocity",
    "typings": [
      "(this: PhysObj, angularVelocity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the performance settings.\n",
      "@name physenv.SetPerformanceSettings",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/physenv/SetPerformanceSettings",
      "@param {void} this - no description",
      "@param {PhysEnvPerformanceSettings} performanceSettings - The new performance settings. See @PhysEnvPerformanceSettings structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "physenv",
    "name": "SetPerformanceSettings",
    "typings": [
      "(this: void, performanceSettings: PhysEnvPerformanceSettings): void"
    ]
  },
  {
    "comments": [
      "\nSets the air density.\n",
      "@name physenv.SetAirDensity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/physenv/SetAirDensity",
      "@param {void} this - no description",
      "@param {number} airDensity - The new air density.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "physenv",
    "name": "SetAirDensity",
    "typings": [
      "(this: void, airDensity: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the directional gravity, does not work on players.\n",
      "@name physenv.SetGravity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/physenv/SetGravity",
      "@param {void} this - no description",
      "@param {Vector} gravity - The new gravity.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "physenv",
    "name": "SetGravity",
    "typings": [
      "(this: void, gravity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nGets the current performance settings in table form.\n",
      "@name physenv.GetPerformanceSettings",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/physenv/GetPerformanceSettings",
      "@param {void} this - no description",
      "@returns {PhysEnvPerformanceSettings} - Performance settings. See @PhysEnvPerformanceSettings structure"
    ],
    "type": "func",
    "context": "physenv",
    "name": "GetPerformanceSettings",
    "typings": [
      "(this: void): PhysEnvPerformanceSettings"
    ]
  },
  {
    "comments": [
      "\nReturns the air density.\n",
      "@name physenv.GetAirDensity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/physenv/GetAirDensity",
      "@param {void} this - no description",
      "@returns {number} - airDensity"
    ],
    "type": "func",
    "context": "physenv",
    "name": "GetAirDensity",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nGets the global gravity.\n",
      "@name physenv.GetGravity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/physenv/GetGravity",
      "@param {void} this - no description",
      "@returns {Vector} - gravity"
    ],
    "type": "func",
    "context": "physenv",
    "name": "GetGravity",
    "typings": [
      "(this: void): Vector"
    ]
  },
  {
    "comments": [
      "\nPerforms a trace against this PhysCollide with the given parameters. This can be used for both line traces and box traces.\n",
      "@name PhysCollide:TraceBox",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysCollide/TraceBox",
      "@param {PhysCollide} this - no description",
      "@param {Vector} origin - The origin for the PhysCollide during the trace",
      "@param {Angle} angles - The angles for the PhysCollide during the trace",
      "@param {Vector} rayStart - The start position of the trace",
      "@param {Vector} rayEnd - The end position of the trace",
      "@param {Vector} rayMins - The mins of the trace's bounds",
      "@param {Vector} rayMaxs - The maxs of the trace's bounds",
      "@returns {Vector} - Hit position of the trace. This is false if the trace did not hit.",
      "@returns {Vector} - Hit normal of the trace",
      "@returns {number} - Fraction of the trace. This is calculated from the distance between startPos, hitPos, and endPos.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "PhysCollide",
    "name": "TraceBox",
    "typings": [
      "(this: PhysCollide, origin: Vector, angles: Angle, rayStart: Vector, rayEnd: Vector, rayMins: Vector, rayMaxs: Vector): [Vector, Vector, number]"
    ]
  },
  {
    "comments": [
      "\nAdds surface properties to the game's physics environment.\n",
      "@name physenv.AddSurfaceData",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/physenv/AddSurfaceData",
      "@bug #2604 The game has a limit of 128 surface properties - this includes properties loaded automatically from [surfaceproperties.txt](https://github.com/Facepunch/garrysmod/blob/master/garrysmod/scripts/surfaceproperties.txt). Due to this, there's only a small amount of open slots that can be registered with GMod's provided surfaceproperties.txt.",
      "@param {void} this - no description",
      "@param {string} properties - The properties to add. Each one should include \"base\" or the game will crash due to some values being missing.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "physenv",
    "name": "AddSurfaceData",
    "typings": [
      "(this: void, properties: string): void"
    ]
  },
  {
    "comments": [
      "\nDestroys the @PhysCollide type object.\n",
      "@name PhysCollide:Destroy",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysCollide/Destroy",
      "@param {PhysCollide} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PhysCollide",
    "name": "Destroy",
    "typings": [
      "(this: PhysCollide): void"
    ]
  },
  {
    "comments": [
      "\nChecks whether this @PhysCollide type object is valid or not.\nYou should just use @IsValid function instead.\n",
      "@name PhysCollide:IsValid",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/PhysCollide/IsValid",
      "@param {PhysCollide} this - no description",
      "@returns {boolean} - Is valid or not."
    ],
    "type": "class",
    "context": "PhysCollide",
    "name": "IsValid",
    "typings": [
      "(this: PhysCollide): boolean"
    ]
  },
  {
    "comments": [
      "\nForcibly updates the panels' HTML Material, similar to when Paint is called on it.This is only useful if the panel is not normally visible, i.e the panel exists purely for its HTML Material.\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)\n",
      "@name Panel:UpdateHTMLTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/UpdateHTMLTexture",
      "@note Only works on with panels that have a HTML Material. See @Panel:GetHTMLMaterial for more details.",
      "@note A good place to call this is in the @GamemodeHooks:PreRender hook",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "UpdateHTMLTexture",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns if a given panel is valid or not.\n",
      "@name Panel:Valid",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Valid",
      "@param {Panel} this - no description",
      "@returns {boolean} - Whether the panel is valid or not, true being it is, false being it isn't."
    ],
    "type": "class",
    "context": "Panel",
    "name": "Valid",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nRecursively deselects this panel object and all of its children. This will cascade to all child objects at every level below the parent.\n",
      "@name Panel:UnselectAll",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/UnselectAll",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "UnselectAll",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nRestores the last saved state (caret position and the text inside) of a @TextEntry type. Should act identically to pressing CTRL+Z in a @TextEntry type.\nSee also @Panel:SaveUndoState.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:Undo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Undo",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Undo",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nToggles the selected state of a selectable panel object. This functionality is set with @Panel:SetSelectable and checked with @Panel:IsSelectable. To check whether the object is selected or not, @Panel:IsSelected is used.\n",
      "@name Panel:ToggleSelection",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ToggleSelection",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ToggleSelection",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nToggles the visibility of a panel and all its children.\n",
      "@name Panel:ToggleVisible",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ToggleVisible",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ToggleVisible",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled every frame while @Panel:IsVisible is true.\n",
      "@name PanelHooks:Think",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/Think",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "Think",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the dimensions of the panel to fill its parent. It will only stretch in directions that aren't nil.\n",
      "@name Panel:StretchToParent",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/StretchToParent",
      "@param {Panel} this - no description",
      "@param {number} offsetLeft - The left offset to the parent.",
      "@param {number} offsetTop - The top offset to the parent.",
      "@param {number} offsetRight - The right offset to the parent.",
      "@param {number} offsetBottom - The bottom offset to the parent.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "StretchToParent",
    "typings": [
      "(this: Panel, offsetLeft: number, offsetTop: number, offsetRight: number, offsetBottom: number): void"
    ]
  },
  {
    "comments": [
      "\nResizes the panel object's width so that its right edge is aligned with the left of the passed panel. An offset greater than zero will reduce the panel's width to leave a gap between it and the passed panel.\n",
      "@name Panel:StretchRightTo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/StretchRightTo",
      "@param {Panel} this - no description",
      "@param {Panel} tgtPanel - The panel to align the right edge of this one with.",
      "@param {number} offset - The gap to leave between this and the passed panel. Negative values will cause the panel's width to increase, forming an overlap.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "StretchRightTo",
    "typings": [
      "(this: Panel, tgtPanel: Panel, offset?: number): void"
    ]
  },
  {
    "comments": [
      "\nResizes the panel object's height so that its bottom is aligned with the top of the passed panel. An offset greater than zero will reduce the panel's height to leave a gap between it and the passed panel.\n",
      "@name Panel:StretchBottomTo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/StretchBottomTo",
      "@param {Panel} this - no description",
      "@param {Panel} tgtPanel - The panel to align the bottom of this one with.",
      "@param {number} offset - The gap to leave between this and the passed panel. Negative values will cause the panel's height to increase, forming an overlap.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "StretchBottomTo",
    "typings": [
      "(this: Panel, tgtPanel: Panel, offset?: number): void"
    ]
  },
  {
    "comments": [
      "\nStops all panel animations by clearing its animation list. This also clears all delayed animations.\n",
      "@name Panel:Stop",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Stop",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Stop",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nBegins a box selection, enables mouse capture for the panel object, and sets the start point of the selection box to the mouse cursor's position, relative to this object. For this to work, either the object or its parent must be enabled as a selection canvas. This is set using @Panel:SetSelectionCanvas.\n",
      "@name Panel:StartBoxSelection",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/StartBoxSelection",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "StartBoxSelection",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSlides the panel out to the top.\n",
      "@name Panel:SlideUp",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SlideUp",
      "@param {Panel} this - no description",
      "@param {number} Length - Time to complete the animation.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SlideUp",
    "typings": [
      "(this: Panel, Length: number): void"
    ]
  },
  {
    "comments": [
      "\nResizes the panel object's height to accommodate all child objects/contents.\nOnly works on @Label type derived panels such as @DLabel type by default, and on any panel that manually implemented @Panel:GetContentSize method.\n",
      "@name Panel:SizeToContentsY",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SizeToContentsY",
      "@note You must call this function **AFTER** setting text/font or adjusting child panels.",
      "@param {Panel} this - no description",
      "@param {number} addVal - The number of extra pixels to add to the height.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SizeToContentsY",
    "typings": [
      "(this: Panel, addVal?: number): void"
    ]
  },
  {
    "comments": [
      "\nSlides the panel in from above.\n",
      "@name Panel:SlideDown",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SlideDown",
      "@param {Panel} this - no description",
      "@param {number} Length - Time to complete the animation.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SlideDown",
    "typings": [
      "(this: Panel, Length: number): void"
    ]
  },
  {
    "comments": [
      "\nResizes the panel object's width to accommodate all child objects/contents.\nOnly works on @Label type derived panels such as @DLabel type by default, and on any panel that manually implemented @Panel:GetContentSize method.\n",
      "@name Panel:SizeToContentsX",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SizeToContentsX",
      "@note You must call this function **AFTER** setting text/font or adjusting child panels.",
      "@param {Panel} this - no description",
      "@param {number} addVal - The number of extra pixels to add to the width. Can be a negative number, to reduce the width.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SizeToContentsX",
    "typings": [
      "(this: Panel, addVal?: number): void"
    ]
  },
  {
    "comments": [
      "\nResizes the panel so that its width and height fit all of the content inside.\n[Category:DImage](https://wiki.garrysmod.com/page/Category:DImage)\n[Category:DImageButton](https://wiki.garrysmod.com/page/Category:DImageButton)\n[Category:DNumberWang](https://wiki.garrysmod.com/page/Category:DNumberWang)\n[Category:DListView](https://wiki.garrysmod.com/page/Category:DListView)\n",
      "@name Panel:SizeToContents",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SizeToContents",
      "@note Only works on @Label type derived panels such as @DLabel type by default, and on any panel that manually implemented the @Panel:SizeToContents method, such as @DNumberWang type and @DImage type.",
      "@warning You must call this function **AFTER** setting text/font, adjusting child panels or otherwise altering the panel.",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SizeToContents",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nResizes the panel to fit the bounds of its children.\n",
      "@name Panel:SizeToChildren",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SizeToChildren",
      "@note Your panel must have its layout updated (@Panel:InvalidateLayout) for this function to work properly.",
      "@note The sizeW and sizeH parameters are false by default. Therefore, calling this function with no arguments will result in a no-op.",
      "@param {Panel} this - no description",
      "@param {boolean} sizeW - Resize with width of the panel.",
      "@param {boolean} sizeH - Resize the height of the panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SizeToChildren",
    "typings": [
      "(this: Panel, sizeW?: boolean, sizeH?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUses animation to resize the panel to the specified size.\n",
      "@name Panel:SizeTo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SizeTo",
      "@param {Panel} this - no description",
      "@param {number} sizeW - The target width of the panel. Use -1 to retain the current width.",
      "@param {number} sizeH - The target height of the panel. Use -1 to retain the current height.",
      "@param {number} time - The time to perform the animation within.",
      "@param {number} delay - The delay before the animation starts.",
      "@param {number} ease - Easing of the start and/or end speed of the animation. See @Panel:NewAnimation for how this works.",
      "@param {function} callback - The function to be called once the animation finishes. Arguments are:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SizeTo",
    "typings": [
      "(this: Panel, sizeW?: number, sizeH?: number, time: number, delay?: number, ease?: number, callback: PanelSizeToCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type PanelSizeToCallback",
          "@param {void} this - no description",
          "@param {AnimationData} animData - The @AnimationData structure that was used.",
          "@param {Panel} pnl - The panel object that was resized."
        ],
        "type": "type",
        "name": "PanelSizeToCallback",
        "typing": "(this: void, animData: AnimationData, pnl: Panel) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nMakes a panel visible.\n",
      "@name Panel:Show",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Show",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Show",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the panels z position which determines the rendering order.\nPanels with lower z positions appear behind panels with higher z positions.\nThis also controls in which order panels docked with @Panel:Dock appears.\n",
      "@name Panel:SetZPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetZPos",
      "@param {Panel} this - no description",
      "@param {number} zIndex - The z position of the panel.\nCan't be lower than -32768 or higher than 32767.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetZPos",
    "typings": [
      "(this: Panel, zIndex: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether text wrapping should be enabled or disabled on @Label type and @DLabel type panels.\nUse @DLabel:SetAutoStretchVertical to automatically correct vertical size; @Panel:SizeToContents will not set the correct height.\n[Category:Label](https://wiki.garrysmod.com/page/Category:Label)\n[Category:DLabel](https://wiki.garrysmod.com/page/Category:DLabel)\n",
      "@name Panel:SetWrap",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetWrap",
      "@param {Panel} this - no description",
      "@param {boolean} wrap - True to enable text wrapping, false otherwise.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetWrap",
    "typings": [
      "(this: Panel, wrap: boolean): void"
    ]
  },
  {
    "comments": [
      "\nThis makes it so that when you're hovering over this panel you can `click` on the world. Your viewmodel will aim etc. This is primarily used for the Sandbox context menu.\n",
      "@name Panel:SetWorldClicker",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetWorldClicker",
      "@bug #3467 This function doesn't scale with custom FOV specified by @GamemodeHooks:CalcView or @WeaponHooks:TranslateFOV.",
      "@param {Panel} this - no description",
      "@param {boolean} enabled - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetWorldClicker",
    "typings": [
      "(this: Panel, enabled: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the width of the panel.\nCalls @PanelHooks:OnSizeChanged and marks this panel for layout (@Panel:InvalidateLayout).\nSee also @Panel:SetSize.\n",
      "@name Panel:SetWidth",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetWidth",
      "@param {Panel} this - no description",
      "@param {number} width - The new width of the panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetWidth",
    "typings": [
      "(this: Panel, width: number): void"
    ]
  },
  {
    "comments": [
      "\nSets width of a panel. An alias of @Panel:SetWidth.\n",
      "@name Panel:SetWide",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetWide",
      "@param {Panel} this - no description",
      "@param {number} width - Desired width to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetWide",
    "typings": [
      "(this: Panel, width: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the visibility of the vertical scrollbar.\nWorks for @RichText type and @TextEntry type.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SetVerticalScrollbarEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetVerticalScrollbarEnabled",
      "@param {Panel} this - no description",
      "@param {boolean} display - True to display the vertical text scroll bar, false to hide it.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetVerticalScrollbarEnabled",
    "typings": [
      "(this: Panel, display?: boolean): void"
    ]
  },
  {
    "comments": [
      "\n[Category:DLabelURL](https://wiki.garrysmod.com/page/Category:DLabelURL)[Category:URLLabel](https://wiki.garrysmod.com/page/Category:URLLabel)Sets the URL of a link-based panel such as @DLabelURL type.\n",
      "@name Panel:SetURL",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetURL",
      "@param {Panel} this - no description",
      "@param {string} url - The URL to set. This **must** begin with *http://*.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetURL",
    "typings": [
      "(this: Panel, url: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the \"visibility\" of the panel.\n",
      "@name Panel:SetVisible",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetVisible",
      "@param {Panel} this - no description",
      "@param {boolean} visible - The visibility of the panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetVisible",
    "typings": [
      "(this: Panel, visible: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the panel to be displayed as a tooltip when a player hovers over the panel object with their cursor. Note that it will not override the default @DTooltip type panel.\n",
      "@name Panel:SetTooltipPanel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetTooltipPanel",
      "@note @Panel:SetTooltip will override this functionality.",
      "@warning Calling this from @PanelHooks:OnCursorEntered is too late! The tooltip will not be displayed or be updated.",
      "@warning Given panel or the previously set one will NOT be automatically removed.",
      "@param {Panel} this - no description",
      "@param {Panel} tooltipPanel - The panel to use as the tooltip.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetTooltipPanel",
    "typings": [
      "(this: Panel, tooltipPanel?: Panel): void"
    ]
  },
  {
    "comments": [
      "@name Panel:SetToolTipPanel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetToolTipPanel",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetToolTipPanel",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the tooltip to be displayed when a player hovers over the panel object with their cursor.\n",
      "@name Panel:SetTooltip",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetTooltip",
      "@param {Panel} this - no description",
      "@param {string} str - The text to be displayed in the tooltip. Set false to disable it.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetTooltip",
    "typings": [
      "(this: Panel, str: string): void"
    ]
  },
  {
    "comments": [
      "@name Panel:SetToolTip",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetToolTip",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetToolTip",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the height of a @RichText type element to accommodate the text inside.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:SetToFullHeight",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetToFullHeight",
      "@note This function internally relies on @Panel:GetNumLines, so it should be called at least a couple frames after modifying the text using @Panel:AppendText",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetToFullHeight",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the left and top text margins of a text-based panel object, such as a @DButton type or @DLabel type.\n[Category:Label](https://wiki.garrysmod.com/page/Category:Label)\n",
      "@name Panel:SetTextInset",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetTextInset",
      "@param {Panel} this - no description",
      "@param {number} insetX - The left margin for the text, in pixels. This will only affect centered text if the margin is greater than its x-coordinate.",
      "@param {number} insetY - The top margin for the text, in pixels.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetTextInset",
    "typings": [
      "(this: Panel, insetX: number, insetY: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the text value of a panel object containing text, such as a @Label type, @TextEntry type or  @RichText type and their derivatives, such as @DLabel type, @DTextEntry type or @DButton type.\n[Category:Label](https://wiki.garrysmod.com/page/Category:Label)\n[Category:DLabel](https://wiki.garrysmod.com/page/Category:DLabel)\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n[Category:DTree_Node](https://wiki.garrysmod.com/page/Category:DTree_Node)\n",
      "@name Panel:SetText",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetText",
      "@warning When used on a @Label type or its derivatives ( @DLabel type and @DButton type ), it will automatically call @Panel:InvalidateLayout, meaning that you should avoid running this function every frame on these panels to avoid unnecessary performance loss.",
      "@param {Panel} this - no description",
      "@param {string} text - The text value to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetText",
    "typings": [
      "(this: Panel, text: string): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the panel after given time in seconds.\n",
      "@name Panel:SetTerm",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetTerm",
      "@note This function will not work if @PanelHooks:AnimationThink is overridden, unless @Panel:AnimationThinkInternal is called every frame.",
      "@param {Panel} this - no description",
      "@param {number} delay - Delay in seconds after which the panel should be removed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetTerm",
    "typings": [
      "(this: Panel, delay: number): void"
    ]
  },
  {
    "comments": [
      "\nSets height of a panel. An alias of @Panel:SetHeight.\n",
      "@name Panel:SetTall",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetTall",
      "@param {Panel} this - no description",
      "@param {number} height - Desired height to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetTall",
    "typings": [
      "(this: Panel, height: number): void"
    ]
  },
  {
    "comments": [
      "\nWhen TAB is pressed, the next selectable panel in the number sequence is selected.\n",
      "@name Panel:SetTabPosition",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetTabPosition",
      "@param {Panel} this - no description",
      "@param {number} position - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetTabPosition",
    "typings": [
      "(this: Panel, position: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @AvatarImage type panels to load an avatar by its 64-bit Steam ID (community ID).[Category:AvatarImage](https://wiki.garrysmod.com/page/Category:AvatarImage)\n",
      "@name Panel:SetSteamID",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetSteamID",
      "@param {Panel} this - no description",
      "@param {string} steamid - The 64bit SteamID of the player to load avatar of",
      "@param {number} size - The size of the avatar to use. Acceptable sizes are 32, 64, 184.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetSteamID",
    "typings": [
      "(this: Panel, steamid: string, size: number): void"
    ]
  },
  {
    "comments": [
      "\n[Category:ModelImage](https://wiki.garrysmod.com/page/Category:ModelImage)[Category:SpawnIcon](https://wiki.garrysmod.com/page/Category:SpawnIcon)Sets the .png image to be displayed on a  @SpawnIcon type or the panel it is based on @ModelImage type.\nOnly .png images can be used with this function.\n",
      "@name Panel:SetSpawnIcon",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetSpawnIcon",
      "@param {Panel} this - no description",
      "@param {string} icon - A path to the .png material, for example one of the [Silkicons](https://wiki.garrysmod.com/page/Silkicons) shipped with the game.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetSpawnIcon",
    "typings": [
      "(this: Panel, icon: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the derma skin that the panel object will use, and refreshes all panels with @derma.RefreshSkins.\n",
      "@name Panel:SetSkin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetSkin",
      "@param {Panel} this - no description",
      "@param {string} skinName - The name of the skin to use. The default derma skin is *Default*.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetSkin",
    "typings": [
      "(this: Panel, skinName: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the size of the panel.\nCalls @PanelHooks:OnSizeChanged and marks this panel for layout (@Panel:InvalidateLayout).\nSee also @Panel:SetWidth and @Panel:SetHeight.\n",
      "@name Panel:SetSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetSize",
      "@note If you wish to position and re-size panels without much guesswork and have them look good on different screen resolutions, you may find @Panel:Dock useful",
      "@param {Panel} this - no description",
      "@param {number} width - The width of the panel.",
      "@param {number} height - The height of the panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetSize",
    "typings": [
      "(this: Panel, width: number, height: number): void"
    ]
  },
  {
    "comments": [
      "\nEnables the panel object for selection (much like the spawn menu).\n",
      "@name Panel:SetSelectionCanvas",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetSelectionCanvas",
      "@param {Panel} this - no description",
      "@param {any} selCanvas - Any value other than *nil* or *false* will enable the panel object for selection. It is recommended to pass *true*.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetSelectionCanvas",
    "typings": [
      "(this: Panel, selCanvas: any): void"
    ]
  },
  {
    "comments": [
      "\nSets the selected state of a selectable panel object. This functionality is set with @Panel:SetSelectable and checked with @Panel:IsSelectable.\n",
      "@name Panel:SetSelected",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetSelected",
      "@param {Panel} this - no description",
      "@param {number | boolean} selected - Whether the object should be selected or deselected. @Panel:IsSelected can be used to determine the selected state of the object.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetSelected",
    "typings": [
      "(this: Panel, selected?: number | boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the panel object can be selected or not (like icons in the Spawn Menu, holding @Shift key). If enabled, this will affect the function of a @DButton type whilst @Shift key is pressed. @Panel:SetSelected can be used to select/deselect the object.\n",
      "@name Panel:SetSelectable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetSelectable",
      "@param {Panel} this - no description",
      "@param {boolean} selectable - Whether the panel object should be selectable or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetSelectable",
    "typings": [
      "(this: Panel, selectable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whenever the panel should be rendered in the next screenshot.\n",
      "@name Panel:SetRenderInScreenshots",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetRenderInScreenshots",
      "@param {Panel} this - no description",
      "@param {boolean} renderInScreenshot - Whenever to render or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetRenderInScreenshots",
    "typings": [
      "(this: Panel, renderInScreenshot: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the position of the panel.\nThis will trigger @PanelHooks:PerformLayout. You should avoid calling this function in @PanelHooks:PerformLayout to avoid infinite loops.\n",
      "@name Panel:SetPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetPos",
      "@note If you wish to position and re-size panels without much guesswork and have them look good on different screen resolutions, you may find @Panel:Dock useful",
      "@param {Panel} this - no description",
      "@param {number} posX - The x coordinate of the position.",
      "@param {number} posY - The y coordinate of the position.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetPos",
    "typings": [
      "(this: Panel, posX: number, posY: number): void"
    ]
  },
  {
    "comments": [
      "\nIf this panel object has been made a popup with @Panel:MakePopup, this method will prevent it from drawing in front of other panels when it receives input focus.\n",
      "@name Panel:SetPopupStayAtBack",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetPopupStayAtBack",
      "@param {Panel} this - no description",
      "@param {boolean} stayAtBack - If *true*, the popup panel will not draw in front of others when it gets focus, for example when it is clicked.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetPopupStayAtBack",
    "typings": [
      "(this: Panel, stayAtBack: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @AvatarImage type to load an avatar for given player.[Category:AvatarImage](https://wiki.garrysmod.com/page/Category:AvatarImage)\n",
      "@name Panel:SetPlayer",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetPlayer",
      "@param {Panel} this - no description",
      "@param {Player} player - The player to use avatar of.",
      "@param {number} size - The size of the avatar to use. Acceptable sizes are 32, 64, 184.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetPlayer",
    "typings": [
      "(this: Panel, player: Player, size: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the parent of the panel.\n",
      "@name Panel:SetParent",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetParent",
      "@param {Panel} this - no description",
      "@param {Panel} parent - The new parent of the panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetParent",
    "typings": [
      "(this: Panel, parent: Panel): void"
    ]
  },
  {
    "comments": [
      "\nThis function does nothing.\n",
      "@name Panel:SetPaintFunction",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetPaintFunction",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetPaintFunction",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nEnables or disables painting of the panel manually with @Panel:PaintManual.\n",
      "@name Panel:SetPaintedManually",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetPaintedManually",
      "@param {Panel} this - no description",
      "@param {boolean} paintedManually - True if the panel should be painted manually.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetPaintedManually",
    "typings": [
      "(this: Panel, paintedManually: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whenever all the default border of the panel should be drawn or not.\n",
      "@name Panel:SetPaintBorderEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetPaintBorderEnabled",
      "@param {Panel} this - no description",
      "@param {boolean} paintBorder - Whenever to draw the border or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetPaintBorderEnabled",
    "typings": [
      "(this: Panel, paintBorder: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whenever all the default background of the panel should be drawn or not.\n",
      "@name Panel:SetPaintBackgroundEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetPaintBackgroundEnabled",
      "@param {Panel} this - no description",
      "@param {boolean} paintBackground - Whenever to draw the background or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetPaintBackgroundEnabled",
    "typings": [
      "(this: Panel, paintBackground: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the internal name of the panel.\n",
      "@name Panel:SetName",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetName",
      "@param {Panel | DForm} this - no description",
      "@param {string} name - The new name of the panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetName",
    "typings": [
      "(this: Panel | DForm, name: string): void"
    ]
  },
  {
    "comments": [
      "\nEnables or disables the multi-line functionality of a text object, such as a @DTextEntry type.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SetMultiline",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetMultiline",
      "@param {Panel} this - no description",
      "@param {boolean} multiline - Whether to enable multiline or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetMultiline",
    "typings": [
      "(this: Panel, multiline: boolean): void"
    ]
  },
  {
    "comments": [
      "\nEnables or disables the mouse input for the panel.\n",
      "@name Panel:SetMouseInputEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetMouseInputEnabled",
      "@param {Panel} this - no description",
      "@param {boolean} mouseInput - Whenever to enable or disable mouse input.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetMouseInputEnabled",
    "typings": [
      "(this: Panel, mouseInput: boolean): void"
    ]
  },
  {
    "comments": [
      "\n[Category:ModelImage](https://wiki.garrysmod.com/page/Category:ModelImage)[Category:SpawnIcon](https://wiki.garrysmod.com/page/Category:SpawnIcon)Sets the model to be displayed by @SpawnIcon type.\n",
      "@name Panel:SetModel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetModel",
      "@note This must be called after setting size if you wish to use a different size spawnicon",
      "@param {Panel} this - no description",
      "@param {string} ModelPath - The path of the model to set",
      "@param {number} skin - The skin to set",
      "@param {string} bodygroups - The body groups to set. Each single-digit number in the string represents a separate bodygroup, **up to 9 in total**.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetModel",
    "typings": [
      "(this: Panel, ModelPath: string, skin?: number, bodygroups?: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum dimensions of the panel or object.\nYou can restrict either or both values.\nCalling the function without arguments will remove the minimum size.\n",
      "@name Panel:SetMinimumSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetMinimumSize",
      "@param {Panel} this - no description",
      "@param {number} minW - The minimum width of the object.",
      "@param {number} minH - The minimum height of the object.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetMinimumSize",
    "typings": [
      "(this: Panel, minW?: number, minH?: number): void"
    ]
  },
  {
    "comments": [
      "\nAllows or disallows the panel to receive keyboard focus and input. This is recursively applied to all children.\n",
      "@name Panel:SetKeyboardInputEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetKeyboardInputEnabled",
      "@param {Panel} this - no description",
      "@param {boolean} enable - Whether keyboard input should be enabled for this panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetKeyboardInputEnabled",
    "typings": [
      "(this: Panel, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nEnables or disables the keyboard input for the panel.\n",
      "@name Panel:SetKeyBoardInputEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetKeyBoardInputEnabled",
      "@param {Panel} this - no description",
      "@param {boolean} keyboardInput - Whether to enable or disable keyboard input.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetKeyBoardInputEnabled",
    "typings": [
      "(this: Panel, keyboardInput: boolean): void"
    ]
  },
  {
    "comments": [
      "\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)Allows you to set HTML code within a panel.\n",
      "@name Panel:SetHTML",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetHTML",
      "@param {Panel} this - no description",
      "@param {string | Panel} HTML_code - The code to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetHTML",
    "typings": [
      "(this: Panel, HTML_code: string | Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the height of the panel.\nCalls @PanelHooks:OnSizeChanged and marks this panel for layout (@Panel:InvalidateLayout).\nSee also @Panel:SetSize.\n",
      "@name Panel:SetHeight",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetHeight",
      "@param {Panel} this - no description",
      "@param {number} height - The height to be set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetHeight",
    "typings": [
      "(this: Panel, height: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the font used to render this panel's text.\nTo retrieve the font used by a panel, call @Panel:GetFont.\n[Category:Label](https://wiki.garrysmod.com/page/Category:Label)\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:SetFontInternal",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetFontInternal",
      "@param {Panel} this - no description",
      "@param {string} fontName - The name of the font.\nSee [here](https://wiki.garrysmod.com/page/Default_Fonts) for a list of existing fonts.\nAlternatively, use @surface.CreateFont to create your own custom font.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetFontInternal",
    "typings": [
      "(this: Panel, fontName: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the panel that owns this FocusNavGroup to be the root in the focus traversal hierarchy.\n[Category:EditablePanel](https://wiki.garrysmod.com/page/Category:EditablePanel)\n",
      "@name Panel:SetFocusTopLevel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetFocusTopLevel",
      "@param {Panel} this - no description",
      "@param {boolean} state - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetFocusTopLevel",
    "typings": [
      "(this: Panel, state: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the foreground color of the panel.\nFor labels, this is the color of their text.\n",
      "@name Panel:SetFGColorEx",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetFGColorEx",
      "@internal",
      "@param {Panel} this - no description",
      "@param {number} r - The red channel of the color.",
      "@param {number} g - The green channel of the color.",
      "@param {number} b - The blue channel of the color.",
      "@param {number} a - The alpha channel of the color.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetFGColorEx",
    "typings": [
      "(this: Panel, r: number, g: number, b: number, a: number): void"
    ]
  },
  {
    "comments": [
      "\nAdds a shadow falling to the bottom right corner of the panel's text. This has no effect on panels that do not derive from Label.\n[Category:Label](https://wiki.garrysmod.com/page/Category:Label)\n",
      "@name Panel:SetExpensiveShadow",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetExpensiveShadow",
      "@param {Panel} this - no description",
      "@param {number} distance - The distance of the shadow from the panel.",
      "@param {Color} Color - The color of the shadow. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetExpensiveShadow",
    "typings": [
      "(this: Panel, distance: number, Color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the foreground color of a panel.\nFor a @Label type or @RichText type, this is the color of its text.\nThis function calls @Panel:SetFGColorEx internally.\n",
      "@name Panel:SetFGColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetFGColor",
      "@note This doesn't apply to all VGUI elements (such as @DLabel type) and its function varies between them",
      "@param {Panel} this - no description",
      "@param {number | Color} r - The red channel of the color, or a @IColor structure. If you pass the latter, the following three arguments are ignored.",
      "@param {number} g - The green channel of the color.",
      "@param {number} b - The blue channel of the color.",
      "@param {number} a - The alpha channel of the color.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetFGColor",
    "typings": [
      "(this: Panel, r: number | Color, g?: number, b?: number, a?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the enabled state of a disable-able panel object, such as a @DButton type or @DTextEntry type.\nSee @Panel:IsEnabled for a function that retrieves the \"enabled\" state of a panel.\n",
      "@name Panel:SetEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetEnabled",
      "@param {Panel} this - no description",
      "@param {boolean} enable - Whether to enable or disable the panel object.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetEnabled",
    "typings": [
      "(this: Panel, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the target area for dropping when an object is being dragged around this panel using the @dragndrop library.\nThis draws a target box of the specified size and position, until @Panel:DragHoverEnd is called. It uses @Panel:DrawDragHover to draw this area.\n",
      "@name Panel:SetDropTarget",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetDropTarget",
      "@param {Panel} this - no description",
      "@param {number} x - The x coordinate of the top-left corner of the drop area.",
      "@param {number} y - The y coordinate of the top-left corner of the drop area.",
      "@param {number} width - The width of the drop area.",
      "@param {number} height - The height of the drop area.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetDropTarget",
    "typings": [
      "(this: Panel, x: number, y: number, width: number, height: number): void"
    ]
  },
  {
    "comments": [
      "\nMakes the panel render in front of all others, including the spawn menu and main menu.\nPriority is given based on the last call, so of two panels that call this method, the second will draw in front of the first.\n",
      "@name Panel:SetDrawOnTop",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetDrawOnTop",
      "@note This only makes the panel **draw** above other panels. If there's another panel that would have otherwise covered it, users will not be able to interact with it.",
      "@param {Panel} this - no description",
      "@param {boolean} drawOnTop - Whether or not to draw the panel in front of all others.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetDrawOnTop",
    "typings": [
      "(this: Panel, drawOnTop?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets where to draw the language selection box.\nSee @Panel:SetDrawLanguageID for a function that hides or shows the language selection box.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SetDrawLanguageIDAtLeft",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetDrawLanguageIDAtLeft",
      "@param {Panel} this - no description",
      "@param {boolean} left - true = left, false = right",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetDrawLanguageIDAtLeft",
    "typings": [
      "(this: Panel, left: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the visibility of the language selection box in a TextEntry when typing in non-English mode.\nSee @Panel:SetDrawLanguageIDAtLeft for a function that changes the position of the language selection box.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SetDrawLanguageID",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetDrawLanguageID",
      "@param {Panel} this - no description",
      "@param {boolean} visible - true to make it visible, false to hide it.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetDrawLanguageID",
    "typings": [
      "(this: Panel, visible: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the drag parent.\nDrag parent means that when we start to drag this panel, we'll really start dragging the defined parent.\n",
      "@name Panel:SetDragParent",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetDragParent",
      "@param {Panel} this - no description",
      "@param {Panel} parent - The panel to set as drag parent.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetDragParent",
    "typings": [
      "(this: Panel, parent: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the panel's cookie name. Calls @PanelHooks:LoadCookies if defined.\n",
      "@name Panel:SetCookieName",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetCookieName",
      "@param {Panel} this - no description",
      "@param {string} name - The panel's cookie name. Used as prefix for @Panel:SetCookie",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetCookieName",
    "typings": [
      "(this: Panel, name: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the appearance of the cursor.\n",
      "@name Panel:SetCursor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetCursor",
      "@param {Panel} this - no description",
      "@param {string} cursor - The cursor to be set. Can be one of the following:\n* arrow\n* beam\n* hourglass\n* waitarrow\n* crosshair\n* up\n* sizenwse\n* sizenesw\n* sizewe\n* sizens\n* sizeall\n* no\n* hand\n* blank\nSet to anything else to set it to \"none\", the default fallback. Do note that a value of \"none\" does not, as one might assume, result in no cursor being drawn - hiding the cursor requires a value of \"blank\" instead.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetCursor",
    "typings": [
      "(this: Panel, cursor: string): void"
    ]
  },
  {
    "comments": [
      "\nSets this panel's convar. When the convar changes this panel will update automatically.\nFor developer implementation, see @Derma_Install_Convar_Functions function.\n",
      "@name Panel:SetConVar",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetConVar",
      "@note Blocked convars will not work with this, see [Blocked ConCommands](https://wiki.garrysmod.com/page/Blocked%20ConCommands)",
      "@warning This function does not exist on all panels",
      "@warning This function cannot interact with serverside convars unless you are host",
      "@param {Panel} this - no description",
      "@param {string} convar - The console variable to check.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetConVar",
    "typings": [
      "(this: Panel, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nStores a string in the named cookie using @Panel:GetCookieName as prefix.\nYou can also retrieve and modify this cookie by using the @cookie library. Cookies are stored in this format:\n```panelCookieName.cookieName```\n",
      "@name Panel:SetCookie",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetCookie",
      "@warning The panel's cookie name MUST be set for this function to work. See @Panel:SetCookieName.",
      "@param {Panel} this - no description",
      "@param {string} cookieName - The unique name used to retrieve the cookie later.",
      "@param {string} value - The value to store in the cookie. This can be retrieved later as a @string type or @number type.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetCookie",
    "typings": [
      "(this: Panel, cookieName: string, value: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the alignment of the contents.\n[Category:Label](https://wiki.garrysmod.com/page/Category:Label)\n[Category:DLabel](https://wiki.garrysmod.com/page/Category:DLabel)\n",
      "@name Panel:SetContentAlignment",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetContentAlignment",
      "@param {Panel} this - no description",
      "@param {number} alignment - The direction of the content, based on the number pad.\n@7 key: **top-left**@8 key: **top-center**@9 key: **top-right**\n@4 key: **middle-left**@5 key: **center**@6 key: **middle-right**\n@1 key: **bottom-left**@2 key: **bottom-center**@3 key: **bottom-right**\n[File:DLabel_SetContentAlignment.gif](https://wiki.garrysmod.com/page/File:DLabel_SetContentAlignment.gif)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetContentAlignment",
    "typings": [
      "(this: Panel, alignment: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the action signal command that's fired when a @Button type is clicked. The hook @PanelHooks:ActionSignal is called as the click response.\nThis has no effect on buttons unless it has had its *AddActionSignalTarget* method called (an internal function not available by default in Garry's Mod LUA).\nA better alternative is calling @Panel:Command when a @DButton type is clicked.\n",
      "@name Panel:SetCommand",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetCommand",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetCommand",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the position of the caret (or text cursor) in a text-based panel object.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SetCaretPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetCaretPos",
      "@param {Panel} this - no description",
      "@param {number} offset - Caret position/offset from the start of text. A value of *0* places the caret before the first character.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetCaretPos",
    "typings": [
      "(this: Panel, offset: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the background color of the panel.\n",
      "@name Panel:SetBGColorEx",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetBGColorEx",
      "@internal",
      "@param {Panel} this - no description",
      "@param {number} r - The red channel of the color.",
      "@param {number} g - The green channel of the color.",
      "@param {number} b - The blue channel of the color.",
      "@param {number} a - The alpha channel of the color.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetBGColorEx",
    "typings": [
      "(this: Panel, r: number, g: number, b: number, a: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whenever the panel should be removed if the parent was removed.\n",
      "@name Panel:SetAutoDelete",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetAutoDelete",
      "@param {Panel} this - no description",
      "@param {boolean} autoDelete - Whenever to delete if the parent was removed or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetAutoDelete",
    "typings": [
      "(this: Panel, autoDelete: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the background color of a panel such as a @RichText type, @Label type or @DColorCube type.\nFor @DLabel type elements, you must use @Panel:SetPaintBackgroundEnabled( true ) before applying the color.\nThis will not work on setup of the panel - you should use this function in a hook like @PanelHooks:ApplySchemeSettings or @PanelHooks:PerformLayout.\n",
      "@name Panel:SetBGColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetBGColor",
      "@note This doesn't apply to all VGUI elements and its function varies between them",
      "@param {Panel} this - no description",
      "@param {number | Color} r - The red channel of the color, or a @IColor structure. If you pass the latter, the following three arguments are ignored.",
      "@param {number} g - The green channel of the color.",
      "@param {number} b - The blue channel of the color.",
      "@param {number} a - The alpha channel of the color.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetBGColor",
    "typings": [
      "(this: Panel, r: number | Color, g?: number, b?: number, a?: number): void"
    ]
  },
  {
    "comments": [
      "\nEnables or disables animations for the panel object by overriding the @PanelHooks:AnimationThink hook to nil and back.\n",
      "@name Panel:SetAnimationEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetAnimationEnabled",
      "@param {Panel} this - no description",
      "@param {boolean} enable - Whether to enable or disable animations.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetAnimationEnabled",
    "typings": [
      "(this: Panel, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the alpha multiplier for the panel\n",
      "@name Panel:SetAlpha",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetAlpha",
      "@param {Panel} this - no description",
      "@param {number} alpha - The alpha value in the range of 0-255.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetAlpha",
    "typings": [
      "(this: Panel, alpha: number): void"
    ]
  },
  {
    "comments": [
      "\nConfigures a text input to allow user to type characters that are not included in the US-ASCII (7-bit ASCII) character set.\nCharacters not included in US-ASCII are multi-byte characters in UTF-8. They can be accented characters, non-Latin characters and special characters.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SetAllowNonAsciiCharacters",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetAllowNonAsciiCharacters",
      "@param {Panel} this - no description",
      "@param {boolean} allowed - Set to true in order not to restrict input characters.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetAllowNonAsciiCharacters",
    "typings": [
      "(this: Panel, allowed: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUsed in @Button type to call a function when the button is clicked and in @Slider type when the value changes.\n[Category:Button](https://wiki.garrysmod.com/page/Category:Button)\n[Category:Slider](https://wiki.garrysmod.com/page/Category:Slider)\n",
      "@name Panel:SetActionFunction",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetActionFunction",
      "@param {Panel} this - no description",
      "@param {Button | Slider} func - Function to call when the @Button type is clicked or the @Slider type value is changed.\nArguments given are:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetActionFunction",
    "typings": [
      "(this: Panel, func: Button | Slider): void"
    ]
  },
  {
    "comments": [
      "\nSets the achievement to be displayed by @AchievementIcon type.[Category:AchievementIcon](https://wiki.garrysmod.com/page/Category:AchievementIcon)\n",
      "@name Panel:SetAchievement",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SetAchievement",
      "@param {Panel} this - no description",
      "@param {number} id - Achievement number ID",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SetAchievement",
    "typings": [
      "(this: Panel, id: number): void"
    ]
  },
  {
    "comments": [
      "\nDeselects all items in a panel object. For text-based objects, this will deselect all text.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SelectNone",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SelectNone",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SelectNone",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSelects all the text in a panel object. Will not select non-text items; for this, use @Panel:SelectAll.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SelectAllText",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SelectAllText",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SelectAllText",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nIf called on a text entry, clicking the text entry for the first time will automatically select all of the text ready to be copied by the user.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SelectAllOnFocus",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SelectAllOnFocus",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SelectAllOnFocus",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSelects all items within a panel or object. For text-based objects, selects all text.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SelectAll",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SelectAll",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SelectAll",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nTranslates global screen coordinate to coordinates relative to the panel.\nSee also @Panel:LocalToScreen.\n",
      "@name Panel:ScreenToLocal",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ScreenToLocal",
      "@warning This function uses a cached value for the screen position of the panel, computed at the end of the last VGUI Think/Layout pass.\nie. inaccurate results may be returned if the panel or any of its ancestors have been repositioned outside of @PanelHooks:Think or @PanelHooks:PerformLayout within the last frame.",
      "@param {Panel} this - no description",
      "@param {number} screenX - The x coordinate of the screen position to be translated.",
      "@param {number} screenY - The y coordinate of the screed position be to translated.",
      "@returns {number} - Relativeposition X",
      "@returns {number} - Relativeposition Y",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ScreenToLocal",
    "typings": [
      "(this: Panel, screenX: number, screenY: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nSaves the current state (caret position and the text inside) of a @TextEntry type as an undo state.\nSee also @Panel:Undo.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:SaveUndoState",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/SaveUndoState",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "SaveUndoState",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nResets all text fades in a @RichText type element made with @Panel:InsertFade.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:ResetAllFades",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ResetAllFades",
      "@param {Panel} this - no description",
      "@param {boolean} hold - True to reset fades, false otherwise.",
      "@param {boolean} expiredOnly - Any value equating to *true* will reset fades only on text segments that are completely faded out.",
      "@param {number} newSustain - The new sustain value of each faded text segment. Set to -1 to keep the old sustain value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ResetAllFades",
    "typings": [
      "(this: Panel, hold: boolean, expiredOnly: boolean, newSustain: number): void"
    ]
  },
  {
    "comments": [
      "\nRuns/Executes a string as JavaScript code in [DHTML](https://wiki.garrysmod.com/page/Category:DHTML) panel.\n",
      "@name Panel:RunJavascript",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/RunJavascript",
      "@note This function does **NOT** evaluate expression (i.e. allow you to pass variables from JavaScript (JS) to Lua context).\nBecause a return value is nil/no value (a.k.a. void).\nIf you wish to pass/return values from JS to Lua, you may want to use @DHTML.AddFunction function to accomplish that job.",
      "@param {Panel} this - no description",
      "@param {string} js - Specify JavaScript code to be executed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "RunJavascript",
    "typings": [
      "(this: Panel, js: string): void"
    ]
  },
  {
    "comments": [
      "\nAttempts to obtain focus for this panel.\n",
      "@name Panel:RequestFocus",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/RequestFocus",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "RequestFocus",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nMarks a panel for deletion so it will be deleted on the next frame.\nWill automatically call @Panel:InvalidateParent.\n",
      "@name Panel:Remove",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Remove",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Remove",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nRefreshes the HTML panel's current page.\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)\n[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)\n",
      "@name Panel:Refresh",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Refresh",
      "@param {Panel} this - no description",
      "@param {boolean} ignoreCache - If true, the refresh will ignore cached content similar to \"ctrl+f5\" in most browsers.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Refresh",
    "typings": [
      "(this: Panel, ignoreCache?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nAllows the panel to receive drag and drop events. Can be called multiple times with different names to receive multiple different draggable panel events.\n",
      "@name Panel:Receiver",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Receiver",
      "@param {Panel} this - no description",
      "@param {string} name - Name of DnD panels to receive. This is set on the drag'n'drop-able panels via  @Panel:Droppable",
      "@param {function} func - This function is called whenever a panel with valid name is hovering above and dropped on this panel. It has next arguments:",
      "@param {table} menu - A table of strings that will act as a menu if drag'n'drop was performed with a right click",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Receiver",
    "typings": [
      "(this: Panel, name: string, func: PanelReceiverFunc, menu: table): void"
    ],
    "types": [
      {
        "comments": [
          "@type PanelReceiverFunc",
          "@param {void} this - no description",
          "@param {Panel} pnl - The receiver panel",
          "@param {table} tbl - A table of panels dropped onto receiver panel",
          "@param {boolean} dropped - False if hovering over, true if dropped onto",
          "@param {number} menuIndex - Index of clicked menu item from third argument of @Panel:Receiver",
          "@param {number} x - Cursor pos, relative to the receiver",
          "@param {number} y - Cursor pos, relative to the receiver"
        ],
        "type": "type",
        "name": "PanelReceiverFunc",
        "typing": "(this: void, pnl: Panel, tbl: table, dropped: boolean, menuIndex: number, x: number, y: number) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nRe-renders a spawn icon with customized cam data.\n@PositionSpawnIcon function can be used to easily calculate the necessary camera parameters.\n[Category:ModelImage](https://wiki.garrysmod.com/page/Category:ModelImage)[Category:SpawnIcon](https://wiki.garrysmod.com/page/Category:SpawnIcon)\n",
      "@name Panel:RebuildSpawnIconEx",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/RebuildSpawnIconEx",
      "@note This function does **not** accept the standard @CamData structure.",
      "@param {Panel} this - no description",
      "@param {IPanelRebuildSpawnIconExData} data - A four-membered table containing the information needed to re-render:\nSee the example below for how to retrieve these values.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "RebuildSpawnIconEx",
    "typings": [
      "(this: Panel, data: IPanelRebuildSpawnIconExData): void"
    ],
    "types": [
      {
        "comments": [
          "cam_pos - {Vector}: The relative camera position the model is viewed from."
        ],
        "type": "interface",
        "name": "cam_pos",
        "typing": "Vector",
        "context": "IPanelRebuildSpawnIconExData"
      },
      {
        "comments": [
          "cam_ang - {Angle}: The camera angle the model is viewed from."
        ],
        "type": "interface",
        "name": "cam_ang",
        "typing": "Angle",
        "context": "IPanelRebuildSpawnIconExData"
      },
      {
        "comments": [
          "cam_fov - {number}: The camera's field of view (FOV)."
        ],
        "type": "interface",
        "name": "cam_fov",
        "typing": "number",
        "context": "IPanelRebuildSpawnIconExData"
      },
      {
        "comments": [
          "ent - {Entity}: The entity object of the model."
        ],
        "type": "interface",
        "name": "ent",
        "typing": "Entity",
        "context": "IPanelRebuildSpawnIconExData"
      }
    ]
  },
  {
    "comments": [
      "\nCauses a @SpawnIcon type to rebuild its model image.\n[Category:ModelImage](https://wiki.garrysmod.com/page/Category:ModelImage)[Category:SpawnIcon](https://wiki.garrysmod.com/page/Category:SpawnIcon)\n",
      "@name Panel:RebuildSpawnIcon",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/RebuildSpawnIcon",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "RebuildSpawnIcon",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nEnables the queue for panel animations. If enabled, the next new animation will begin after all current animations have ended. This must be called before @Panel:NewAnimation to work, and only applies to the next new animation. If you want to queue many, you must call this before each.\n",
      "@name Panel:Queue",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Queue",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Queue",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nInstalls Lua defined functions into the panel.\n",
      "@name Panel:Prepare",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Prepare",
      "@internal",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Prepare",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nOnly works on elements defined with @derma.DefineControl and only if the panel has **AllowAutoRefresh** set to true.\nCalled when @derma.DefineControl is called with this panel's class name before applying changes to this panel.\nSee also @PanelHooks:PostAutoRefresh\n",
      "@name PanelHooks:PreAutoRefresh",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/PreAutoRefresh",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "PreAutoRefresh",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSends a command to the panel.\n[Category:Slider](https://wiki.garrysmod.com/page/Category:Slider)\n",
      "@name Panel:PostMessage",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/PostMessage",
      "@param {Panel} this - no description",
      "@param {string} messageName - The name of the message.",
      "@param {string} valueType - The type of the variable to post.",
      "@param {string} value - The value to post.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "PostMessage",
    "typings": [
      "(this: Panel, messageName: string, valueType: string, value: string): void"
    ]
  },
  {
    "comments": [
      "\nOnly works on elements defined with @derma.DefineControl and only if the panel has **AllowAutoRefresh** set to true.\nCalled after @derma.DefineControl is called with panel's class name.\nSee also @PanelHooks:PreAutoRefresh\n",
      "@name PanelHooks:PostAutoRefresh",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/PostAutoRefresh",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "PostAutoRefresh",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the width and position of a @DLabel type and places the passed panel object directly to the right of it. Returns the *y* value of the bottom of the tallest object. The panel on which this method is run is not relevant; only the passed objects are affected.\n",
      "@name Panel:PositionLabel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/PositionLabel",
      "@param {Panel} this - no description",
      "@param {number} lblWidth - The width to set the label to.",
      "@param {number} x - The horizontal (x) position at which to place the label.",
      "@param {number} y - The vertical (y) position at which to place the label.",
      "@param {Panel} lbl - The label to resize and position.",
      "@param {Panel} panelObj - The panel object to place to the right of the label.",
      "@returns {number} - The distance from the top of the parent panel to the bottom of the tallest object (the *y* position plus the height of the label or passed panel, depending on which is tallest)."
    ],
    "type": "class",
    "context": "Panel",
    "name": "PositionLabel",
    "typings": [
      "(this: Panel, lblWidth: number, x: number, y: number, lbl: Panel, panelObj: Panel): number"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the panels layout was invalidated. This means all child panels must be re-positioned to fit the possibly new size of this panel.\n",
      "@name PanelHooks:PerformLayout",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/PerformLayout",
      "@warning Do **NOT** call this function directly. Use @Panel:InvalidateLayout instead!",
      "@param {Panel} this - no description",
      "@param {number} width - The panels current width.",
      "@param {number} height - The panels current height.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "PerformLayout",
    "typings": [
      "(this: Panel, width: number, height: number): void"
    ]
  },
  {
    "comments": [
      "\nOnly works for TextEntries.\nPastes the contents of the clipboard into the TextEntry.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:Paste",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Paste",
      "@note Tab characters will be dropped from the pasted text",
      "@warning Due to privacy concerns, this function has been disabled",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Paste",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nParents the panel to the HUD.\nMakes it invisible on the escape-menu and disables controls.\n",
      "@name Panel:ParentToHUD",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ParentToHUD",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ParentToHUD",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nPaints the panel at its current position. To use this you must call @Panel:SetPaintedManually(true).\n",
      "@name Panel:PaintManual",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/PaintManual",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "PaintManual",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the panel and all its children were drawn, return true to override the default drawing.\n",
      "@name PanelHooks:PaintOver",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/PaintOver",
      "@param {Panel} this - no description",
      "@param {number} width - The panels current width.",
      "@param {number} height - The panels current height.",
      "@returns {boolean} - Should we disable default PaintOver rendering? This is useful in case with Derma panels that use Derma hooks."
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "PaintOver",
    "typings": [
      "(this: Panel, width: number, height: number): boolean"
    ]
  },
  {
    "comments": [
      "\nPaints a ghost copy of the panel at the given position.\n",
      "@name Panel:PaintAt",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/PaintAt",
      "@param {Panel} this - no description",
      "@param {number} posX - The x coordinate to draw the panel from.",
      "@param {number} posY - The y coordinate to draw the panel from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "PaintAt",
    "typings": [
      "(this: Panel, posX: number, posY: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the panel should be drawn.\nYou can create panels with a customized appearance by overriding their Paint() function, which will prevent the default appearance from being drawn.\n",
      "@name PanelHooks:Paint",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/Paint",
      "@note Render operations from the @surface library (and consequentially the @draw library) are always offset by the global position of this panel, as seen in the example below",
      "@note This hook will not run if the panel is completely off the screen. The hook will still run however if any parts of the panel are still on screen.",
      "@param {Panel} this - no description",
      "@param {number} width - The panel's width.",
      "@param {number} height - The panel's height.",
      "@returns {boolean} - Returning true prevents the background from being drawn."
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "Paint",
    "typings": [
      "(this: Panel, width: number, height: number): boolean"
    ]
  },
  {
    "comments": [
      "\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)Instructs a HTML control to download and parse a HTML script using the passed URL.\n",
      "@name Panel:OpenURL",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/OpenURL",
      "@param {Panel} this - no description",
      "@param {string} URL - URL to open",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "OpenURL",
    "typings": [
      "(this: Panel, URL: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled by @Panel:DragMouseRelease when the panel object is released after being dragged.\n",
      "@name PanelHooks:OnStopDragging",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnStopDragging",
      "@internal",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnStopDragging",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled by @dragndrop.StartDragging when the panel starts being dragged.\n",
      "@name PanelHooks:OnStartDragging",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnStartDragging",
      "@internal",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnStartDragging",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled just after the panel size changes.\nAll size functions will return the new values when this hook is called.\n",
      "@name PanelHooks:OnSizeChanged",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnSizeChanged",
      "@warning Changing the panel size in this hook will cause an infinite loop!",
      "@param {Panel} this - no description",
      "@param {number} newWidth - The new width of the panel",
      "@param {number} newHeight - The new height of the panel",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnSizeChanged",
    "typings": [
      "(this: Panel, newWidth: number, newHeight: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player's screen resolution of the game changes.\n@ScrW function and @ScrH function will return the new values when this hook is called.\n",
      "@name PanelHooks:OnScreenSizeChanged",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnScreenSizeChanged",
      "@param {Panel} this - no description",
      "@param {number} oldWidth - The previous width  of the game's window",
      "@param {number} oldHeight - The previous height of the game's window",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnScreenSizeChanged",
    "typings": [
      "(this: Panel, oldWidth: number, oldHeight: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the panel is about to be removed.\n",
      "@name PanelHooks:OnRemove",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnRemove",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnRemove",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the mouse wheel was used.\n",
      "@name PanelHooks:OnMouseWheeled",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnMouseWheeled",
      "@param {Panel} this - no description",
      "@param {number} scrollDelta - The scroll delta, indicating how much the user turned the mouse wheel.",
      "@returns {boolean} - Return true to suppress default action."
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnMouseWheeled",
    "typings": [
      "(this: Panel, scrollDelta: number): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a mouse key was released while the panel is focused.\n",
      "@name PanelHooks:OnMouseReleased",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnMouseReleased",
      "@param {Panel} this - no description",
      "@param {MOUSE} keyCode - They key code of the key released, see @MOUSE enum.",
      "@returns {boolean} - Return true to suppress default action."
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnMouseReleased",
    "typings": [
      "(this: Panel, keyCode: MOUSE): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a mouse key was pressed while the panel is focused.\n",
      "@name PanelHooks:OnMousePressed",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnMousePressed",
      "@param {Panel} this - no description",
      "@param {MOUSE} keyCode - They key code of the key pressed, see @MOUSE enum.",
      "@returns {boolean} - Return true to suppress default action such as right click opening edit menu for @DTextEntry type."
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnMousePressed",
    "typings": [
      "(this: Panel, keyCode: MOUSE): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a keyboard key was released while the panel is focused.\n",
      "@name PanelHooks:OnKeyCodeReleased",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnKeyCodeReleased",
      "@bug #2886 This is not run for TILDE/\"toggleconsole\" binding.",
      "@param {Panel} this - no description",
      "@param {KEY} keyCode - The key code of the released key, see @KEY enum.",
      "@returns {boolean} - Return true to suppress default action."
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnKeyCodeReleased",
    "typings": [
      "(this: Panel, keyCode: KEY): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a keyboard key was pressed while the panel is focused.\n",
      "@name PanelHooks:OnKeyCodePressed",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnKeyCodePressed",
      "@bug #2886 This is not run for ESC/\"cancelselect\" binding.",
      "@param {Panel} this - no description",
      "@param {KEY} keyCode - The key code of the pressed key, see @KEY enum.",
      "@returns {boolean} - Return true to suppress default action."
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnKeyCodePressed",
    "typings": [
      "(this: Panel, keyCode: KEY): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the panel gained or lost focus.\n",
      "@name PanelHooks:OnFocusChanged",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnFocusChanged",
      "@note @Panel:HasFocus will only be updated on the next frame and will return the \"old\" value at the time this hook is run. Same goes for @vgui.GetKeyboardFocus.",
      "@param {Panel} this - no description",
      "@param {boolean} gained - Is the focus was gained ( true ) or lost ( false )",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnFocusChanged",
    "typings": [
      "(this: Panel, gained: boolean): void"
    ]
  },
  {
    "comments": [
      "\nWe're being dropped on something\nWe can create a new panel here and return it, so that instead of dropping us - it drops the new panel instead! We remain where we are!\nOnly works for panels derived from @DDragBase type.\n",
      "@name PanelHooks:OnDrop",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnDrop",
      "@param {Panel} this - no description",
      "@returns {Panel} - The panel to drop instead of us. By default you should return self."
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnDrop",
    "typings": [
      "(this: Panel): Panel"
    ]
  },
  {
    "comments": [
      "\nCalled by HTML panels when the panel's DOM has been set up. You can run JavaScript in here.\n",
      "@name PanelHooks:OnDocumentReady",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnDocumentReady",
      "@param {Panel} this - no description",
      "@param {string} url - The URL of the current page.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnDocumentReady",
    "typings": [
      "(this: Panel, url: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled when we are deactivated during level load. Used by the loading screen panel.\n",
      "@name PanelHooks:OnDeactivate",
      "@predicted false",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnDeactivate",
      "@internal",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnDeactivate",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the cursor was moved with the panels bounds.\n",
      "@name PanelHooks:OnCursorMoved",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnCursorMoved",
      "@param {Panel} this - no description",
      "@param {number} cursorX - The new x position of the cursor relative to the panels origin.",
      "@param {number} cursorY - The new y position of the cursor relative to the panels origin.",
      "@returns {boolean} - Return true to suppress default action."
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnCursorMoved",
    "typings": [
      "(this: Panel, cursorX: number, cursorY: number): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the cursor left the panels bounds.\n",
      "@name PanelHooks:OnCursorExited",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnCursorExited",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnCursorExited",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the cursor entered the panels bounds.\n",
      "@name PanelHooks:OnCursorEntered",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnCursorEntered",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnCursorEntered",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled by HTML panels when the page attempts to open a new child view (such as a popup or new tab).\n",
      "@name PanelHooks:OnChildViewCreated",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnChildViewCreated",
      "@param {Panel} this - no description",
      "@param {string} sourceURL - The URL of the page requesting to create a child.",
      "@param {string} targetURL - The URL of the requested child.",
      "@param {boolean} isPopup - True if the requested view is a popup.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnChildViewCreated",
    "typings": [
      "(this: Panel, sourceURL: string, targetURL: string, isPopup: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a child of the panel is about to removed.\n",
      "@name PanelHooks:OnChildRemoved",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnChildRemoved",
      "@param {Panel} this - no description",
      "@param {Panel} child - The child which is about to be removed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnChildRemoved",
    "typings": [
      "(this: Panel, child: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a child was parented to the panel.\n",
      "@name PanelHooks:OnChildAdded",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnChildAdded",
      "@bug #2759 This is called before the panel's metatable is set.",
      "@param {Panel} this - no description",
      "@param {Panel} child - The child which was added.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnChildAdded",
    "typings": [
      "(this: Panel, child: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled by HTML panels when the title of the loaded page has been changed.\n",
      "@name PanelHooks:OnChangeTitle",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnChangeTitle",
      "@param {Panel} this - no description",
      "@param {string} newTitle - The new title of the page.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnChangeTitle",
    "typings": [
      "(this: Panel, newTitle: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled by HTML panels when the target URL of the frame has changed, this happens when you hover over a link.\n",
      "@name PanelHooks:OnChangeTitle",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnChangeTargetURL",
      "@param {Panel} this - no description",
      "@param {string} targetURL - New target URL.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnChangeTitle",
    "typings": [
      "(this: Panel, targetURL: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled when we are activated during level load. Used by the loading screen panel.\n",
      "@name PanelHooks:OnActivate",
      "@predicted false",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/PANEL/OnActivate",
      "@internal",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "OnActivate",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns the number of children of the panel object that are selected. This is equivalent to calling @Panel:IsSelected on all child objects and counting the number of returns that are *true*.\n",
      "@name Panel:NumSelectedChildren",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/NumSelectedChildren",
      "@param {Panel} this - no description",
      "@returns {number} - The number of child objects that are currently selected. This does not include the parent object you are calling the method from."
    ],
    "type": "class",
    "context": "Panel",
    "name": "NumSelectedChildren",
    "typings": [
      "(this: Panel): number"
    ]
  },
  {
    "comments": [
      "\nSets whether this panel's drawings should be clipped within the parent panel's bounds.\nSee also @DisableClipping function and @surface.DisableClipping.\n",
      "@name Panel:NoClipping",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/NoClipping",
      "@param {Panel} this - no description",
      "@param {boolean} clip - Whether to clip or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "NoClipping",
    "typings": [
      "(this: Panel, clip: boolean): void"
    ]
  },
  {
    "comments": [
      "\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)\n[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)\n",
      "@name Panel:NewObjectCallback",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/NewObjectCallback",
      "@internal",
      "@param {Panel} this - no description",
      "@param {string} objectName - no description",
      "@param {string} callbackName - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "NewObjectCallback",
    "typings": [
      "(this: Panel, objectName: string, callbackName: string): void"
    ]
  },
  {
    "comments": [
      "\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)\n[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)\n",
      "@name Panel:NewObject",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/NewObject",
      "@internal",
      "@param {Panel} this - no description",
      "@param {string} objectName - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "NewObject",
    "typings": [
      "(this: Panel, objectName: string): void"
    ]
  },
  {
    "comments": [
      "\nMoves the panel in front of all other panels on screen. Unless the panel has been made a pop-up using @Panel:MakePopup, it will still draw behind any that have.\n",
      "@name Panel:MoveToFront",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MoveToFront",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "MoveToFront",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCreates a new animation for the panel object.\nMethods that use this function:\n* @Panel:MoveTo\n* @Panel:SizeTo\n* @Panel:SlideUp\n* @Panel:SlideDown\n* @Panel:ColorTo\n* @Panel:AlphaTo\n* @Panel:MoveBy\n* @Panel:LerpPositions\n",
      "@name Panel:NewAnimation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/NewAnimation",
      "@param {Panel} this - no description",
      "@param {number} length - The length of the animation in seconds.",
      "@param {number} delay - The delay before the animation starts.",
      "@param {number} ease - The power/index to use for easing.\n*Positive values greater than 1 will ease in; the higher the number, the sharper the curve's gradient (less linear).\n*A value of 1 removes all easing.\n*Positive values between 0 and 1 ease out; values closer to 0 increase the curve's gradient (less linear).\n*A value of 0 will break the animation and should be avoided.\n*Any value less than zero will ease in/out; the value has no effect on the gradient.",
      "@param {function} callback - The function to be called when the animation ends. Arguments passed are:",
      "@returns {AnimationData} - Partially filled @AnimationData structure with members:"
    ],
    "type": "class",
    "context": "Panel",
    "name": "NewAnimation",
    "typings": [
      "(this: Panel, length: number, delay?: number, ease?: number, callback?: PanelNewAnimationCallback): AnimationData"
    ],
    "types": [
      {
        "comments": [
          "@type PanelNewAnimationCallback",
          "@param {void} this - no description",
          "@param {AnimationData} animTable - The @AnimationData structure that was used.",
          "@param {Panel} tgtPanel - The panel object that was animated."
        ],
        "type": "type",
        "name": "PanelNewAnimationCallback",
        "typing": "(this: void, animTable: AnimationData, tgtPanel: Panel) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nMoves this panel object behind the specified sibling (child of the same parent) in the render order, and shuffles up the @Panel:SetZPos of siblings now in front.\n",
      "@name Panel:MoveToBefore",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MoveToBefore",
      "@param {Panel} this - no description",
      "@param {Panel} siblingPanel - The panel to move this one behind. Must be a child of the same parent panel.",
      "@returns {boolean} - *false* if the passed panel is not a sibling, otherwise *nil*."
    ],
    "type": "class",
    "context": "Panel",
    "name": "MoveToBefore",
    "typings": [
      "(this: Panel, siblingPanel: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nMoves the panel object behind all other panels on screen. If the panel has been made a pop-up with @Panel:MakePopup, it will still draw in front of any panels that haven't.\n",
      "@name Panel:MoveToBack",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MoveToBack",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "MoveToBack",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nMoves this panel object in front of the specified sibling (child of the same parent) in the render order, and shuffles up the Z-positions of siblings now behind.\n",
      "@name Panel:MoveToAfter",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MoveToAfter",
      "@param {Panel} this - no description",
      "@param {Panel} siblingPanel - The panel to move this one in front of. Must be a child of the same parent panel.",
      "@returns {boolean} - *false* if the passed panel is not a sibling, otherwise *nil*."
    ],
    "type": "class",
    "context": "Panel",
    "name": "MoveToAfter",
    "typings": [
      "(this: Panel, siblingPanel: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nMoves the panel to the specified position using animation.\n",
      "@name Panel:MoveTo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MoveTo",
      "@param {Panel} this - no description",
      "@param {number} posX - The target x coordinate of the panel.",
      "@param {number} posY - The target y coordinate of the panel.",
      "@param {number} time - The time to perform the animation within.",
      "@param {number} delay - The delay before the animation starts.",
      "@param {number} ease - The easing of the start and/or end speed of the animation. See @Panel:NewAnimation for how this works.",
      "@param {function} callback - The function to be called once the animation finishes. Arguments are:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "MoveTo",
    "typings": [
      "(this: Panel, posX: number, posY: number, time: number, delay?: number, ease?: number, callback: PanelMoveToCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type PanelMoveToCallback",
          "@param {void} this - no description",
          "@param {AnimationData} animData - The @AnimationData structure that was used.",
          "@param {Panel} pnl - The panel object that was moved."
        ],
        "type": "type",
        "name": "PanelMoveToCallback",
        "typing": "(this: void, animData: AnimationData, pnl: Panel) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nPlaces the panel right to the passed panel with the specified offset.\n",
      "@name Panel:MoveRightOf",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MoveRightOf",
      "@param {Panel} this - no description",
      "@param {Panel} panel - Panel to position relatively to.",
      "@param {number} offset - The align offset.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "MoveRightOf",
    "typings": [
      "(this: Panel, panel: Panel, offset?: number): void"
    ]
  },
  {
    "comments": [
      "\nPlaces the panel left to the passed panel with the specified offset.\n",
      "@name Panel:MoveLeftOf",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MoveLeftOf",
      "@param {Panel} this - no description",
      "@param {Panel} panel - Panel to position relatively to.",
      "@param {number} offset - The align offset.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "MoveLeftOf",
    "typings": [
      "(this: Panel, panel: Panel, offset?: number): void"
    ]
  },
  {
    "comments": [
      "\nMoves the panel by the specified coordinates using animation.\n",
      "@name Panel:MoveBy",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MoveBy",
      "@param {Panel} this - no description",
      "@param {number} moveX - The number of pixels to move by in the horizontal (x) direction.",
      "@param {number} moveY - The number of pixels to move by in the vertical (y) direction.",
      "@param {number} time - The time (in seconds) in which to perform the animation.",
      "@param {number} delay - The delay (in seconds) before the animation begins.",
      "@param {number} ease - The easing of the start and/or end speed of the animation. See @Panel:NewAnimation for how this works.",
      "@param {function} callback - The function to be called once the animation is complete. Arguments are:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "MoveBy",
    "typings": [
      "(this: Panel, moveX: number, moveY: number, time: number, delay?: number, ease?: number, callback?: PanelMoveByCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type PanelMoveByCallback",
          "@param {void} this - no description",
          "@param {AnimationData} animData - The @AnimationData structure that was used.",
          "@param {Panel} pnl - The panel object that was moved."
        ],
        "type": "type",
        "name": "PanelMoveByCallback",
        "typing": "(this: void, animData: AnimationData, pnl: Panel) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nPlaces the panel below the passed panel with the specified offset.\n",
      "@name Panel:MoveBelow",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MoveBelow",
      "@param {Panel} this - no description",
      "@param {Panel} panel - Panel to position relatively to.",
      "@param {number} offset - The align offset.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "MoveBelow",
    "typings": [
      "(this: Panel, panel: Panel, offset?: number): void"
    ]
  },
  {
    "comments": [
      "\nPlaces the panel above the passed panel with the specified offset.\n",
      "@name Panel:MoveAbove",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MoveAbove",
      "@param {Panel} this - no description",
      "@param {Panel} panel - Panel to position relatively to.",
      "@param {number} offset - The align offset.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "MoveAbove",
    "typings": [
      "(this: Panel, panel: Panel, offset?: number): void"
    ]
  },
  {
    "comments": [
      "\nAllows the panel to receive mouse input even if the mouse cursor is outside the bounds of the panel.\n",
      "@name Panel:MouseCapture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MouseCapture",
      "@param {Panel} this - no description",
      "@param {boolean} doCapture - Set to true to enable, set to false to disable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "MouseCapture",
    "typings": [
      "(this: Panel, doCapture: boolean): void"
    ]
  },
  {
    "comments": [
      "\nFocuses the panel and enables it to receive input.\nThis automatically calls @Panel:SetMouseInputEnabled and @Panel:SetKeyboardInputEnabled and sets them to true.\n",
      "@name Panel:MakePopup",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/MakePopup",
      "@note Panels derived from @Panel type will not work properly with this function. Due to this, any children will not be intractable with keyboard. Derive from @EditablePanel type instead.",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "MakePopup",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nGets the absolute screen position of the position specified relative to the panel.\nSee also @Panel:ScreenToLocal.\n",
      "@name Panel:LocalToScreen",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/LocalToScreen",
      "@note If the panel uses @Panel:Dock, this function will return 0, 0 when the panel was created. The position will be updated in the next frame.",
      "@warning This function uses a cached value for the screen position of the panel, computed at the end of the last VGUI Think/Layout pass.\nie. inaccurate results may be returned if the panel or any of its ancestors have been repositioned outside of @PanelHooks:Think or @PanelHooks:PerformLayout within the last frame.",
      "@param {Panel} this - no description",
      "@param {number} posX - The X coordinate of the position on the panel to translate.",
      "@param {number} posY - The Y coordinate of the position on the panel to translate.",
      "@returns {number} - The X coordinate relative to the screen.",
      "@returns {number} - The Y coordinate relative to the screen.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "LocalToScreen",
    "typings": [
      "(this: Panel, posX: number, posY: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the cursor position local to the position of the panel (usually the upper-left corner).\n",
      "@name Panel:LocalCursorPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/LocalCursorPos",
      "@param {Panel} this - no description",
      "@returns {number} - The x coordinate",
      "@returns {number} - The y coordinate",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "LocalCursorPos",
    "typings": [
      "(this: Panel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nSets a new image to be loaded by a @TGAImage type.\n[Category:TGAImage](https://wiki.garrysmod.com/page/Category:TGAImage)\n",
      "@name Panel:LoadTGAImage",
      "@wiki https://wiki.garrysmod.com/page/Panel/LoadTGAImage",
      "@param {Panel} this - no description",
      "@param {string} imageName - The file path.",
      "@param {string} strPath - The PATH to search in. See [File Search Paths](https://wiki.garrysmod.com/page/File%20Search%20Paths).\nThis isn't used internally.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "LoadTGAImage",
    "typings": [
      "(this: Panel, imageName: string, strPath: string): void"
    ]
  },
  {
    "comments": [
      "\nLoads controls for the panel from a JSON string.\n",
      "@name Panel:LoadGWENString",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/LoadGWENString",
      "@param {Panel} this - no description",
      "@param {string} str - JSON string containing information about controls to create.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "LoadGWENString",
    "typings": [
      "(this: Panel, str: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled after @Panel:SetCookieName is called on this panel to apply the just loaded cookie values for this panel.\n",
      "@name PanelHooks:LoadCookies",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/LoadCookies",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "LoadCookies",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nLoads controls(positions, etc) from given data. This is what the default options menu uses.\n[Category:EditablePanel](https://wiki.garrysmod.com/page/Category:EditablePanel)\n",
      "@name Panel:LoadControlsFromString",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/LoadControlsFromString",
      "@internal",
      "@param {Panel} this - no description",
      "@param {string} data - The data to load controls from. Format unknown.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "LoadControlsFromString",
    "typings": [
      "(this: Panel, data: string): void"
    ]
  },
  {
    "comments": [
      "\nRedefines the panel object's @Panel:SetPos method to operate using frame-by-frame linear interpolation (Lerp). When the panel's position is changed, it will move to the target position at the speed defined. You can undo this with @Panel:DisableLerp.\nUnlike the other panel animation functions, such as @Panel:MoveTo, this animation method will not operate whilst the game is paused. This is because it relies on @FrameTime function.\n",
      "@name Panel:LerpPositions",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/LerpPositions",
      "@param {Panel} this - no description",
      "@param {number} speed - The speed at which to move the panel. This is affected by the value of *easeOut*. Recommended values are:\n* **0.1 - 10** when *easeOut* is *false*.\n* **0.1 - 1** when *easeOut* is *true*.",
      "@param {boolean} easeOut - This causes the panel object to 'jump' at the target, slowing as it approaches. This affects the *speed* value significantly, see above.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "LerpPositions",
    "typings": [
      "(this: Panel, speed: number, easeOut: boolean): void"
    ]
  },
  {
    "comments": [
      "\nLoads a .gwen file (created by GWEN Designer) and calls @Panel:LoadGWENString with the contents of the loaded file.\nUsed to load panel controls from a file.\n",
      "@name Panel:LoadGWENFile",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/LoadGWENFile",
      "@param {Panel} this - no description",
      "@param {string} filename - The file to open. The path is relative to garrysmod/garrysmod/.",
      "@param {string} path - The path used to look up the file.\n* \"GAME\" Structured like base folder (garrysmod/), searches all the mounted content (main folder, addons, mounted games etc)\n* \"LUA\" or \"lsv\" - All Lua folders (lua/) including gamesmodes and addons\n* \"DATA\" Data folder (garrysmod/data)\n* \"MOD\" Strictly the game folder (garrysmod/), ignores mounting.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "LoadGWENFile",
    "typings": [
      "(this: Panel, filename: string, path?: string): void"
    ]
  },
  {
    "comments": [
      "\nSimilar to @Panel:LoadControlsFromString but loads controls from a file.\n[Category:EditablePanel](https://wiki.garrysmod.com/page/Category:EditablePanel)\n",
      "@name Panel:LoadControlsFromFile",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/LoadControlsFromFile",
      "@internal",
      "@param {Panel} this - no description",
      "@param {string} path - The path to load the controls from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "LoadControlsFromFile",
    "typings": [
      "(this: Panel, path: string): void"
    ]
  },
  {
    "comments": [
      "\nRemove the focus from the panel.\n",
      "@name Panel:KillFocus",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/KillFocus",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "KillFocus",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns if a panel allows world clicking set by @Panel:SetWorldClicker.\n",
      "@name Panel:IsWorldClicker",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsWorldClicker",
      "@param {Panel} this - no description",
      "@returns {boolean} - If the panel allows world clicking."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsWorldClicker",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the panel is visible.\n",
      "@name Panel:IsVisible",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsVisible",
      "@param {Panel} this - no description",
      "@returns {boolean} - isVisible"
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsVisible",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the panel is valid and not marked for deletion.\n",
      "@name Panel:IsValid",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsValid",
      "@param {Panel} this - no description",
      "@returns {boolean} - True if the object is valid."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsValid",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines if the panel object is a selection canvas or not. This is set with @Panel:SetSelectionCanvas.\n",
      "@name Panel:IsSelectionCanvas",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsSelectionCanvas",
      "@param {Panel} this - no description",
      "@returns {any} - The value (if any) set by @Panel:SetSelectionCanvas."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsSelectionCanvas",
    "typings": [
      "(this: Panel): any"
    ]
  },
  {
    "comments": [
      "\nReturns if the panel object is selected (like icons in the Spawn Menu, holding @Shift key). This can be set in Lua using @Panel:SetSelected.\n",
      "@name Panel:IsSelected",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsSelected",
      "@param {Panel} this - no description",
      "@returns {boolean} - Whether the panel object is selected or not. Always returns false if the object is not selectable. This can be modified using @Panel:SetSelectable."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsSelected",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines if the panel object is selectable (like icons in the Spawn Menu, holding @Shift key). This is set with @Panel:SetSelectable.\n",
      "@name Panel:IsSelectable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsSelectable",
      "@param {Panel} this - no description",
      "@returns {boolean} - Whether the panel is selectable or not."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsSelectable",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the panel contains the given panel, recursively.\n",
      "@name Panel:IsOurChild",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsOurChild",
      "@param {Panel} this - no description",
      "@param {Panel} childPanel - no description",
      "@returns {boolean} - True if the panel contains childPanel."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsOurChild",
    "typings": [
      "(this: Panel, childPanel: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines whether or not a text-based panel object, such as a @DTextEntry type, is in multi-line mode. This is set with @Panel:SetMultiline.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:IsMultiline",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsMultiline",
      "@param {Panel} this - no description",
      "@returns {boolean} - Whether the object is in multi-line mode or not."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsMultiline",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the panel is going to be deleted in the next frame.\n",
      "@name Panel:IsMarkedForDeletion",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsMarkedForDeletion",
      "@param {Panel} this - no description",
      "@returns {boolean} - markedForDeletion"
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsMarkedForDeletion",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the panel can receive mouse input.\n",
      "@name Panel:IsMouseInputEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsMouseInputEnabled",
      "@param {Panel} this - no description",
      "@returns {boolean} - mouseInputEnabled"
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsMouseInputEnabled",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines whether or not a @HTML type or @DHTML type element is currently loading a page.\n",
      "@name Panel:IsLoading",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsLoading",
      "@param {Panel} this - no description",
      "@returns {boolean} - Whether or not the (D)HTML object is loading."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsLoading",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the panel can receive keyboard input.\n",
      "@name Panel:IsKeyboardInputEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsKeyboardInputEnabled",
      "@param {Panel} this - no description",
      "@returns {boolean} - keyboardInputEnabled"
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsKeyboardInputEnabled",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the mouse cursor is hovering over this panel or not\nUses @vgui.GetHoveredPanel internally.\nRequires @Panel:SetMouseInputEnabled to be set to true.\n",
      "@name Panel:IsHovered",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsHovered",
      "@param {Panel} this - no description",
      "@returns {boolean} - true if the panel is hovered"
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsHovered",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the the panel is enabled or disabled.\nSee @Panel:SetEnabled for a function that makes the panel enabled or disabled.\n",
      "@name Panel:IsEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsEnabled",
      "@param {Panel} this - no description",
      "@returns {boolean} - Whether the panel is enabled or disabled."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsEnabled",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this panel is currently being dragged or not.\n",
      "@name Panel:IsDragging",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsDragging",
      "@param {Panel} this - no description",
      "@returns {boolean} - Whether this panel is currently being dragged or not."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsDragging",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this panel is draggable ( if user is able to drag it ) or not.\n",
      "@name Panel:IsDraggable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsDraggable",
      "@param {Panel} this - no description",
      "@returns {boolean} - Whether this panel is draggable ( if user is able to drag it ) or not."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsDraggable",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines whether the mouse cursor is hovered over one of this panel object's children. This is a reverse process using @vgui.GetHoveredPanel, and looks upward to find the parent.\n",
      "@name Panel:IsChildHovered",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/IsChildHovered",
      "@param {Panel} this - no description",
      "@param {boolean} immediate - Set to true to check only the immediate children of given panel ( first level )",
      "@returns {boolean} - Whether or not one of this panel object's children is being hovered over."
    ],
    "type": "class",
    "context": "Panel",
    "name": "IsChildHovered",
    "typings": [
      "(this: Panel, immediate?: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nInvalidates the layout of the parent of this panel object. This will cause it to re-layout, calling @PanelHooks:PerformLayout.\n",
      "@name Panel:InvalidateParent",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/InvalidateParent",
      "@param {Panel} this - no description",
      "@param {boolean} layoutNow - If *true*, the re-layout will occur immediately, otherwise it will be performed in the next frame.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "InvalidateParent",
    "typings": [
      "(this: Panel, layoutNow?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCauses the panel to re-layout in the next frame. During the layout process  @PanelHooks:PerformLayout will be called on the target panel.\nYou should avoid calling this function every frame.\n",
      "@name Panel:InvalidateLayout",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/InvalidateLayout",
      "@bug #2574 Using this on a panel after clicking on a docked element will cause docked elements to reorient themselves incorrectly. This can be fixed by assigning a unique @Panel.SetZPos to each docked element.",
      "@param {Panel} this - no description",
      "@param {boolean} layoutNow - If true the panel will re-layout instantly and not wait for the next frame.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "InvalidateLayout",
    "typings": [
      "(this: Panel, layoutNow?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nInvalidates the layout of this panel object and all its children. This will cause these objects to re-layout immediately, calling @PanelHooks:PerformLayout. If you want to perform the layout in the next frame, you will have loop manually through all children, and call @Panel:InvalidateLayout on each.\n",
      "@name Panel:InvalidateChildren",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/InvalidateChildren",
      "@param {Panel} this - no description",
      "@param {boolean} recursive - If *true*, the method will recursively invalidate the layout of all children. Otherwise, only immediate children are affected.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "InvalidateChildren",
    "typings": [
      "(this: Panel, recursive?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nBegins a text fade for a @RichText type element where the last appended text segment is fully faded out after a specific amount of time, at a specific speed.\nThe alpha of the text at any given time is determined by the text's base alpha * ((*sustain* - @CurTime function) / *length*) where @CurTime function is added to *sustain* when this method is called.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:InsertFade",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/InsertFade",
      "@param {Panel} this - no description",
      "@param {number} sustain - The number of seconds the text remains visible.",
      "@param {number} length - The number of seconds it takes the text to fade out.\nIf set **lower** than *sustain*, the text will not begin fading out until (*sustain* - *length*) seconds have passed.\nIf set **higher** than *sustain*, the text will begin fading out immediately at a fraction of the base alpha.\nIf set to **-1**, the text doesn't fade out.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "InsertFade",
    "typings": [
      "(this: Panel, sustain: number, length: number): void"
    ]
  },
  {
    "comments": [
      "\nInserts a color change in a @RichText type element, which affects the color of all text added with @Panel:AppendText until another color change is applied.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:InsertColorChange",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/InsertColorChange",
      "@param {Panel} this - no description",
      "@param {number} r - The red value (0 - 255).",
      "@param {number} g - The green value (0 - 255).",
      "@param {number} b - The blue value (0 - 255).",
      "@param {number} a - The alpha value (0 - 255).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "InsertColorChange",
    "typings": [
      "(this: Panel, r: number, g: number, b: number, a: number): void"
    ]
  },
  {
    "comments": [
      "\nStarts the insertion of clickable text for a @RichText type element. Any text appended with @Panel:AppendText between this call and @Panel:InsertClickableTextEnd will become clickable text.\nThe hook @PanelHooks:ActionSignal is called when the text is clicked, with \"TextClicked\" as the signal name and *signalValue* as the signal value.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:InsertClickableTextStart",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/InsertClickableTextStart",
      "@note The clickable text is a separate Derma panel which will not inherit the current font from the *RichText*.",
      "@param {Panel} this - no description",
      "@param {string} signalValue - The text passed as the action signal's value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "InsertClickableTextStart",
    "typings": [
      "(this: Panel, signalValue: string): void"
    ]
  },
  {
    "comments": [
      "\nMarks the end of a clickable text segment in a @RichText type element, started with @Panel:InsertClickableTextStart.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:InsertClickableTextEnd",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/InsertClickableTextEnd",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "InsertClickableTextEnd",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the panel is created. This is called for each base type that the panel has.\n",
      "@name PanelHooks:Init",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/Init",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "Init",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nMakes a panel invisible.\n",
      "@name Panel:Hide",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Hide",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Hide",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the panel is a descendent of the given panel.\n",
      "@name Panel:HasParent",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/HasParent",
      "@param {Panel} this - no description",
      "@param {Panel} parentPanel - no description",
      "@returns {boolean} - True if the panel is contained within parentPanel."
    ],
    "type": "class",
    "context": "Panel",
    "name": "HasParent",
    "typings": [
      "(this: Panel, parentPanel: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the panel or any of its children(sub children and so on) has the focus.\n",
      "@name Panel:HasHierarchicalFocus",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/HasHierarchicalFocus",
      "@param {Panel} this - no description",
      "@returns {boolean} - hasHierarchicalFocus"
    ],
    "type": "class",
    "context": "Panel",
    "name": "HasHierarchicalFocus",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the panel is focused.\n",
      "@name Panel:HasFocus",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/HasFocus",
      "@param {Panel} this - no description",
      "@returns {boolean} - hasFocus"
    ],
    "type": "class",
    "context": "Panel",
    "name": "HasFocus",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the panel has child panels.\n",
      "@name Panel:HasChildren",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/HasChildren",
      "@param {Panel} this - no description",
      "@returns {boolean} - hasChilds"
    ],
    "type": "class",
    "context": "Panel",
    "name": "HasChildren",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:ApplyGWEN to apply the *Text* property to a panel.\n",
      "@name Panel:GWEN_SetText",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GWEN SetText",
      "@internal",
      "@param {Panel} this - no description",
      "@param {string} txt - The text to be applied to the panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GWEN_SetText",
    "typings": [
      "(this: Panel, txt: string): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:ApplyGWEN to apply the *Size* property to a  panel object. This calls @Panel:SetSize.\n",
      "@name Panel:GWEN_SetSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GWEN SetSize",
      "@internal",
      "@param {Panel} this - no description",
      "@param {IPanelGWEN_SetSizeSize} size - A two-membered table containing the width and heights as numbers:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GWEN_SetSize",
    "typings": [
      "(this: Panel, size: IPanelGWEN_SetSizeSize): void"
    ],
    "types": [
      {
        "comments": [
          "w - {number}: The width."
        ],
        "type": "interface",
        "name": "w",
        "typing": "number",
        "context": "IPanelGWEN_SetSizeSize"
      },
      {
        "comments": [
          "h - {number}: The height."
        ],
        "type": "interface",
        "name": "h",
        "typing": "number",
        "context": "IPanelGWEN_SetSizeSize"
      }
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:ApplyGWEN to apply the *Position* property to a  panel object. This calls @Panel:SetPos.\n",
      "@name Panel:GWEN_SetPosition",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GWEN SetPosition",
      "@internal",
      "@param {Panel} this - no description",
      "@param {IPanelGWEN_SetPositionPos} pos - A two-membered table containing the x and y coordinates as numbers:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GWEN_SetPosition",
    "typings": [
      "(this: Panel, pos: IPanelGWEN_SetPositionPos): void"
    ],
    "types": [
      {
        "comments": [
          "x - {number}: The x coordinate."
        ],
        "type": "interface",
        "name": "x",
        "typing": "number",
        "context": "IPanelGWEN_SetPositionPos"
      },
      {
        "comments": [
          "y - {number}: The y coordinate."
        ],
        "type": "interface",
        "name": "y",
        "typing": "number",
        "context": "IPanelGWEN_SetPositionPos"
      }
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:ApplyGWEN to apply the *Min* property to a  @DNumberWang type, @Slider type, @DNumSlider type or @DNumberScratch type. This calls *SetMin* on one of the previously listed methods.\n",
      "@name Panel:GWEN_SetMin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GWEN SetMin",
      "@internal",
      "@param {Panel} this - no description",
      "@param {number} minValue - The minimum value the element is to permit.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GWEN_SetMin",
    "typings": [
      "(this: Panel, minValue: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:ApplyGWEN to apply the *Max* property to a  @DNumberWang type, @Slider type, @DNumSlider type or @DNumberScratch type. This calls *SetMax* on one of the previously listed methods.\n",
      "@name Panel:GWEN_SetMax",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GWEN SetMax",
      "@internal",
      "@param {Panel} this - no description",
      "@param {number} maxValue - The maximum value the element is to permit.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GWEN_SetMax",
    "typings": [
      "(this: Panel, maxValue: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:ApplyGWEN to apply the *Margin* property to a  panel object. This calls @Panel:DockMargin.\n",
      "@name Panel:GWEN_SetMargin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GWEN SetMargin",
      "@internal",
      "@param {Panel} this - no description",
      "@param {IPanelGWEN_SetMarginMargins} margins - A four-membered table containing the margins as numbers:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GWEN_SetMargin",
    "typings": [
      "(this: Panel, margins: IPanelGWEN_SetMarginMargins): void"
    ],
    "types": [
      {
        "comments": [
          "left - {number}: The left margin."
        ],
        "type": "interface",
        "name": "left",
        "typing": "number",
        "context": "IPanelGWEN_SetMarginMargins"
      },
      {
        "comments": [
          "top - {number}: The top margin."
        ],
        "type": "interface",
        "name": "top",
        "typing": "number",
        "context": "IPanelGWEN_SetMarginMargins"
      },
      {
        "comments": [
          "right - {number}: The right margin."
        ],
        "type": "interface",
        "name": "right",
        "typing": "number",
        "context": "IPanelGWEN_SetMarginMargins"
      },
      {
        "comments": [
          "bottom - {number}: The bottom margin."
        ],
        "type": "interface",
        "name": "bottom",
        "typing": "number",
        "context": "IPanelGWEN_SetMarginMargins"
      }
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:ApplyGWEN to apply the *HorizontalAlign* property to a  panel object. This calls @Panel:SetContentAlignment.\n",
      "@name Panel:GWEN_SetHorizontalAlign",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GWEN SetHorizontalAlign",
      "@internal",
      "@param {Panel} this - no description",
      "@param {string} hAlign - The alignment, as a string, to pass to @Panel:SetContentAlignment. Accepts:\n* *Right*: Align mid-right.\n* *Left*: Align mid-left.\n* *Center*: Align mid-center.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GWEN_SetHorizontalAlign",
    "typings": [
      "(this: Panel, hAlign: string): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:ApplyGWEN to apply the *Dock* property to a  panel object. This calls @Panel:Dock.\n",
      "@name Panel:GWEN_SetDock",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GWEN SetDock",
      "@internal",
      "@param {Panel} this - no description",
      "@param {string} dockState - The dock mode to pass to the panel's *Dock* method. This reads a string and applies the approriate @DOCK enum.\n* *Right*: Dock right.\n* *Left*: Dock left.\n* *Bottom*: Dock at the bottom.\n* *Top*: Dock at the top.\n* *Fill*: Fill the parent panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GWEN_SetDock",
    "typings": [
      "(this: Panel, dockState: string): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:ApplyGWEN to apply the *ControlName* property to a panel. This calls @Panel:SetName.\n",
      "@name Panel:GWEN_SetControlName",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GWEN SetControlName",
      "@internal",
      "@param {Panel} this - no description",
      "@param {string} name - The new name to apply to the panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GWEN_SetControlName",
    "typings": [
      "(this: Panel, name: string): void"
    ]
  },
  {
    "comments": [
      "\nCauses a @RichText type element to scroll to the top of its text.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:GotoTextStart",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GotoTextStart",
      "@bug #2239 This does not work on the same frame as @Panel:SetText.",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GotoTextStart",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:ApplyGWEN to apply the *CheckboxText* property to a @DCheckBoxLabel type. This does exactly the same as @Panel:GWEN_SetText, but exists to cater for the seperate GWEN properties.\n",
      "@name Panel:GWEN_SetCheckboxText",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GWEN SetCheckboxText",
      "@internal",
      "@param {Panel} this - no description",
      "@param {string} txt - The text to be applied to the DCheckBoxLabel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GWEN_SetCheckboxText",
    "typings": [
      "(this: Panel, txt: string): void"
    ]
  },
  {
    "comments": [
      "\nCauses a @RichText type element to scroll to the bottom of its text.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:GotoTextEnd",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GotoTextEnd",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GotoTextEnd",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nGoes to the page in the HTML panel's history at the specified relative offset.\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)\n[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)\n",
      "@name Panel:GoToHistoryOffset",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GoToHistoryOffset",
      "@param {Panel} this - no description",
      "@param {number} offset - The offset in the panel's back/forward history, relative to the current page, that you would like to skip to. Because this is relative, 0 = current page while negative goes back and positive goes forward. For example, -2 will go back 2 pages in the history.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GoToHistoryOffset",
    "typings": [
      "(this: Panel, offset: number): void"
    ]
  },
  {
    "comments": [
      "\nGoes forward one page in the HTML panel's history if available.\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)\n[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)\n",
      "@name Panel:GoForward",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GoForward",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GoForward",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nGoes back one page in the HTML panel's history if available.\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)\n[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)\n",
      "@name Panel:GoBack",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GoBack",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GoBack",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns the Z position of the panel.\n",
      "@name Panel:GetZPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetZPos",
      "@param {Panel} this - no description",
      "@returns {number} - The Z order position of the panel."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetZPos",
    "typings": [
      "(this: Panel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the width of the panel.\n",
      "@name Panel:GetWide",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetWide",
      "@param {Panel} this - no description",
      "@returns {number} - width"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetWide",
    "typings": [
      "(this: Panel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the value the panel holds.\nIn engine is only implemented for @CheckButton type, @Label type (limited to 8192 characters) and @TextEntry type as a string.\nIf using with @DTextEntry type, you should use @Panel:GetText instead.\n",
      "@name Panel:GetValue",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetValue",
      "@param {Panel} this - no description",
      "@returns {any} - The value the panel holds."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetValue",
    "typings": [
      "(this: Panel): any"
    ]
  },
  {
    "comments": [
      "\nGets valid receiver slot of currently dragged panel.\n",
      "@name Panel:GetValidReceiverSlot",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetValidReceiverSlot",
      "@param {Panel} this - no description",
      "@returns {Panel} - The panel this was called on if a valid receiver slot exists, otherwise false.",
      "@returns {table} - The slot table.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetValidReceiverSlot",
    "typings": [
      "(this: Panel): [Panel, table]"
    ]
  },
  {
    "comments": [
      "\nGets the size of the text within a @Label type derived panel.\n[Category:Label](https://wiki.garrysmod.com/page/Category:Label)\n",
      "@name Panel:GetTextSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetTextSize",
      "@bug #2576 This can return 0 incorrectly.",
      "@param {Panel} this - no description",
      "@returns {number} - The width of the text in the DLabel.",
      "@returns {number} - The height of the text in the DLabel.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetTextSize",
    "typings": [
      "(this: Panel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nGets the left and top text margins of a text-based panel object, such as a @DButton type or @DLabel type. This is set with @Panel:SetTextInset.\n[Category:Label](https://wiki.garrysmod.com/page/Category:Label)\n",
      "@name Panel:GetTextInset",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetTextInset",
      "@param {Panel} this - no description",
      "@returns {number} - The left margin of the text, in pixels.",
      "@returns {number} - The top margin of the text, in pixels.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetTextInset",
    "typings": [
      "(this: Panel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the panel's text (where applicable).\nThis method returns a maximum of 1023 bytes, except for @DTextEntry type.\n",
      "@name Panel:GetText",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetText",
      "@param {Panel} this - no description",
      "@returns {string} - The panel's text."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetText",
    "typings": [
      "(this: Panel): string"
    ]
  },
  {
    "comments": [
      "\nReturns the height of the panel.\n",
      "@name Panel:GetTall",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetTall",
      "@param {Panel} this - no description",
      "@returns {number} - height"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetTall",
    "typings": [
      "(this: Panel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the internal Lua table of the panel.\n",
      "@name Panel:GetTable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetTable",
      "@param {Panel} this - no description",
      "@returns {table} - A table containing all the members of given panel object."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetTable",
    "typings": [
      "(this: Panel): table"
    ]
  },
  {
    "comments": [
      "\nReturns the table for the derma skin currently being used by this panel object.\n",
      "@name Panel:GetSkin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetSkin",
      "@param {Panel} this - no description",
      "@returns {table} - The derma skin table currently being used by this object."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetSkin",
    "typings": [
      "(this: Panel): table"
    ]
  },
  {
    "comments": [
      "\nReturns the size of the panel.\nIf you require both the panel's position and size, consider using @Panel:GetBounds instead.\n",
      "@name Panel:GetSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetSize",
      "@param {Panel} this - no description",
      "@returns {number} - width",
      "@returns {number} - height",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetSize",
    "typings": [
      "(this: Panel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the panel object (*self*) if it has been enabled as a selection canvas. This is achieved using @Panel:SetSelectionCanvas.\n",
      "@name Panel:GetSelectionCanvas",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetSelectionCanvas",
      "@param {Panel} this - no description",
      "@returns {Panel} - The panel object this method was called on if enabled as a selection canvas, otherwise *nil*."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetSelectionCanvas",
    "typings": [
      "(this: Panel): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all children of the panel object that are selected. This is recursive, and the returned table will include tables for any child objects that also have children. This means that not all first-level members in the returned table will be of type @Panel type.\n",
      "@name Panel:GetSelectedChildren",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetSelectedChildren",
      "@param {Panel} this - no description",
      "@returns {table} - A table of any child objects that are selected, including tables for children of the child objects (These tables may also contain table members, as the method is recursive)."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetSelectedChildren",
    "typings": [
      "(this: Panel): table"
    ]
  },
  {
    "comments": [
      "\nReturns the position of the panel relative to its @Panel:GetParent.\nIf you require the panel's position **and** size, consider using @Panel:GetBounds instead.\nIf you need the position in screen space, see @Panel:LocalToScreen.\n",
      "@name Panel:GetPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetPos",
      "@param {Panel} this - no description",
      "@returns {number} - X coordinate, relative to this panels parents top left corner.",
      "@returns {number} - Y coordinate, relative to this panels parents top left corner.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetPos",
    "typings": [
      "(this: Panel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the parent of the panel, returns nil if there is no parent.\n",
      "@name Panel:GetParent",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetParent",
      "@param {Panel} this - no description",
      "@returns {Panel} - The parent of given panel"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetParent",
    "typings": [
      "(this: Panel): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the number of lines in a @RichText type. You must wait a couple frames before calling this after using @Panel:AppendText or @Panel:SetText, otherwise it will return the number of text lines before the text change.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:GetNumLines",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetNumLines",
      "@note Even though this function can be called on any panel, it will only work with @RichText type",
      "@param {Panel} this - no description",
      "@returns {number} - The number of lines."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetNumLines",
    "typings": [
      "(this: Panel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the internal name of the panel.\n",
      "@name Panel:GetName",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetName",
      "@param {Panel} this - no description",
      "@returns {string} - name"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetName",
    "typings": [
      "(this: Panel): string"
    ]
  },
  {
    "comments": [
      "\nReturns the panel's HTML material. Only works with @Awesomium type, @HTML type and @DHTML type panels that have been fully loaded.\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)\n[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)\n",
      "@name Panel:GetHTMLMaterial",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetHTMLMaterial",
      "@param {Panel} this - no description",
      "@returns {IMaterial} - The HTML material used by the panel. Typically starts with \"__vgui_texture_\" followed by an incremental number."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetHTMLMaterial",
    "typings": [
      "(this: Panel): IMaterial"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the font that the panel renders its text with.\nThis is the same font name set with @Panel:SetFontInternal.\n",
      "@name Panel:GetFont",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetFont",
      "@param {Panel} this - no description",
      "@returns {string} - fontName"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetFont",
    "typings": [
      "(this: Panel): string"
    ]
  },
  {
    "comments": [
      "\nReturns the docked padding of the panel. (set by @Panel:DockPadding)\n",
      "@name Panel:GetDockPadding",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetDockPadding",
      "@param {Panel} this - no description",
      "@returns {number} - Left padding.",
      "@returns {number} - Top padding.",
      "@returns {number} - Right padding.",
      "@returns {number} - Bottom padding.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetDockPadding",
    "typings": [
      "(this: Panel): [number, number, number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the docked margins of the panel. (set by @Panel:DockMargin)\n",
      "@name Panel:GetDockMargin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetDockMargin",
      "@param {Panel} this - no description",
      "@returns {number} - Left margin.",
      "@returns {number} - Top margin.",
      "@returns {number} - Right margin.",
      "@returns {number} - Bottom margin.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetDockMargin",
    "typings": [
      "(this: Panel): [number, number, number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns a dock enum for the panel's current docking type.\n",
      "@name Panel:GetDock",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetDock",
      "@param {Panel} this - no description",
      "@returns {DOCK} - The dock enum for the panel. See @DOCK enum."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetDock",
    "typings": [
      "(this: Panel): DOCK"
    ]
  },
  {
    "comments": [
      "\nGets the value of a cookie stored by the panel object, as a number. This can also be done with @cookie.GetNumber, using the panel's cookie name, a fullstop, and then the actual name of the cookie.\nMake sure the panel's cookie name has not changed since writing, or the cookie will not be accessible. This can be done with @Panel:GetCookieName and @Panel:SetCookieName.\n",
      "@name Panel:GetCookieNumber",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetCookieNumber",
      "@param {Panel} this - no description",
      "@param {string} cookieName - The name of the cookie from which to retrieve the value.",
      "@param {number} def - The default value to return if the cookie does not exist.",
      "@returns {number} - The number value of the stored cookie, or the default value should the cookie not exist."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetCookieNumber",
    "typings": [
      "(this: Panel, cookieName: string, def: number): number"
    ]
  },
  {
    "comments": [
      "\nGets the name the panel uses to store cookies. This is set with @Panel:SetCookieName.\n",
      "@name Panel:GetCookieName",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetCookieName",
      "@param {Panel} this - no description",
      "@returns {string} - The name the panel uses when reading or writing cookies. The format used is as follows: ```panelCookieName.individualCookieName```"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetCookieName",
    "typings": [
      "(this: Panel): string"
    ]
  },
  {
    "comments": [
      "\nGets the value of a cookie stored by the panel object. This can also be done with @cookie.GetString, using the panel's cookie name, a fullstop, and then the actual name of the cookie.\nMake sure the panel's cookie name has not changed since writing, or the cookie will not be accessible. This can be done with @Panel:GetCookieName and @Panel:SetCookieName.\n",
      "@name Panel:GetCookie",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetCookie",
      "@param {Panel} this - no description",
      "@param {string} cookieName - The name of the cookie from which to retrieve the value.",
      "@param {string} def - The default value to return if the cookie does not exist.",
      "@returns {string} - The value of the stored cookie, or the default value should the cookie not exist."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetCookie",
    "typings": [
      "(this: Panel, cookieName: string, def: string): string"
    ]
  },
  {
    "comments": [
      "\nGets the size of the content/children within a panel object.\nOnly works with @Label type derived panels by default such as @DLabel type.\nWill also work on any panel that manually implements this method.\n[Category:Label](https://wiki.garrysmod.com/page/Category:Label)\n",
      "@name Panel:GetContentSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetContentSize",
      "@param {Panel} this - no description",
      "@returns {number} - The content width of the object.",
      "@returns {number} - The content height of the object.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetContentSize",
    "typings": [
      "(this: Panel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the child of this panel object that is closest to the specified point. The point is relative to the object on which the method is called. The distance the child is from this point is also returned.\n",
      "@name Panel:GetClosestChild",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetClosestChild",
      "@param {Panel} this - no description",
      "@param {number} x - The horizontal (x) position of the point.",
      "@param {number} y - The vertical (y) position of the point.",
      "@returns {Panel} - The child object that was closest to the specified point.",
      "@returns {number} - The distance that this child was from the point.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetClosestChild",
    "typings": [
      "(this: Panel, x: number, y: number): [Panel, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the class name of the panel.\n",
      "@name Panel:GetClassName",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetClassName",
      "@param {Panel} this - no description",
      "@returns {string} - className"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetClassName",
    "typings": [
      "(this: Panel): string"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all visible, selectable children of the panel object that lie at least partially within the specified rectangle.\n",
      "@name Panel:GetChildrenInRect",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetChildrenInRect",
      "@param {Panel} this - no description",
      "@param {number} x - The horizontal (x) position of the top-left corner of the rectangle, relative to the panel object.",
      "@param {number} y - The vertical (y) position of the top-left corner of the rectangle, relative to the panel object.",
      "@param {number} w - The width of the rectangle.",
      "@param {number} h - The height of the rectangle.",
      "@returns {table} - A table of panel objects that lie at least partially within the specified rectangle."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetChildrenInRect",
    "typings": [
      "(this: Panel, x: number, y: number, w: number, h: number): table"
    ]
  },
  {
    "comments": [
      "\nReturns a table with all the child panels of the panel.\n",
      "@name Panel:GetChildren",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetChildren",
      "@param {Panel} this - no description",
      "@returns {table} - children"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetChildren",
    "typings": [
      "(this: Panel): table"
    ]
  },
  {
    "comments": [
      "\nGets a child object's position relative to this panel object. The number of levels is not relevant; the child may have many parents between itself and the object on which the method is called.\n",
      "@name Panel:GetChildPosition",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetChildPosition",
      "@param {Panel} this - no description",
      "@param {Panel} pnl - The panel to get the position of.",
      "@returns {number} - The horizontal (x) position of the child relative to this panel object.",
      "@returns {number} - The vertical (y) position of the child relative to this panel object.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetChildPosition",
    "typings": [
      "(this: Panel, pnl: Panel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nGets a child by its index.\n",
      "@name Panel:GetChild",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetChild",
      "@note This index starts at 0, except when you use this on a @DMenu type.",
      "@param {Panel} this - no description",
      "@param {number} childIndex - The index of the child to get.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetChild",
    "typings": [
      "(this: Panel, childIndex: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the position/offset of the caret (or text cursor) in a text-based panel object.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:GetCaretPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetCaretPos",
      "@param {Panel} this - no description",
      "@returns {number} - The caret position/offset from the start of the text. A value of *0* means the caret sits before the first character."
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetCaretPos",
    "typings": [
      "(this: Panel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the position and size of the panel.\nThis is equivalent to calling @Panel:GetPos and @Panel:GetSize together.\n",
      "@name Panel:GetBounds",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetBounds",
      "@param {Panel} this - no description",
      "@returns {number} - The x coordinate of the panel, relative to its parent's top left.",
      "@returns {number} - The y coordinate of the panel, relative to its parent's top left.",
      "@returns {number} - The width of the panel.",
      "@returns {number} - The height of the panel.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetBounds",
    "typings": [
      "(this: Panel): [number, number, number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the alpha multiplier for this panel.\n",
      "@name Panel:GetAlpha",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/GetAlpha",
      "@param {Panel} this - no description",
      "@returns {number} - alphaMul"
    ],
    "type": "class",
    "context": "Panel",
    "name": "GetAlpha",
    "typings": [
      "(this: Panel): number"
    ]
  },
  {
    "comments": [
      "\nCalled when the panel should generate example use case / example code to use for this panel. Used in the panel opened by **derma_controls** console command.\n",
      "@name PanelHooks:GenerateExample",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/GenerateExample",
      "@param {Panel} this - no description",
      "@param {string} cls - The classname of the panel to generate example for. This will be the class name of your panel.",
      "@param {DPropertySheet} dpropertysheet - A @DPropertySheet type to add your example to. See examples below.",
      "@param {number} width - Width of the property sheet?",
      "@param {number} height - Width of the property sheet?",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "GenerateExample",
    "typings": [
      "(this: Panel, cls: string, dpropertysheet: DPropertySheet, width: number, height: number): void"
    ]
  },
  {
    "comments": [
      "\nFocuses the previous panel in the focus queue.\n",
      "@name Panel:FocusPrevious",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/FocusPrevious",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "FocusPrevious",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nFocuses the next panel in the focus queue.\n",
      "@name Panel:FocusNext",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/FocusNext",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "FocusNext",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nFinds a panel in its children(and sub children) with the given name.\n",
      "@name Panel:Find",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Find",
      "@param {Panel} this - no description",
      "@param {string} panelName - The name of the panel that should be found.",
      "@returns {Panel} - foundPanel"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Find",
    "typings": [
      "(this: Panel, panelName: string): Panel"
    ]
  },
  {
    "comments": [
      "\nCompletes a box selection. If the end point of the selection box is within the selection canvas, mouse capture is disabled for the panel object, and the selected state of each child object within the selection box is toggled.\n",
      "@name Panel:EndBoxSelection",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/EndBoxSelection",
      "@param {Panel} this - no description",
      "@returns {boolean} - Whether the end point of the selection box was within the selection canvas."
    ],
    "type": "class",
    "context": "Panel",
    "name": "EndBoxSelection",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nUsed to run commands within a @DHTML type window.\n",
      "@name Panel:Exec",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Exec",
      "@internal",
      "@param {Panel} this - no description",
      "@param {string} cmd - The command to be run.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Exec",
    "typings": [
      "(this: Panel, cmd: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled when this panel is dropped onto another panel.\nOnly works for panels derived from @DDragBase type.\n",
      "@name PanelHooks:DroppedOn",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/DroppedOn",
      "@param {Panel} this - no description",
      "@param {Panel} pnl - The panel we are dropped onto",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "DroppedOn",
    "typings": [
      "(this: Panel, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nMakes this panel droppable. This is used with @Panel:Receiver to create drag and drop events.\nCan be called multiple times with different names allowing to be dropped onto different receivers.\n",
      "@name Panel:Droppable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Droppable",
      "@param {Panel} this - no description",
      "@param {string} name - Name of your droppable panel",
      "@returns {table} - Blank table stored on the panel itself under pnl.m_DragSlot[ name ]. Is reset every time this function is called and does not appear to be used or exposed anywhere else."
    ],
    "type": "class",
    "context": "Panel",
    "name": "Droppable",
    "typings": [
      "(this: Panel, name: string): table"
    ]
  },
  {
    "comments": [
      "\nDraws a textured rectangle to fill the panel object this method is called on. The texture is set using @surface.SetTexture or @surface.SetMaterial. This should only be called within the object's @PanelHooks:Paint or @PanelHooks:PaintOver hooks, as a shortcut for @surface.DrawTexturedRect.\n",
      "@name Panel:DrawTexturedRect",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DrawTexturedRect",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DrawTexturedRect",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nUsed to draw the text in a @DTextEntry type within a derma skin. This should be called within the @SKIN:PaintTextEntry skin hook.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:DrawTextEntryText",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DrawTextEntryText",
      "@param {Panel} this - no description",
      "@param {table} textCol - The colour of the main text.",
      "@param {table} highlightCol - The colour of the selection highlight (when selecting text).",
      "@param {table} cursorCol - The colour of the text cursor (or caret).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DrawTextEntryText",
    "typings": [
      "(this: Panel, textCol: table, highlightCol: table, cursorCol: table): void"
    ]
  },
  {
    "comments": [
      "\nUsed to draw the magenta highlight colour of a panel object when it is selected. This should be called in the object's @PanelHooks:PaintOver hook. Once this is implemented, the highlight colour will be displayed only when the object is selectable and selected. This is achieved using @Panel:SetSelectable and @Panel:SetSelected respectively.\n",
      "@name Panel:DrawSelections",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DrawSelections",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DrawSelections",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nDraws a hollow rectangle the size of the panel object this method is called on, with a border width of 1 px. The border colour is set using @surface.SetDrawColor. This should only be called within the object's @PanelHooks:Paint or @PanelHooks:PaintOver hooks, as a shortcut for @surface.DrawOutlinedRect.\n",
      "@name Panel:DrawOutlinedRect",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DrawOutlinedRect",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DrawOutlinedRect",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nDraws a coloured rectangle to fill the panel object this method is called on. The colour is set using @surface.SetDrawColor. This should only be called within the object's @PanelHooks:Paint or @PanelHooks:PaintOver hooks, as a shortcut for @surface.DrawRect.\n",
      "@name Panel:DrawFilledRect",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DrawFilledRect",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DrawFilledRect",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled to inform the @dragndrop library that a mouse button has been depressed on a panel object.\n",
      "@name Panel:DragMouseRelease",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DragMouseRelease",
      "@param {Panel} this - no description",
      "@param {MOUSE} mouseCode - The code for the mouse button pressed, passed by, for example, @PanelHooks:OnMouseReleased. See the @MOUSE enum.",
      "@returns {boolean} - *true* if an object was being dragged, otherwise *false*."
    ],
    "type": "class",
    "context": "Panel",
    "name": "DragMouseRelease",
    "typings": [
      "(this: Panel, mouseCode: MOUSE): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled to draw the drop target when an object is being dragged across another. See @Panel:SetDropTarget.\n",
      "@name Panel:DrawDragHover",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DrawDragHover",
      "@internal",
      "@param {Panel} this - no description",
      "@param {number} x - The x coordinate of the top-left corner of the drop area.",
      "@param {number} y - The y coordinate of the top-left corner of the drop area.",
      "@param {number} width - The width of the drop area.",
      "@param {number} height - The height of the drop area.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DrawDragHover",
    "typings": [
      "(this: Panel, x: number, y: number, width: number, height: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled to inform the @dragndrop library that a mouse button is being held down on a panel object.\n",
      "@name Panel:DragMousePress",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DragMousePress",
      "@param {Panel} this - no description",
      "@param {MOUSE} mouseCode - The code for the mouse button pressed, passed by, for example, @PanelHooks:OnMousePressed. See the @MOUSE enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DragMousePress",
    "typings": [
      "(this: Panel, mouseCode: MOUSE): void"
    ]
  },
  {
    "comments": [
      "\nCalled to end a drag and hover action. This resets the panel's @PanelHooks:PaintOver method, and is primarily used by @dragndrop.StopDragging.\n",
      "@name Panel:DragHoverEnd",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DragHoverEnd",
      "@internal",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DragHoverEnd",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when an object is dragged and hovered over this panel for 0.1 seconds.\nThis is used by @DPropertySheet type and @DTree type, for example to open a tab or expand a node when an object is hovered over it.\n",
      "@name PanelHooks:DragHoverClick",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/DragHoverClick",
      "@param {Panel} this - no description",
      "@param {number} hoverTime - The time the object was hovered over this panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "DragHoverClick",
    "typings": [
      "(this: Panel, hoverTime: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled by @dragndrop.HoverThink to perform actions on an object that is dragged and hovered over another.\n",
      "@name Panel:DragHover",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DragHover",
      "@internal",
      "@param {Panel} this - no description",
      "@param {number} HoverTime - If this time is greater than 0.1, @PanelHooks:DragHoverClick is called, passing it as an argument.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DragHover",
    "typings": [
      "(this: Panel, HoverTime: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled by @Panel:DragMouseRelease when a user clicks one mouse button whilst dragging with another.\n",
      "@name Panel:DragClick",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DragClick",
      "@internal",
      "@param {Panel} this - no description",
      "@returns {boolean} - Always returns *true*."
    ],
    "type": "class",
    "context": "Panel",
    "name": "DragClick",
    "typings": [
      "(this: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nMakes the panel \"lock\" the screen until it is removed. It will silently fail if used while cursor is not visible. Call @Panel:MakePopup before calling this function.\n",
      "@name Panel:DoModal",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DoModal",
      "@bug #3457 You can still click in the world even if locked.",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DoModal",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the dock padding of the panel.\nThe dock padding is the extra space that will be left around the edge when child elements are docked inside this element.\n",
      "@name Panel:DockPadding",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DockPadding",
      "@param {Panel} this - no description",
      "@param {number} paddingLeft - The left padding to the parent.",
      "@param {number} paddingTop - The top padding to the parent.",
      "@param {number} paddingRight - The right padding to the parent.",
      "@param {number} paddingBottom - The bottom padding to the parent.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DockPadding",
    "typings": [
      "(this: Panel, paddingLeft: number, paddingTop: number, paddingRight: number, paddingBottom: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the dock margin of the panel.\nThe dock margin is the extra space that will be left around the edge when this element is docked inside its parent element.\n",
      "@name Panel:DockMargin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DockMargin",
      "@param {Panel} this - no description",
      "@param {number} marginLeft - The left margin to the parent.",
      "@param {number} marginTop - The top margin to the parent.",
      "@param {number} marginRight - The right margin to the parent.",
      "@param {number} marginBottom - The bottom margin to the parent.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DockMargin",
    "typings": [
      "(this: Panel, marginLeft: number, marginTop: number, marginRight: number, marginBottom: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the dock type of the panel.\n",
      "@name Panel:Dock",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Dock",
      "@note After using this function, if you want to get the correct panel's bounds (position, size), use @Panel:InvalidateParent (use **true** as argument if you need to update immediately)",
      "@param {Panel} this - no description",
      "@param {DOCK} dockType - Dock type using @DOCK enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Dock",
    "typings": [
      "(this: Panel, dockType: DOCK): void"
    ]
  },
  {
    "comments": [
      "\nReturns the distance between the centre of this panel object and a specified point (local to the parent panel).\n",
      "@name Panel:DistanceFrom",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DistanceFrom",
      "@param {Panel} this - no description",
      "@param {number} posX - The horizontal (x) position in pixels of the point to compare with. Local to the parent panel, or container.",
      "@param {number} posY - The vertical (y) position in pixels of the point to compare with. Local to the parent panel, or container.",
      "@returns {number} - The linear (straight-line) distance between the specified point and the centre of the panel object."
    ],
    "type": "class",
    "context": "Panel",
    "name": "DistanceFrom",
    "typings": [
      "(this: Panel, posX: number, posY: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the linear distance from the centre of this panel object and another.\n",
      "@name Panel:Distance",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Distance",
      "@param {Panel} this - no description",
      "@param {Panel} tgtPanel - The target object with which to compare position.",
      "@returns {number} - The linear (straight-line) distance between the centres of the two objects."
    ],
    "type": "class",
    "context": "Panel",
    "name": "Distance",
    "typings": [
      "(this: Panel, tgtPanel: Panel): number"
    ]
  },
  {
    "comments": [
      "\nResets the panel object's @Panel:SetPos method and removes its animation table (*Panel.LerpAnim*). This effectively undoes the changes made by @Panel:LerpPositions.\nIn order to use Lerp animation again, you must call @Panel:Stop before setting its *SetPosReal* property to 'nil'. See the example below.\n",
      "@name Panel:DisableLerp",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DisableLerp",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DisableLerp",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nDeletes a cookie value using the panel's cookie name ( @Panel:GetCookieName ) and the passed extension.\n",
      "@name Panel:DeleteCookie",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/DeleteCookie",
      "@param {Panel} this - no description",
      "@param {string} cookieName - The unique cookie name to delete.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "DeleteCookie",
    "typings": [
      "(this: Panel, cookieName: string): void"
    ]
  },
  {
    "comments": [
      "\nPerforms the \"CONTROL + X\" ( delete text and copy it to clipboard buffer ) action on selected text.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:CutSelected",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/CutSelected",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "CutSelected",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns the cursor position relative to the top left of the panel.\nThis is equivalent to calling @gui.MousePos and then @Panel:ScreenToLocal.\n",
      "@name Panel:CursorPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/CursorPos",
      "@warning This function uses a cached value for the screen position of the panel, computed at the end of the last VGUI Think/Layout pass.\nie. inaccurate results may be returned if the panel or any of its ancestors have been repositioned outside of @PanelHooks:Think or @PanelHooks:PerformLayout within the last frame.",
      "@param {Panel} this - no description",
      "@returns {number} - X coordinate of the cursor, relative to the top left of the panel.",
      "@returns {number} - Y coordinate of the cursor, relative to the top left of the panel.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "CursorPos",
    "typings": [
      "(this: Panel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nCopies the width of the panel.\n",
      "@name Panel:CopyWidth",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/CopyWidth",
      "@param {Panel} this - no description",
      "@param {Panel} base - Panel to copy the width from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "CopyWidth",
    "typings": [
      "(this: Panel, base: Panel): void"
    ]
  },
  {
    "comments": [
      "\nPerforms the \"CONTROL + C\" key combination effect ( Copy selection to clipboard ) on selected text.\n[Category:TextEntry](https://wiki.garrysmod.com/page/Category:TextEntry)\n",
      "@name Panel:CopySelected",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/CopySelected",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "CopySelected",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCopies the position of the panel.\n",
      "@name Panel:CopyPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/CopyPos",
      "@param {Panel} this - no description",
      "@param {Panel} base - Panel to position the width from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "CopyPos",
    "typings": [
      "(this: Panel, base: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCopies the height of the panel.\n",
      "@name Panel:CopyHeight",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/CopyHeight",
      "@param {Panel} this - no description",
      "@param {Panel} base - Panel to copy the height from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "CopyHeight",
    "typings": [
      "(this: Panel, base: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCopies position and size of the panel.\n",
      "@name Panel:CopyBounds",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/CopyBounds",
      "@param {Panel} this - no description",
      "@param {Panel} base - The panel to copy size and position from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "CopyBounds",
    "typings": [
      "(this: Panel, base: Panel): void"
    ]
  },
  {
    "comments": [
      "\nGets the size, position and dock state of the passed panel object, and applies it to this one.\n",
      "@name Panel:CopyBase",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/CopyBase",
      "@param {Panel} this - no description",
      "@param {Panel} srcPanel - The panel to copy the boundary and dock settings from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "CopyBase",
    "typings": [
      "(this: Panel, srcPanel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nA think hook for [panels](https://wiki.garrysmod.com/page/Panel) using ConVars as a value. Call it in the Think hook. Sets the panel's value should the convar change.\nThis function is best for: text inputs, read-only inputs, dropdown selects\nFor a number alternative, see [Panel.ConVarNumberThink](https://wiki.garrysmod.com/page/Panel/ConVarNumberThink).\n*Important*: Make sure your Panel has a SetValue function, else you may get errors.\n",
      "@name Panel:ConVarStringThink",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ConVarStringThink",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ConVarStringThink",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nUpdates a panel object's associated console variable. This must first be set up with @Derma_Install_Convar_Functions function, and have a ConVar set using @Panel:SetConVar.\n",
      "@name Panel:ConVarChanged",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ConVarChanged",
      "@param {Panel} this - no description",
      "@param {string} newValue - The new value to set the associated console variable to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ConVarChanged",
    "typings": [
      "(this: Panel, newValue: string): void"
    ]
  },
  {
    "comments": [
      "\nSends an action command signal to the panel. The response is handled by @PanelHooks:ActionSignal.\n",
      "@name Panel:Command",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Command",
      "@param {Panel} this - no description",
      "@param {string} command - The command to send to the panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Command",
    "typings": [
      "(this: Panel, command: string): void"
    ]
  },
  {
    "comments": [
      "\nFades panels color to specified one. It won't work unless panel has SetColor function.\n",
      "@name Panel:ColorTo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ColorTo",
      "@param {Panel} this - no description",
      "@param {Color} color - The color to fade to",
      "@param {number} length - Length of the animation",
      "@param {number} delay - Delay before start fading",
      "@param {function} callback - Function to execute when finished",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ColorTo",
    "typings": [
      "(this: Panel, color: Color, length: number, delay: number, callback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nA think hook for @Panel types using ConVars as a value. Call it in the Think hook. Sets the panel's value should the convar change.\nThis function is best for: checkboxes, sliders, number wangs\nFor a string alternative, see [Panel.ConVarStringThink](https://wiki.garrysmod.com/page/Panel/ConVarStringThink).\n*Important*: Make sure your Panel has a SetValue function, else you may get errors.\n",
      "@name Panel:ConVarNumberThink",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ConVarNumberThink",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ConVarNumberThink",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nMarks all of the panel's children for deletion.\n",
      "@name Panel:Clear",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Clear",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Clear",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns the width and height of the space between the position of the panel (upper-left corner) and the max bound of the children panels (farthest reaching lower-right corner).\n",
      "@name Panel:ChildrenSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ChildrenSize",
      "@param {Panel} this - no description",
      "@returns {number} - The children size width.",
      "@returns {number} - The children size height.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ChildrenSize",
    "typings": [
      "(this: Panel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of children of the of panel.\n",
      "@name Panel:ChildCount",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ChildCount",
      "@param {Panel} this - no description",
      "@returns {number} - The amount of children the panel has."
    ],
    "type": "class",
    "context": "Panel",
    "name": "ChildCount",
    "typings": [
      "(this: Panel): number"
    ]
  },
  {
    "comments": [
      "\nCenters the panel vertically with specified fraction.\n",
      "@name Panel:CenterVertical",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/CenterVertical",
      "@param {Panel} this - no description",
      "@param {number} fraction - The center fraction.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "CenterVertical",
    "typings": [
      "(this: Panel, fraction?: number): void"
    ]
  },
  {
    "comments": [
      "\nCenters the panel horizontally with specified fraction.\n",
      "@name Panel:CenterHorizontal",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/CenterHorizontal",
      "@param {Panel} this - no description",
      "@param {number} fraction - The center fraction.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "CenterHorizontal",
    "typings": [
      "(this: Panel, fraction?: number): void"
    ]
  },
  {
    "comments": [
      "\nCenters the panel on its parent.\n",
      "@name Panel:Center",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Center",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Center",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the panel should apply its scheme(style).\n",
      "@name PanelHooks:ApplySchemeSettings",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/ApplySchemeSettings",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "ApplySchemeSettings",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @Panel:LoadGWENFile and @Panel:LoadGWENString to apply a GWEN controls table to a panel object.\nYou can do this manually using @file.Read and @util.JSONToTable to import and create a GWEN table structure from a *.gwen* file. This method can then be called, passing the GWEN table's *Controls* member.\n",
      "@name Panel:ApplyGWEN",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/ApplyGWEN",
      "@param {Panel} this - no description",
      "@param {table} GWENTable - The GWEN controls table to apply to the panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "ApplyGWEN",
    "typings": [
      "(this: Panel, GWENTable: table): void"
    ]
  },
  {
    "comments": [
      "\nAppends text to a @RichText type element. This does not automatically add a new line.\n[Category:RichText](https://wiki.garrysmod.com/page/Category:RichText)\n",
      "@name Panel:AppendText",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/AppendText",
      "@param {Panel} this - no description",
      "@param {string} txt - The text to append (add on).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "AppendText",
    "typings": [
      "(this: Panel, txt: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the @SysTime function value when all animations for this panel object will end.\n",
      "@name Panel:AnimTail",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/AnimTail",
      "@param {Panel} this - no description",
      "@returns {number} - The system time value when all animations will end for this panel."
    ],
    "type": "class",
    "context": "Panel",
    "name": "AnimTail",
    "typings": [
      "(this: Panel): number"
    ]
  },
  {
    "comments": [
      "\nPerforms the per-frame operations required for panel animations.\nThis is called every frame by @PanelHooks:AnimationThink.\n",
      "@name Panel:AnimationThinkInternal",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/AnimationThinkInternal",
      "@internal",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "AnimationThinkInternal",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled every frame unless @Panel:IsVisible is set to false. Similar to @PanelHooks:Think, but can be disabled by @Panel:SetAnimationEnabled as explained below.\nIf you are overriding this, you must call @Panel:AnimationThinkInternal every frame, else animations will cease to work.\nIf you want to \"disable\" this hook with @Panel:SetAnimationEnabled, you must call it after defining this hook. Once disabled, a custom hook **will not** be re-enabled by @Panel:SetAnimationEnabled again - the hook will have to be re-defined.\n",
      "@name PanelHooks:AnimationThink",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/AnimationThink",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "AnimationThink",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nUses animation to transition the current alpha value of a panel to a new alpha, over a set period of time and after a specified delay.\n",
      "@name Panel:AlphaTo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/AlphaTo",
      "@param {Panel} this - no description",
      "@param {number} alpha - The alpha value (0-255) to approach.",
      "@param {number} duration - The time in seconds it should take to reach the alpha.",
      "@param {number} delay - The delay before the animation starts.",
      "@param {function} callback - The function to be called once the animation finishes. Arguments are:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "AlphaTo",
    "typings": [
      "(this: Panel, alpha: number, duration: number, delay?: number, callback: PanelAlphaToCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type PanelAlphaToCallback",
          "@param {void} this - no description",
          "@param {AnimationData} animData - The @AnimationData structure that was used.",
          "@param {Panel} pnl - The panel object whose alpha was changed."
        ],
        "type": "type",
        "name": "PanelAlphaToCallback",
        "typing": "(this: void, animData: AnimationData, pnl: Panel) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nAligns the panel on the top of its parent with the specified offset.\n",
      "@name Panel:AlignTop",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/AlignTop",
      "@param {Panel} this - no description",
      "@param {number} offset - The align offset.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "AlignTop",
    "typings": [
      "(this: Panel, offset?: number): void"
    ]
  },
  {
    "comments": [
      "\nAligns the panel on the right of its parent with the specified offset.\n",
      "@name Panel:AlignRight",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/AlignRight",
      "@param {Panel} this - no description",
      "@param {number} offset - The align offset.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "AlignRight",
    "typings": [
      "(this: Panel, offset?: number): void"
    ]
  },
  {
    "comments": [
      "\nAligns the panel on the left of its parent with the specified offset.\n",
      "@name Panel:AlignLeft",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/AlignLeft",
      "@param {Panel} this - no description",
      "@param {number} offset - The align offset.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "AlignLeft",
    "typings": [
      "(this: Panel, offset?: number): void"
    ]
  },
  {
    "comments": [
      "\nAligns the panel on the bottom of its parent with the specified offset.\n",
      "@name Panel:AlignBottom",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/AlignBottom",
      "@param {Panel} this - no description",
      "@param {number} offset - The align offset.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "AlignBottom",
    "typings": [
      "(this: Panel, offset?: number): void"
    ]
  },
  {
    "comments": [
      "\nThis function does nothing.\n",
      "@name Panel:AddText",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/AddText",
      "@param {Panel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Panel",
    "name": "AddText",
    "typings": [
      "(this: Panel): void"
    ]
  },
  {
    "comments": [
      "\nAdds the specified object to the panel.\n",
      "@name Panel:Add",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Panel/Add",
      "@param {Panel} this - no description",
      "@param {string | Panel} object - The panel to be added (parented). Can also be:",
      "@returns {Panel} - New panel"
    ],
    "type": "class",
    "context": "Panel",
    "name": "Add",
    "typings": [
      "(this: Panel, object: string | Panel): Panel"
    ]
  },
  {
    "comments": [
      "\nMove the bot along the path.\n",
      "@name PathFollower:Update",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/Update",
      "@param {PathFollower} this - no description",
      "@param {NextBot} bot - The bot to update along the path",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "Update",
    "typings": [
      "(this: PathFollower, bot: NextBot): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a panel receives a command signal from one of its children.\nThis hook is called when using @Panel:Command, when clicking a @Button type with @Panel:SetCommand set, and when clicking text within a @RichText type panel that is marked as click-able.\n",
      "@name PanelHooks:ActionSignal",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/PANEL/ActionSignal",
      "@param {Panel} this - no description",
      "@param {string} signalName - The name of the signal, usually the sender of the signal or the command name.",
      "@param {string} signalValue - The value of the signal, usually a command argument.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PanelHooks",
    "name": "ActionSignal",
    "typings": [
      "(this: Panel, signalName: string, signalValue: string): void"
    ]
  },
  {
    "comments": [
      "\nSets minimum range movement goal must be along path\n",
      "@name PathFollower:SetMinLookAheadDistance",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/SetMinLookAheadDistance",
      "@param {PathFollower} this - no description",
      "@param {number} mindist - The minimum look ahead distance",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "SetMinLookAheadDistance",
    "typings": [
      "(this: PathFollower, mindist: number): void"
    ]
  },
  {
    "comments": [
      "\nHow close we can get to the goal to call it done\n",
      "@name PathFollower:SetGoalTolerance",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/SetGoalTolerance",
      "@param {PathFollower} this - no description",
      "@param {number} distance - The distance we're setting it to",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "SetGoalTolerance",
    "typings": [
      "(this: PathFollower, distance: number): void"
    ]
  },
  {
    "comments": [
      "\nMoves the cursor to the end of the path\n",
      "@name PathFollower:MoveCursorToStart",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/MoveCursorToStart",
      "@param {PathFollower} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "MoveCursorToStart",
    "typings": [
      "(this: PathFollower): void"
    ]
  },
  {
    "comments": [
      "\nResets the age which is retrieved by @PathFollower:GetAge to 0.\n",
      "@name PathFollower:ResetAge",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/ResetAge",
      "@param {PathFollower} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "ResetAge",
    "typings": [
      "(this: PathFollower): void"
    ]
  },
  {
    "comments": [
      "\nMoves the cursor to the end of the path\n",
      "@name PathFollower:MoveCursorToEnd",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/MoveCursorToEnd",
      "@param {PathFollower} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "MoveCursorToEnd",
    "typings": [
      "(this: PathFollower): void"
    ]
  },
  {
    "comments": [
      "\nMoves the cursor of the path to the closest position compared to given vector.\n",
      "@name PathFollower:MoveCursorToClosestPosition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/MoveCursorToClosestPosition",
      "@param {PathFollower} this - no description",
      "@param {Vector} pos - no description",
      "@param {number} type - Seek type\n0 = SEEK_ENTIRE_PATH - Search the entire path length\n1 = SEEK_AHEAD - Search from current cursor position forward toward end of path\n2 = SEEK_BEHIND - Search from current cursor position backward toward path start",
      "@param {number} alongLimit - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "MoveCursorToClosestPosition",
    "typings": [
      "(this: PathFollower, pos: Vector, type?: number, alongLimit?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the cursor position to given distance.\nFor relative distance, see @PathFollower:MoveCursor.\n",
      "@name PathFollower:MoveCursorTo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/MoveCursorTo",
      "@param {PathFollower} this - no description",
      "@param {number} distance - The distance to move the cursor (in world units)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "MoveCursorTo",
    "typings": [
      "(this: PathFollower, distance: number): void"
    ]
  },
  {
    "comments": [
      "\nMoves the cursor by give distance.\nFor a function that sets the distance, see @PathFollower:MoveCursorTo.\n",
      "@name PathFollower:MoveCursor",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/MoveCursor",
      "@param {PathFollower} this - no description",
      "@param {number} distance - The distance to move the cursor (in relative world units)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "MoveCursor",
    "typings": [
      "(this: PathFollower, distance: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the last segment of the path.\n",
      "@name PathFollower:LastSegment",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/LastSegment",
      "@param {PathFollower} this - no description",
      "@returns {PathSegment} - A table with @PathSegment structure."
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "LastSegment",
    "typings": [
      "(this: PathFollower): PathSegment"
    ]
  },
  {
    "comments": [
      "\nReturns true if the path is valid\n",
      "@name PathFollower:IsValid",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/IsValid",
      "@param {PathFollower} this - no description",
      "@returns {boolean} - Wether the path is valid or not."
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "IsValid",
    "typings": [
      "(this: PathFollower): boolean"
    ]
  },
  {
    "comments": [
      "\nInvalidates the current path\n",
      "@name PathFollower:Invalidate",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/Invalidate",
      "@param {PathFollower} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "Invalidate",
    "typings": [
      "(this: PathFollower): void"
    ]
  },
  {
    "comments": [
      "\nReturns the path start position\n",
      "@name PathFollower:GetStart",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetStart",
      "@param {PathFollower} this - no description",
      "@returns {Vector} - The start position"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetStart",
    "typings": [
      "(this: PathFollower): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the vector position of distance along path\n",
      "@name PathFollower:GetPositionOnPath",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetPositionOnPath",
      "@param {PathFollower} this - no description",
      "@param {number} distance - The distance along the path to query",
      "@returns {Vector} - The position"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetPositionOnPath",
    "typings": [
      "(this: PathFollower, distance: number): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the minimum range movement goal must be along path.\n",
      "@name PathFollower:GetMinLookAheadDistance",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetMinLookAheadDistance",
      "@param {PathFollower} this - no description",
      "@returns {number} - The minimum look ahead distance"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetMinLookAheadDistance",
    "typings": [
      "(this: PathFollower): number"
    ]
  },
  {
    "comments": [
      "\nReturns the total length of the path\n",
      "@name PathFollower:GetLength",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetLength",
      "@param {PathFollower} this - no description",
      "@returns {number} - The length of the path"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetLength",
    "typings": [
      "(this: PathFollower): number"
    ]
  },
  {
    "comments": [
      "@name PathFollower:GetHindrance",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetHindrance",
      "@param {PathFollower} this - no description",
      "@returns {Entity} - no description"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetHindrance",
    "typings": [
      "(this: PathFollower): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns how close we can get to the goal to call it done.\n",
      "@name PathFollower:GetGoalTolerance",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetGoalTolerance",
      "@param {PathFollower} this - no description",
      "@returns {number} - The distance we're setting it to"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetGoalTolerance",
    "typings": [
      "(this: PathFollower): number"
    ]
  },
  {
    "comments": [
      "\nReturns the path end position\n",
      "@name PathFollower:GetEnd",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetEnd",
      "@param {PathFollower} this - no description",
      "@returns {Vector} - The end position"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetEnd",
    "typings": [
      "(this: PathFollower): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the current progress along the path\n",
      "@name PathFollower:GetCursorPosition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetCursorPosition",
      "@param {PathFollower} this - no description",
      "@returns {number} - The current progress"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetCursorPosition",
    "typings": [
      "(this: PathFollower): number"
    ]
  },
  {
    "comments": [
      "\nReturns the cursor data\n",
      "@name PathFollower:GetCursorData",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetCursorData",
      "@param {PathFollower} this - no description",
      "@returns {IPathFollowerGetCursorDataReturn} - A table with 3 keys:"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetCursorData",
    "typings": [
      "(this: PathFollower): IPathFollowerGetCursorDataReturn"
    ],
    "types": [
      {
        "comments": [
          "curvature - {number}: no description"
        ],
        "type": "interface",
        "name": "curvature",
        "typing": "number",
        "context": "IPathFollowerGetCursorDataReturn"
      },
      {
        "comments": [
          "forward - {Vector}: no description"
        ],
        "type": "interface",
        "name": "forward",
        "typing": "Vector",
        "context": "IPathFollowerGetCursorDataReturn"
      },
      {
        "comments": [
          "pos - {Vector}: no description"
        ],
        "type": "interface",
        "name": "pos",
        "typing": "Vector",
        "context": "IPathFollowerGetCursorDataReturn"
      }
    ]
  },
  {
    "comments": [
      "\nReturns the current goal data. Can return nil if the current goal is invalid, for example immediately after @PathFollower:Update.\n",
      "@name PathFollower:GetCurrentGoal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetCurrentGoal",
      "@param {PathFollower} this - no description",
      "@returns {PathSegment} - A table with @PathSegment structure."
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetCurrentGoal",
    "typings": [
      "(this: PathFollower): PathSegment"
    ]
  },
  {
    "comments": [
      "\nThe closest position along the path to a position\n",
      "@name PathFollower:GetClosestPosition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetClosestPosition",
      "@param {PathFollower} this - no description",
      "@param {Vector} position - The point we're querying for",
      "@returns {Vector} - The closest position on the path"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetClosestPosition",
    "typings": [
      "(this: PathFollower, position: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the age since the path was built\n",
      "@name PathFollower:GetAge",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetAge",
      "@param {PathFollower} this - no description",
      "@returns {number} - Path age"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetAge",
    "typings": [
      "(this: PathFollower): number"
    ]
  },
  {
    "comments": [
      "\nReturns the first segment of the path.\n",
      "@name PathFollower:FirstSegment",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/FirstSegment",
      "@param {PathFollower} this - no description",
      "@returns {PathSegment} - A table with @PathSegment structure."
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "FirstSegment",
    "typings": [
      "(this: PathFollower): PathSegment"
    ]
  },
  {
    "comments": [
      "\nDraws the path. This is meant for debugging - and uses debug overlay.\n",
      "@name PathFollower:Draw",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/Draw",
      "@param {PathFollower} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "Draw",
    "typings": [
      "(this: PathFollower): void"
    ]
  },
  {
    "comments": [
      "\nCompute shortest path from bot to 'goal' via A* algorithm.\n",
      "@name PathFollower:Compute",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/Compute",
      "@param {PathFollower} this - no description",
      "@param {NextBot} from - The nextbot we're generating for",
      "@param {Vector} to - To point",
      "@param {function} generator - A funtion that allows you to alter the path generation. See example below for the default function.",
      "@returns {boolean} - * If returns true, path was found to the goal position.\n* If returns false, path may either be invalid (use IsValid() to check), or valid but doesn't reach all the way to the goal."
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "Compute",
    "typings": [
      "(this: PathFollower, from: NextBot, to: Vector, generator?: UnknownFunc): boolean"
    ]
  },
  {
    "comments": [
      "\nIf you created your path with type \"Chase\" this functions should be used in place of @PathFollower:Update to cause the bot to chase the specified entity.\n",
      "@name PathFollower:Chase",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/Chase",
      "@param {PathFollower} this - no description",
      "@param {NextBot} bot - The bot to update along the path",
      "@param {Entity} ent - The entity we want to chase",
      "@returns {void}"
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "Chase",
    "typings": [
      "(this: PathFollower, bot: NextBot, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets a metatable for module with its __index field referring to the global environment, so that this module inherits values from the global environment. To be used as an option to @module function.\n",
      "@name package.seeall",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/package/seeall",
      "@param {void} this - no description",
      "@param {table} module - The module table to be given a metatable",
      "@returns {void}"
    ],
    "type": "func",
    "context": "package",
    "name": "seeall",
    "typings": [
      "(this: void, module: table): void"
    ]
  },
  {
    "comments": [
      "\nReturns the system time in seconds past the unix epoch. If a table is supplied, the function attempts to build a system time with the specified table members.\n",
      "@name os.time",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/os/time",
      "@param {void} this - no description",
      "@param {DateData} dateData - Table to generate the time from. This table's data is interpreted as being in the local timezone. See @DateData structure",
      "@returns {number} - Seconds passed since Unix epoch"
    ],
    "type": "func",
    "context": "os",
    "name": "time",
    "typings": [
      "(this: void, dateData?: DateData): number"
    ]
  },
  {
    "comments": [
      "\nSubtracts the second of the first value and rounds the result.\n",
      "@name os.difftime",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/os/difftime",
      "@param {void} this - no description",
      "@param {number} timeA - The first value.",
      "@param {number} timeB - The value to subtract.",
      "@returns {number} - diffTime"
    ],
    "type": "func",
    "context": "os",
    "name": "difftime",
    "typings": [
      "(this: void, timeA: number, timeB: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns all of the segments of the given path.\n",
      "@name PathFollower:GetAllSegments",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/PathFollower/GetAllSegments",
      "@param {PathFollower} this - no description",
      "@returns {table[]} - A table of tables with @PathSegment structure."
    ],
    "type": "class",
    "context": "PathFollower",
    "name": "GetAllSegments",
    "typings": [
      "(this: PathFollower): table[]"
    ]
  },
  {
    "comments": [
      "\nReturns the date/time as a formatted string or in a table.\n",
      "@name os.date",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/os/date",
      "@note This will be a @DateData structure if the first argument equals to '*t' or '!*t'",
      "@bug #329 **Not all flags are available on all operating systems** and the result of using an invalid flag is undefined. This currently crashes the game on Windows. Most or all flags are available on OS X and Linux but considerably fewer are available on Windows. See http://msdn.microsoft.com/en-us/library/fe06s4ak.aspx for a list of available flags on Windows. Note that the **#** flags also crashes the game on Windows.",
      "@param {void} this - no description",
      "@param {string} format - The format string.\nIf this is equal to '*t' or '!*t' then this function will return a @DateData structure, otherwise it will return a string.\nIf this starts with an '!', the returned data will use the UTC timezone rather than the local timezone.\nSee http://www.mkssoftware.com/docs/man3/strftime.3.asp for available format flags.",
      "@param {number} time - Time to use for the format.",
      "@returns {string} - Formatted date"
    ],
    "type": "func",
    "context": "os",
    "name": "date",
    "typings": [
      "(this: void, format: string, time: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the approximate cpu time the application ran.\n",
      "@name os.clock",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/os/clock",
      "@note This function has different precision on Linux (1/100).",
      "@param {void} this - no description",
      "@returns {number} - runtime"
    ],
    "type": "func",
    "context": "os",
    "name": "clock",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nEither runs @numpad.Activate or @numpad.Deactivate depending on the key's current state\n",
      "@name numpad.Toggle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/numpad/Toggle",
      "@param {void} this - no description",
      "@param {Player} ply - The player whose numpad should be simulated",
      "@param {KEY} key - The key to press, corresponding to @KEY enum",
      "@returns {void}"
    ],
    "type": "func",
    "context": "numpad",
    "name": "Toggle",
    "typings": [
      "(this: void, ply: Player, key: KEY): void"
    ]
  },
  {
    "comments": [
      "\nRemoves a function added by either @numpad.OnUp or @numpad.OnDown\n",
      "@name numpad.Remove",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/numpad/Remove",
      "@param {void} this - no description",
      "@param {number} ID - The impulse ID returned by @numpad.OnUp or @numpad.OnDown",
      "@returns {void}"
    ],
    "type": "func",
    "context": "numpad",
    "name": "Remove",
    "typings": [
      "(this: void, ID: number): void"
    ]
  },
  {
    "comments": [
      "\nRegisters a numpad library action for use with @numpad.OnDown and @numpad.OnUp\n",
      "@name numpad.Register",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/numpad/Register",
      "@param {void} this - no description",
      "@param {string} id - The unique id of your action.",
      "@param {function} func - The function to be executed.\nArguments are:\nReturning **false** in this function will remove the listener which triggered this function (example: return false if one of your varargs is an entity which is no longer valid)",
      "@returns {void}"
    ],
    "type": "func",
    "context": "numpad",
    "name": "Register",
    "typings": [
      "(this: void, id: string, func: numpadRegisterFunc): void"
    ],
    "types": [
      {
        "comments": [
          "@type numpadRegisterFunc",
          "@param {void} this - no description",
          "@param {Player} ply - The player who pressed the button",
          "@param {any[]} ...args - The 4th and all subsequent arguments passed from @numpad.OnDown and/or @numpad.OnUp"
        ],
        "type": "type",
        "name": "numpadRegisterFunc",
        "typing": "(this: void, ply: Player, ...args: any[]) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nCalls a function registered with @numpad.Register when a player releases specified key.\nSee for key pressed action: @numpad.OnDown\n",
      "@name numpad.OnUp",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/numpad/OnUp",
      "@param {void} this - no description",
      "@param {Player} ply - The player whose numpad should be watched",
      "@param {KEY} key - The key, corresponding to @KEY enum",
      "@param {string} name - The name of the function to run, corresponding with the one used in @numpad.Register",
      "@param {any[]} ...args - Arguments to pass to the function passed to @numpad.Register.",
      "@returns {number} - The impulse ID"
    ],
    "type": "func",
    "context": "numpad",
    "name": "OnUp",
    "typings": [
      "(this: void, ply: Player, key: KEY, name: string, ...args: any[]): number"
    ]
  },
  {
    "comments": [
      "\nCalls a function registered with @numpad.Register when a player presses specified key.\nSee for key released action: @numpad.OnUp\n",
      "@name numpad.OnDown",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/numpad/OnDown",
      "@param {void} this - no description",
      "@param {Player} ply - The player whose numpad should be watched",
      "@param {KEY} key - The key, corresponding to @KEY enum",
      "@param {string} name - The name of the function to run, corresponding with the one used in @numpad.Register",
      "@param {any[]} ...args - Arguments to pass to the function passed to @numpad.Register.",
      "@returns {number} - The impulse ID"
    ],
    "type": "func",
    "context": "numpad",
    "name": "OnDown",
    "typings": [
      "(this: void, ply: Player, key: KEY, name: string, ...args: any[]): number"
    ]
  },
  {
    "comments": [
      "\nReturns true during a function added with @ numpad.Register when the third argument to @numpad.Activate is true.\nThis is caused when a numpad function is triggered by a button SENT being used.\n",
      "@name numpad.FromButton",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/numpad/FromButton",
      "@param {void} this - no description",
      "@returns {boolean} - wasButton"
    ],
    "type": "func",
    "context": "numpad",
    "name": "FromButton",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nDeactivates numpad key owned by the player\n",
      "@name numpad.Deactivate",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/numpad/Deactivate",
      "@param {void} this - no description",
      "@param {Player} ply - The player whose numpad should be simulated",
      "@param {KEY} key - The key to press, corresponding to @KEY enum",
      "@param {boolean} isButton - Should this keypress pretend to be a from a gmod_button? (causes @numpad.FromButton to return true)",
      "@returns {void}"
    ],
    "type": "func",
    "context": "numpad",
    "name": "Deactivate",
    "typings": [
      "(this: void, ply: Player, key: KEY, isButton: boolean): void"
    ]
  },
  {
    "comments": [
      "\nActivates numpad key owned by the player\n",
      "@name numpad.Activate",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/numpad/Activate",
      "@param {void} this - no description",
      "@param {Player} ply - The player whose numpad should be simulated",
      "@param {KEY} key - The key to press, see @KEY enum",
      "@param {boolean} isButton - Should this keypress pretend to be a from a gmod_button? (causes @numpad.FromButton to return true)",
      "@returns {void}"
    ],
    "type": "func",
    "context": "numpad",
    "name": "Activate",
    "typings": [
      "(this: void, ply: Player, key: KEY, isButton: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUndoes the other Use*Behavior functions.\nOnly usable on \"ai\" base entities.\n",
      "@name NPC:UseNoBehavior",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/UseNoBehavior",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "UseNoBehavior",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "@name NPC:UseLeadBehavior",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/UseLeadBehavior",
      "@param {NPC} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "UseLeadBehavior",
    "typings": [
      "(this: NPC): boolean"
    ]
  },
  {
    "comments": [
      "@name NPC:UseFuncTankBehavior",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/UseFuncTankBehavior",
      "@param {NPC} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "UseFuncTankBehavior",
    "typings": [
      "(this: NPC): boolean"
    ]
  },
  {
    "comments": [
      "\nOnly usable on \"ai\" base entities.\n",
      "@name NPC:UseFollowBehavior",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/UseFollowBehavior",
      "@param {NPC} this - no description",
      "@returns {boolean} - If we succeeded setting the behavior."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "UseFollowBehavior",
    "typings": [
      "(this: NPC): boolean"
    ]
  },
  {
    "comments": [
      "@name NPC:UseAssaultBehavior",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/UseAssaultBehavior",
      "@param {NPC} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "UseAssaultBehavior",
    "typings": [
      "(this: NPC): boolean"
    ]
  },
  {
    "comments": [
      "\nOnly usable on \"ai\" base entities.\n",
      "@name NPC:UseActBusyBehavior",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/UseActBusyBehavior",
      "@param {NPC} this - no description",
      "@returns {boolean} - If we succeeded setting the behavior."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "UseActBusyBehavior",
    "typings": [
      "(this: NPC): boolean"
    ]
  },
  {
    "comments": [
      "\nForce the NPC to update information on the supplied enemy, as if it had line of sight to it.\n",
      "@name NPC:UpdateEnemyMemory",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/UpdateEnemyMemory",
      "@param {NPC} this - no description",
      "@param {Entity} enemy - The enemy to update.",
      "@param {Vector} pos - The last known position of the enemy.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "UpdateEnemyMemory",
    "typings": [
      "(this: NPC, enemy: Entity, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nMarks the current NPC task as failed.\nThis is meant to be used alongside @NPC:TaskComplete to complete or fail custom Lua defined tasks. (@Schedule:AddTask)\n",
      "@name NPC:TaskFail",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/TaskFail",
      "@param {NPC} this - no description",
      "@param {string} task - A string most likely defined as a Source Task, for more information on Tasks go to https://developer.valvesoftware.com/wiki/Task",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "TaskFail",
    "typings": [
      "(this: NPC, task: string): void"
    ]
  },
  {
    "comments": [
      "\nMarks the current NPC task as completed.\nThis is meant to be used alongside @NPC:TaskFail to complete or fail custom Lua defined tasks. (@Schedule:AddTask)\n",
      "@name NPC:TaskComplete",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/TaskComplete",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "TaskComplete",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nCancels @NPC:MoveOrder basically.\nOnly works on Citizens (npc_citizen) and is a part of the Half-Life 2 squad system.\nThe NPC **must** be in the player's squad for this to work.\n",
      "@name NPC:TargetOrder",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/TargetOrder",
      "@param {NPC} this - no description",
      "@param {Entity} target - Must be a player, does nothing otherwise.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "TargetOrder",
    "typings": [
      "(this: NPC, target: Entity): void"
    ]
  },
  {
    "comments": [
      "\nResets the NPC's movement animation and velocity. Does not actually stop the NPC from moving.\n",
      "@name NPC:StopMoving",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/StopMoving",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "StopMoving",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nForces the NPC to start an engine task, this has different results for every NPC.\n",
      "@name NPC:StartEngineTask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/StartEngineTask",
      "@param {NPC} this - no description",
      "@param {number} task - The id of the task to start, see [ai_task.h](https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/mp/src/game/server/ai_task.h#L89-L502)",
      "@param {number} taskData - The task data as a float, not all tasks make use of it.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "StartEngineTask",
    "typings": [
      "(this: NPC, task: number, taskData: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the NPC's target. This is used in some engine schedules.\n",
      "@name NPC:SetTarget",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetTarget",
      "@param {NPC} this - no description",
      "@param {Entity} entity - The target of the NPC.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetTarget",
    "typings": [
      "(this: NPC, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the NPC's current schedule.\n",
      "@name NPC:SetSchedule",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetSchedule",
      "@param {NPC} this - no description",
      "@param {SCHED} schedule - The NPC schedule, see @SCHED enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetSchedule",
    "typings": [
      "(this: NPC, schedule: SCHED): void"
    ]
  },
  {
    "comments": [
      "\nSets the state the NPC is in to help it decide on a ideal schedule.\n",
      "@name NPC:SetNPCState",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetNPCState",
      "@param {NPC} this - no description",
      "@param {NPC_STATE} state - New NPC state, see @NPC_STATE enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetNPCState",
    "typings": [
      "(this: NPC, state: NPC_STATE): void"
    ]
  },
  {
    "comments": [
      "\nSets the sequence the NPC navigation path uses for speed calculation. Doesn't seem to have any visible effect on NPC movement.\n",
      "@name NPC:SetMovementSequence",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetMovementSequence",
      "@param {NPC} this - no description",
      "@param {number} sequenceId - The movement sequence index",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetMovementSequence",
    "typings": [
      "(this: NPC, sequenceId: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the activity the NPC uses when it moves.\n",
      "@name NPC:SetMovementActivity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetMovementActivity",
      "@param {NPC} this - no description",
      "@param {ACT} activity - The movement activity, see @ACT enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetMovementActivity",
    "typings": [
      "(this: NPC, activity: ACT): void"
    ]
  },
  {
    "comments": [
      "\nSets how how long to try rebuilding path before failing task.\n",
      "@name NPC:SetMaxRouteRebuildTime",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetMaxRouteRebuildTime",
      "@param {NPC} this - no description",
      "@param {number} time - How long to try rebuilding path before failing task",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetMaxRouteRebuildTime",
    "typings": [
      "(this: NPC, time: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the last registered or memorized position for an npc. When using scheduling, the NPC will focus on navigating to the last position via nodes.\n",
      "@name NPC:SetLastPosition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetLastPosition",
      "@note The navigation requires ground nodes to function properly, otherwise the NPC could only navigate in a small area. (https://developer.valvesoftware.com/wiki/Info_node)",
      "@param {NPC} this - no description",
      "@param {Vector} Position - Where the NPC's last position will be set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetLastPosition",
    "typings": [
      "(this: NPC, Position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nUpdates the NPC's hull and physics hull in order to match its model scale. @EntityFuncs:SetModelScale seems to take care of this regardless.\n",
      "@name NPC:SetHullSizeNormal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetHullSizeNormal",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetHullSizeNormal",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nSets the hull type for the NPC.\n",
      "@name NPC:SetHullType",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetHullType",
      "@param {NPC} this - no description",
      "@param {HULL} hullType - Hull type. See @HULL enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetHullType",
    "typings": [
      "(this: NPC, hullType: HULL): void"
    ]
  },
  {
    "comments": [
      "\nSets the NPC's .vcd expression. Similar to @EntityFuncs:PlayScene except the scene is looped until it's interrupted by default NPC behavior or @NPC:ClearExpression.\n",
      "@name NPC:SetExpression",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetExpression",
      "@param {NPC} this - no description",
      "@param {string} expression - The expression filepath.",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetExpression",
    "typings": [
      "(this: NPC, expression: string): number"
    ]
  },
  {
    "comments": [
      "\nSets the target for an NPC.\n",
      "@name NPC:SetEnemy",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetEnemy",
      "@param {NPC} this - no description",
      "@param {Entity} enemy - The enemy that the NPC should target",
      "@param {boolean} newenemy - Calls @NPC:SetCondition(COND_NEW_ENEMY) if the new enemy is valid and not equal to the last enemy.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetEnemy",
    "typings": [
      "(this: NPC, enemy: Entity, newenemy?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the weapon proficiency of an NPC (how skilled an NPC is with its current weapon).\n",
      "@name NPC:SetCurrentWeaponProficiency",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetCurrentWeaponProficiency",
      "@param {NPC} this - no description",
      "@param {WEAPON_PROFICIENCY} proficiency - The proficiency for the NPC's current weapon. See @WEAPON_PROFICIENCY enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetCurrentWeaponProficiency",
    "typings": [
      "(this: NPC, proficiency: WEAPON_PROFICIENCY): void"
    ]
  },
  {
    "comments": [
      "\nSets an NPC condition.\n",
      "@name NPC:SetCondition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetCondition",
      "@param {NPC} this - no description",
      "@param {COND} condition - The condition index, see @COND enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetCondition",
    "typings": [
      "(this: NPC, condition: COND): void"
    ]
  },
  {
    "comments": [
      "@name NPC:SetArrivalSpeed",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetArrivalSpeed",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetArrivalSpeed",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "@name NPC:SetArrivalSequence",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetArrivalSequence",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetArrivalSequence",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nSets the distance to goal at which the NPC should stop moving and continue to other business such as doing the rest of their tasks in a schedule.\n",
      "@name NPC:SetArrivalDistance",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetArrivalDistance",
      "@param {NPC} this - no description",
      "@param {number} dist - The distance to goal that is close enough for the NPC",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetArrivalDistance",
    "typings": [
      "(this: NPC, dist: number): void"
    ]
  },
  {
    "comments": [
      "@name NPC:SetArrivalActivity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetArrivalActivity",
      "@param {NPC} this - no description",
      "@param {number} act - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetArrivalActivity",
    "typings": [
      "(this: NPC, act: number): void"
    ]
  },
  {
    "comments": [
      "@name NPC:SetArrivalDirection",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SetArrivalDirection",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SetArrivalDirection",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nStops any sounds (speech) the NPC is currently palying.\nEquivalent to Entity:EmitSound( \"AI_BaseNPC.SentenceStop\" )```\n",
      "@name NPC:SentenceStop",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/SentenceStop",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "SentenceStop",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nStarts an engine task.\nUsed internally by the @ai_task library.\n",
      "@name NPC:RunEngineTask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/RunEngineTask",
      "@param {NPC} this - no description",
      "@param {number} taskID - The task ID, see [ai_task.h](https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/mp/src/game/server/ai_task.h#L89-L502)",
      "@param {number} taskData - The task data.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "RunEngineTask",
    "typings": [
      "(this: NPC, taskID: number, taskData: number): void"
    ]
  },
  {
    "comments": [
      "\nThis function crashes the game no matter how it is used and will be removed in a future update.\nUse @NPC:ClearEnemyMemory instead.\n",
      "@name NPC:RemoveMemory",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/RemoveMemory",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "RemoveMemory",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nForces the NPC to play a sentence from scripts/sentences.txt\n",
      "@name NPC:PlaySentence",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/PlaySentence",
      "@param {NPC} this - no description",
      "@param {string} sentence - The sentence string to speak.",
      "@param {number} delay - Delay in seconds until the sentence starts playing.",
      "@param {number} volume - The volume of the sentence, from 0 to 1.",
      "@returns {number} - Returns the sentence index, -1 if the sentence couldn't be played."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "PlaySentence",
    "typings": [
      "(this: NPC, sentence: string, delay: number, volume: number): number"
    ]
  },
  {
    "comments": [
      "\nSets a goal in x, y offsets for the npc to wander to\n",
      "@name NPC:NavSetWanderGoal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/NavSetWanderGoal",
      "@param {NPC} this - no description",
      "@param {number} xoffset - X offset",
      "@param {number} yoffset - Y offset",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "NavSetWanderGoal",
    "typings": [
      "(this: NPC, xoffset: number, yoffset: number): void"
    ]
  },
  {
    "comments": [
      "\nCreates a random path of specified minimum length between a closest start node and random node in the specified direction.\n",
      "@name NPC:NavSetRandomGoal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/NavSetRandomGoal",
      "@param {NPC} this - no description",
      "@param {number} minPathLength - Minimum length of path in units",
      "@param {Vector} dir - Unit vector pointing in the direction of the target random node",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "NavSetRandomGoal",
    "typings": [
      "(this: NPC, minPathLength: number, dir: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSet the goal target for an NPC.\n",
      "@name NPC:NavSetGoalTarget",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/NavSetGoalTarget",
      "@param {NPC} this - no description",
      "@param {Entity} target - The targeted entity to set the goal to.",
      "@param {Vector} offset - The offset to apply to the targeted entity's position.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "NavSetGoalTarget",
    "typings": [
      "(this: NPC, target: Entity, offset: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the goal position for the NPC.\n",
      "@name NPC:NavSetGoal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/NavSetGoal",
      "@param {NPC} this - no description",
      "@param {Vector} position - The position to set as the goal",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "NavSetGoal",
    "typings": [
      "(this: NPC, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nMakes the NPC walk toward the given position. The NPC will return to the player after amount of time set by **player_squad_autosummon_time** @ConVar type.\nOnly works on Citizens (npc_citizen) and is a part of the Half-Life 2 squad system.\nThe NPC **must** be in the player's squad for this to work.\n",
      "@name NPC:MoveOrder",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/MoveOrder",
      "@param {NPC} this - no description",
      "@param {Vector} position - The target position for the NPC to walk to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "MoveOrder",
    "typings": [
      "(this: NPC, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nCauses the NPC to temporarily forget the current enemy and switch on to a better one.\n",
      "@name NPC:MarkEnemyAsEluded",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/MarkEnemyAsEluded",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "MarkEnemyAsEluded",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nForce an NPC to play his LostEnemy sound.\n",
      "@name NPC:LostEnemySound",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/LostEnemySound",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "LostEnemySound",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity given can be reached by this NPC.\n",
      "@name NPC:IsUnreachable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/IsUnreachable",
      "@param {NPC} this - no description",
      "@param {Entity} testEntity - The entity to test.",
      "@returns {boolean} - If the entity is reachable or not."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "IsUnreachable",
    "typings": [
      "(this: NPC, testEntity: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nTries to achieve our ideal animation state, playing any transition sequences that we need to play to get there.\n",
      "@name NPC:MaintainActivity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/MaintainActivity",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "MaintainActivity",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nChecks if the NPC is running an **ai_goal**. ( e.g. An npc_citizen NPC following the Player. )\n",
      "@name NPC:IsRunningBehavior",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/IsRunningBehavior",
      "@param {NPC} this - no description",
      "@returns {boolean} - Returns true if running an ai_goal, otherwise returns false."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "IsRunningBehavior",
    "typings": [
      "(this: NPC): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the NPC is moving or not.\n",
      "@name NPC:IsMoving",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/IsMoving",
      "@param {NPC} this - no description",
      "@returns {boolean} - Whether the NPC is moving or not."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "IsMoving",
    "typings": [
      "(this: NPC): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the NPC is performing the given schedule.\n",
      "@name NPC:IsCurrentSchedule",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/IsCurrentSchedule",
      "@param {NPC} this - no description",
      "@param {SCHED} schedule - The schedule number, see @SCHED enum.",
      "@returns {boolean} - True if the NPC is performing the given schedule, false otherwise."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "IsCurrentSchedule",
    "typings": [
      "(this: NPC, schedule: SCHED): boolean"
    ]
  },
  {
    "comments": [
      "\nForce an NPC to play his Idle sound.\n",
      "@name NPC:IdleSound",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/IdleSound",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "IdleSound",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the NPC has the given condition.\n",
      "@name NPC:HasCondition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/HasCondition",
      "@param {NPC} this - no description",
      "@param {COND} condition - The condition index, see @COND enum.",
      "@returns {boolean} - True if the NPC has the given condition, false otherwise."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "HasCondition",
    "typings": [
      "(this: NPC, condition: COND): boolean"
    ]
  },
  {
    "comments": [
      "\nUsed to give a weapon to an already spawned NPC.\n",
      "@name NPC:Give",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/Give",
      "@param {NPC} this - no description",
      "@param {string} weapon - Class name of the weapon to equip to the NPC.",
      "@returns {Weapon} - The weapon entity given to the NPC."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "Give",
    "typings": [
      "(this: NPC, weapon: string): Weapon"
    ]
  },
  {
    "comments": [
      "\nReturns the NPC's current target set by @NPC:SetTarget.\n",
      "@name NPC:GetTarget",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetTarget",
      "@bug #3132 This returns nil if the NPC has no target. You should use @IsValid function (which accounts for nil and NULL) on the return to verify validity of the target.",
      "@param {NPC} this - no description",
      "@returns {Entity} - Target entity"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetTarget",
    "typings": [
      "(this: NPC): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of time it will take for the NPC to get to its Target Goal.\n",
      "@name NPC:GetPathTimeToGoal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetPathTimeToGoal",
      "@param {NPC} this - no description",
      "@returns {number} - The amount of time to get to the target goal."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetPathTimeToGoal",
    "typings": [
      "(this: NPC): number"
    ]
  },
  {
    "comments": [
      "\nReturns the shooting position of the NPC.\n",
      "@name NPC:GetShootPos",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetShootPos",
      "@note This only works properly when called on an NPC that can hold weapons, otherwise it will return the same value as @EntityFuncs:GetPos.",
      "@param {NPC} this - no description",
      "@returns {Vector} - The NPC's shooting position."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetShootPos",
    "typings": [
      "(this: NPC): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the distance the NPC is from Target Goal.\n",
      "@name NPC:GetPathDistanceToGoal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetPathDistanceToGoal",
      "@param {NPC} this - no description",
      "@returns {number} - The number of hammer units the NPC is away from the Goal."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetPathDistanceToGoal",
    "typings": [
      "(this: NPC): number"
    ]
  },
  {
    "comments": [
      "\nReturns the NPC's state.\n",
      "@name NPC:GetNPCState",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetNPCState",
      "@param {NPC} this - no description",
      "@returns {NPC_STATE} - The NPC's current state, see @NPC_STATE enum."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetNPCState",
    "typings": [
      "(this: NPC): NPC_STATE"
    ]
  },
  {
    "comments": [
      "\nReturns the index of the sequence the NPC uses to move.\n",
      "@name NPC:GetMovementSequence",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetMovementSequence",
      "@param {NPC} this - no description",
      "@returns {number} - The movement sequence index"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetMovementSequence",
    "typings": [
      "(this: NPC): number"
    ]
  },
  {
    "comments": [
      "\nReturns the NPC's current movement activity.\n",
      "@name NPC:GetMovementActivity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetMovementActivity",
      "@param {NPC} this - no description",
      "@returns {ACT} - Current NPC movement activity, see @ACT enum."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetMovementActivity",
    "typings": [
      "(this: NPC): ACT"
    ]
  },
  {
    "comments": [
      "\nReturns NPCs hull type set by @NPC:SetHullType.\n",
      "@name NPC:GetHullType",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetHullType",
      "@param {NPC} this - no description",
      "@returns {HULL} - Hull type, see @HULL enum"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetHullType",
    "typings": [
      "(this: NPC): HULL"
    ]
  },
  {
    "comments": [
      "\nReturns the expression file the NPC is currently playing.\n",
      "@name NPC:GetExpression",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetExpression",
      "@param {NPC} this - no description",
      "@returns {string} - The file path of the expression."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetExpression",
    "typings": [
      "(this: NPC): string"
    ]
  },
  {
    "comments": [
      "\nReturns how proficient (skilled) an NPC is with its current weapon.\n",
      "@name NPC:GetCurrentWeaponProficiency",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetCurrentWeaponProficiency",
      "@param {NPC} this - no description",
      "@returns {WEAPON_PROFICIENCY} - NPC's proficiency for current weapon. See @WEAPON_PROFICIENCY enum."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetCurrentWeaponProficiency",
    "typings": [
      "(this: NPC): WEAPON_PROFICIENCY"
    ]
  },
  {
    "comments": [
      "\nReturns the NPC's current schedule.\n",
      "@name NPC:GetCurrentSchedule",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetCurrentSchedule",
      "@param {NPC} this - no description",
      "@returns {SCHED} - The NPCs schedule, see @SCHED enum or -1 if we failed for some reason"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetCurrentSchedule",
    "typings": [
      "(this: NPC): SCHED"
    ]
  },
  {
    "comments": [
      "\nReturns the entity blocking the NPC along its path.\n",
      "@name NPC:GetBlockingEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetBlockingEntity",
      "@param {NPC} this - no description",
      "@returns {Entity} - Blocking entity"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetBlockingEntity",
    "typings": [
      "(this: NPC): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the entity that this NPC is trying to fight.\n",
      "@name NPC:GetEnemy",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetEnemy",
      "@bug #3132 This returns nil if the NPC has no enemy. You should use @IsValid function (which accounts for nil and NULL) on the return to verify validity of the enemy.",
      "@param {NPC} this - no description",
      "@returns {NPC} - Enemy NPC."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetEnemy",
    "typings": [
      "(this: NPC): NPC"
    ]
  },
  {
    "comments": [
      "\nReturns the activity to be played when the NPC arrives at its goal\n",
      "@name NPC:GetArrivalActivity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetArrivalActivity",
      "@param {NPC} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetArrivalActivity",
    "typings": [
      "(this: NPC): number"
    ]
  },
  {
    "comments": [
      "\nReturns the sequence to be played when the NPC arrives at its goal.\n",
      "@name NPC:GetArrivalSequence",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetArrivalSequence",
      "@param {NPC} this - no description",
      "@returns {number} - Sequence ID to be played, or -1 if there's no sequence."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetArrivalSequence",
    "typings": [
      "(this: NPC): number"
    ]
  },
  {
    "comments": [
      "\nReturns the aim vector of the NPC. NPC alternative of @Player:GetAimVector.\n",
      "@name NPC:GetAimVector",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetAimVector",
      "@param {NPC} this - no description",
      "@returns {Vector} - The aim direction of the NPC."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetAimVector",
    "typings": [
      "(this: NPC): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the NPC's current activity.\n",
      "@name NPC:GetActivity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetActivity",
      "@param {NPC} this - no description",
      "@returns {ACT} - Current activity, see @ACT enum."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetActivity",
    "typings": [
      "(this: NPC): ACT"
    ]
  },
  {
    "comments": [
      "\nReturns the weapon the NPC is currently carrying, or [NULL](http://wiki.garrysmod.com/page/Global_Variables).\n",
      "@name NPC:GetActiveWeapon",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/NPC/GetActiveWeapon",
      "@param {NPC} this - no description",
      "@returns {Entity} - The NPCs current weapon"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "GetActiveWeapon",
    "typings": [
      "(this: NPC): Entity"
    ]
  },
  {
    "comments": [
      "\nForce an NPC to play its FoundEnemy sound.\n",
      "@name NPC:FoundEnemySound",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/FoundEnemySound",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "FoundEnemySound",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nForce an NPC to play his Fear sound.\n",
      "@name NPC:FearSound",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/FearSound",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "FearSound",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nMakes an NPC exit a scripted sequence, if one is playing.\n",
      "@name NPC:ExitScriptedSequence",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/ExitScriptedSequence",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "ExitScriptedSequence",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nReturns the way the NPC \"feels\" about the entity.\n",
      "@name NPC:Disposition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/Disposition",
      "@param {NPC} this - no description",
      "@param {Entity} ent - The entity to get the disposition from.",
      "@returns {D} - The NPCs disposition, see @D enum."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "Disposition",
    "typings": [
      "(this: NPC, ent: Entity): D"
    ]
  },
  {
    "comments": [
      "\nForces the NPC to drop the specified weapon.\n",
      "@name NPC:DropWeapon",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/DropWeapon",
      "@param {NPC} this - no description",
      "@param {Weapon} weapon - Weapon to be dropped. If unset, will default to the currently equipped weapon.",
      "@param {Vector} target - If set, launches the weapon at given position. There is a limit to how far it is willing to throw the weapon. Overrides velocity argument.",
      "@param {Vector} velocity - If set and previous argument is unset, launches the weapon with given velocity. If the velocity is higher than 400, it will be clamped to 400.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "DropWeapon",
    "typings": [
      "(this: NPC, weapon?: Weapon, target?: Vector, velocity?: Vector): void"
    ]
  },
  {
    "comments": [
      "\nTranslates condition ID to a string.\n",
      "@name NPC:ConditionName",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/ConditionName",
      "@param {NPC} this - no description",
      "@param {COND} cond - The NPCs condition ID, see @COND enum",
      "@returns {string} - A human understandable string equivalent of that condition."
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "ConditionName",
    "typings": [
      "(this: NPC, cond: COND): string"
    ]
  },
  {
    "comments": [
      "\nStops the current schedule that the NPC is doing.\n",
      "@name NPC:ClearSchedule",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/ClearSchedule",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "ClearSchedule",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nClears the current NPC goal or target.\n",
      "@name NPC:ClearGoal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/ClearGoal",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "ClearGoal",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nClears the NPC's current expression which can be set with @NPC:SetExpression.\n",
      "@name NPC:ClearExpression",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/ClearExpression",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "ClearExpression",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nClears the Enemy from the NPC's memory, effectively forgetting it until met again with either the NPC vision or with @NPC:UpdateEnemyMemory.\n",
      "@name NPC:ClearEnemyMemory",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/ClearEnemyMemory",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "ClearEnemyMemory",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nClears out the specified @COND enum on this NPC.\n",
      "@name NPC:ClearCondition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/ClearCondition",
      "@param {NPC} this - no description",
      "@param {COND} condition - The @COND enum to clear out.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "ClearCondition",
    "typings": [
      "(this: NPC, condition: COND): void"
    ]
  },
  {
    "comments": [
      "\nReturns the NPC class. Do not confuse with @EntityFuncs:GetClass!\n",
      "@name NPC:Classify",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/Classify",
      "@param {NPC} this - no description",
      "@returns {CLASS} - See @CLASS enum"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "Classify",
    "typings": [
      "(this: NPC): CLASS"
    ]
  },
  {
    "comments": [
      "\nRemove a certain capability.\n",
      "@name NPC:CapabilitiesRemove",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/CapabilitiesRemove",
      "@param {NPC} this - no description",
      "@param {CAP} capabilities - Capabilities to remove, see @CAP enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "CapabilitiesRemove",
    "typings": [
      "(this: NPC, capabilities: CAP): void"
    ]
  },
  {
    "comments": [
      "\nReturns the NPC's capabilities along the ones defined on its weapon.\n",
      "@name NPC:CapabilitiesGet",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/CapabilitiesGet",
      "@param {NPC} this - no description",
      "@returns {CAP} - The capabilities as a bitflag.\nSee @CAP enum"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "CapabilitiesGet",
    "typings": [
      "(this: NPC): CAP"
    ]
  },
  {
    "comments": [
      "\nRemoves all of Capabilities the NPC has.\n",
      "@name NPC:CapabilitiesClear",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/CapabilitiesClear",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "CapabilitiesClear",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nAdds a capability to the NPC.\n",
      "@name NPC:CapabilitiesAdd",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/CapabilitiesAdd",
      "@param {NPC} this - no description",
      "@param {CAP} capabilities - Capabilities to add, see @CAP enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "CapabilitiesAdd",
    "typings": [
      "(this: NPC, capabilities: CAP): void"
    ]
  },
  {
    "comments": [
      "\nForce an NPC to play his Alert sound.\n",
      "@name NPC:AlertSound",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/AlertSound",
      "@param {NPC} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "AlertSound",
    "typings": [
      "(this: NPC): void"
    ]
  },
  {
    "comments": [
      "\nMakes the NPC like, hate, feel neutral towards, or fear the entity in question. If you want to setup relationship towards a certain entity *class*, use @NPC:AddRelationship.\n",
      "@name NPC:AddEntityRelationship",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/AddEntityRelationship",
      "@note NPCs do not see @NextBot types by default. This can be fixed by adding the [FL_OBJECT](https://wiki.garrysmod.com/page/Enums/FL) flag to the NextBot.",
      "@param {NPC} this - no description",
      "@param {Entity} target - The entity for the relationship to be applied to.",
      "@param {D} disposition - A @D enum representing the relationship type.",
      "@param {number} priority - How strong the relationship is.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "AddEntityRelationship",
    "typings": [
      "(this: NPC, target: Entity, disposition: D, priority: number): void"
    ]
  },
  {
    "comments": [
      "\nChanges how an NPC feels towards another NPC.  If you want to setup relationship towards a certain *entity*, use @NPC:AddEntityRelationship.\n",
      "@name NPC:AddRelationship",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NPC/AddRelationship",
      "@param {NPC} this - no description",
      "@param {string} relationstring - A string representing how the relationship should be set up.\nShould be formatted as \"npc_class @D enum numberPriority\".",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NPC",
    "extends": [
      "Entity"
    ],
    "name": "AddRelationship",
    "typings": [
      "(this: NPC, relationstring: string): void"
    ]
  },
  {
    "comments": [
      "\nAdds a notification with an animated progress bar.\n",
      "@name notification.AddProgress",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/notification/AddProgress",
      "@param {void} this - no description",
      "@param {any} id - Can be any type. It's used as an index.",
      "@param {string} strText - The text to show",
      "@returns {void}"
    ],
    "type": "func",
    "context": "notification",
    "name": "AddProgress",
    "typings": [
      "(this: void, id: any, strText: string): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the notification after 0.8 seconds.\n",
      "@name notification.Kill",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/notification/Kill",
      "@param {void} this - no description",
      "@param {any} uid - The unique ID of the notification",
      "@returns {void}"
    ],
    "type": "func",
    "context": "notification",
    "name": "Kill",
    "typings": [
      "(this: void, uid: any): void"
    ]
  },
  {
    "comments": [
      "\nAdds a standard notification to your screen.\n",
      "@name notification.AddLegacy",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/notification/AddLegacy",
      "@param {void} this - no description",
      "@param {string} text - The text to display.",
      "@param {NOTIFY} type - Determines the notification method (e.g. icon) for displaying the notification. See the @NOTIFY enum.",
      "@param {number} length - The number of seconds to display the notification for.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "notification",
    "name": "AddLegacy",
    "typings": [
      "(this: void, text: string, type: NOTIFY, length: number): void"
    ]
  },
  {
    "comments": [
      "\nStart doing an activity (animation)\n",
      "@name NextBot:StartActivity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/StartActivity",
      "@param {NextBot} this - no description",
      "@param {ACT} activity - One of the @ACT enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "StartActivity",
    "typings": [
      "(this: NextBot, activity: ACT): void"
    ]
  },
  {
    "comments": [
      "\nSets the solid mask for given NextBot.\nThe default solid mask of a NextBot is [MASK_NPCSOLID](https://wiki.garrysmod.com/page/Enums/MASK).\n",
      "@name NextBot:SetSolidMask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/SetSolidMask",
      "@param {NextBot} this - no description",
      "@param {CONTENTS | MASK} mask - The new mask, see @CONTENTS enum and @MASK enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "SetSolidMask",
    "typings": [
      "(this: NextBot, mask: CONTENTS | MASK): void"
    ]
  },
  {
    "comments": [
      "\nA hook called to process nextbot logic.\nThis hook runs in a @coroutine type by default. It will only be called if @NEXTBOT:BehaveStart is not overriden.\n",
      "@name NEXTBOT:RunBehaviour",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/RunBehaviour",
      "@param {NEXTBOT} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "RunBehaviour",
    "typings": [
      "(this: NEXTBOT): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the bot thinks it is un-stuck.\n",
      "@name NEXTBOT:OnUnStuck",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnUnStuck",
      "@param {NEXTBOT} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnUnStuck",
    "typings": [
      "(this: NEXTBOT): void"
    ]
  },
  {
    "comments": [
      "\nTo be called in the behaviour coroutine only! Plays an animation sequence and waits for it to end before returning.\n",
      "@name NextBot:PlaySequenceAndWait",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/PlaySequenceAndWait",
      "@param {NextBot} this - no description",
      "@param {string} name - The sequence name",
      "@param {number} speed - Playback Rate of that sequence",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "PlaySequenceAndWait",
    "typings": [
      "(this: NextBot, name: string, speed?: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a trace attack is done against the nextbot, allowing override of the damage being dealt by altering the @CTakeDamageInfo type.\nThis is called before @NEXTBOT:OnInjured.\n",
      "@name NEXTBOT:OnTraceAttack",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnTraceAttack",
      "@param {NEXTBOT} this - no description",
      "@param {CTakeDamageInfo} info - The damage info",
      "@param {Vector} dir - The direction the damage goes in",
      "@param {TraceResult} trace - The @TraceResult structure of the attack, containing the hitgroup.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnTraceAttack",
    "typings": [
      "(this: NEXTBOT, info: CTakeDamageInfo, dir: Vector, trace: TraceResult): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the bot thinks it is stuck.\n",
      "@name NEXTBOT:OnStuck",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnStuck",
      "@param {NEXTBOT} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnStuck",
    "typings": [
      "(this: NEXTBOT): void"
    ]
  },
  {
    "comments": [
      "\nCalled when someone else or something else has been killed.\n",
      "@name NEXTBOT:OnOtherKilled",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnOtherKilled",
      "@param {NEXTBOT} this - no description",
      "@param {Entity} victim - The victim that was killed",
      "@param {CTakeDamageInfo} info - The damage info",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnOtherKilled",
    "typings": [
      "(this: NEXTBOT, victim: Entity, info: CTakeDamageInfo): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the nextbot enters a new navigation area.\n",
      "@name NEXTBOT:OnNavAreaChanged",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnNavAreaChanged",
      "@param {NEXTBOT} this - no description",
      "@param {CNavArea} prev - The navigation area the bot just left",
      "@param {CNavArea} next - The navigation area the bot just entered",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnNavAreaChanged",
    "typings": [
      "(this: NEXTBOT, prev: CNavArea, next: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the bot's feet leave the ground - for whatever reason.\n",
      "@name NEXTBOT:OnLeaveGround",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnLeaveGround",
      "@param {NEXTBOT} this - no description",
      "@param {Entity} ent - The entity the bot \"jumped\" from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnLeaveGround",
    "typings": [
      "(this: NEXTBOT, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the bot's feet return to the ground.\n",
      "@name NEXTBOT:OnLandOnGround",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnLandOnGround",
      "@param {NEXTBOT} this - no description",
      "@param {Entity} ent - The entity the nextbot has landed on.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnLandOnGround",
    "typings": [
      "(this: NEXTBOT, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the bot gets killed.\n",
      "@name NEXTBOT:OnKilled",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnKilled",
      "@param {NEXTBOT} this - no description",
      "@param {CTakeDamageInfo} info - The damage info",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnKilled",
    "typings": [
      "(this: NEXTBOT, info: CTakeDamageInfo): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the bot gets hurt. This is a good place to play hurt sounds or voice lines.\n",
      "@name NEXTBOT:OnInjured",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnInjured",
      "@param {NEXTBOT} this - no description",
      "@param {CTakeDamageInfo} info - The damage info",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnInjured",
    "typings": [
      "(this: NEXTBOT, info: CTakeDamageInfo): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the bot is ignited.\n",
      "@name NEXTBOT:OnIgnite",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnIgnite",
      "@param {NEXTBOT} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnIgnite",
    "typings": [
      "(this: NEXTBOT): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the nextbot touches another entity.\n",
      "@name NEXTBOT:OnContact",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/OnContact",
      "@param {NEXTBOT} this - no description",
      "@param {Entity} ent - The entity the nextbot came in contact with.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "OnContact",
    "typings": [
      "(this: NEXTBOT, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nTo be called in the behaviour coroutine only! Will yield until the bot has reached the goal or is stuck\n",
      "@name NextBot:MoveToPos",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/MoveToPos",
      "@param {NextBot} this - no description",
      "@param {Vector} pos - The position we want to get to",
      "@param {INextBotMoveToPosOptions} options - A table containing a bunch of tweakable options.",
      "@returns {string} - Either \"failed\", \"stuck\", \"timeout\" or \"ok\" - depending on how the NPC got on"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "MoveToPos",
    "typings": [
      "(this: NextBot, pos: Vector, options: INextBotMoveToPosOptions): string"
    ],
    "types": [
      {
        "comments": [
          "lookahead - {number}: Minimum look ahead distance."
        ],
        "type": "interface",
        "name": "lookahead",
        "typing": "number",
        "context": "INextBotMoveToPosOptions"
      },
      {
        "comments": [
          "tolerance - {number}: How close we must be to the goal before it can be considered complete."
        ],
        "type": "interface",
        "name": "tolerance",
        "typing": "number",
        "context": "INextBotMoveToPosOptions"
      },
      {
        "comments": [
          "draw - {boolean}: Draw the path. Only visible on listen servers and single player."
        ],
        "type": "interface",
        "name": "draw",
        "typing": "boolean",
        "context": "INextBotMoveToPosOptions"
      },
      {
        "comments": [
          "maxage - {number}: Maximum age of the path before it times out."
        ],
        "type": "interface",
        "name": "maxage",
        "typing": "number",
        "context": "INextBotMoveToPosOptions"
      },
      {
        "comments": [
          "repath - {number}: Rebuilds the path after this number of seconds."
        ],
        "type": "interface",
        "name": "repath",
        "typing": "number",
        "context": "INextBotMoveToPosOptions"
      }
    ]
  },
  {
    "comments": [
      "\nCalled from Lua when the NPC is stuck. This should only be called from the behaviour coroutine - so if you want to override this function and do something special that yields - then go for it.\nYou should always call self.loco:ClearStuck() in this function to reset the stuck status - so it knows it's unstuck. See @CLuaLocomotion:ClearStuck.\n",
      "@name NextBot:HandleStuck",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/HandleStuck",
      "@param {NextBot} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "HandleStuck",
    "typings": [
      "(this: NextBot): void"
    ]
  },
  {
    "comments": [
      "\nReturns the solid mask for given NextBot.\n",
      "@name NextBot:GetSolidMask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/GetSolidMask",
      "@param {NextBot} this - no description",
      "@returns {CONTENTS | MASK} - The solid mask, see @CONTENTS enum and @MASK enum"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "GetSolidMask",
    "typings": [
      "(this: NextBot): CONTENTS | MASK"
    ]
  },
  {
    "comments": [
      "\nReturns the distance to an entity or position.\nSee also @NextBot:GetRangeSquaredTo.\n",
      "@name NextBot:GetRangeTo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/GetRangeTo",
      "@param {NextBot} this - no description",
      "@param {Vector} to - The position to measure distance to. Can be an entity.",
      "@returns {number} - The distance"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "GetRangeTo",
    "typings": [
      "(this: NextBot, to: Vector): number"
    ]
  },
  {
    "comments": [
      "\nReturns squared distance to an entity or a position.\nSee also @NextBot:GetRangeTo.\n",
      "@name NextBot:GetRangeSquaredTo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/GetRangeSquaredTo",
      "@param {NextBot} this - no description",
      "@param {Vector} to - The position to measure distance to. Can be an entity.",
      "@returns {number} - The squared distance"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "GetRangeSquaredTo",
    "typings": [
      "(this: NextBot, to: Vector): number"
    ]
  },
  {
    "comments": [
      "\nReturns the currently running activity\n",
      "@name NextBot:GetActivity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/GetActivity",
      "@param {NextBot} this - no description",
      "@returns {number} - The current activity"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "GetActivity",
    "typings": [
      "(this: NextBot): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table of hiding spots.\n",
      "@name NextBot:FindSpots",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/FindSpots",
      "@param {NextBot} this - no description",
      "@param {INextBotFindSpotsSpecs} specs - This table should contain the search info.",
      "@returns {table[]} - An unsorted table of tables containing:"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "FindSpots",
    "typings": [
      "(this: NextBot, specs: INextBotFindSpotsSpecs): table[]"
    ],
    "types": [
      {
        "comments": [
          "type - {string}: The type (optional, only 'hiding' supported)"
        ],
        "type": "interface",
        "name": "type",
        "typing": "string",
        "context": "INextBotFindSpotsSpecs"
      },
      {
        "comments": [
          "pos - {Vector}: the position to search."
        ],
        "type": "interface",
        "name": "pos",
        "typing": "Vector",
        "context": "INextBotFindSpotsSpecs"
      },
      {
        "comments": [
          "radius - {number}: the radius to search."
        ],
        "type": "interface",
        "name": "radius",
        "typing": "number",
        "context": "INextBotFindSpotsSpecs"
      },
      {
        "comments": [
          "stepup - {number}: the highest step to step up."
        ],
        "type": "interface",
        "name": "stepup",
        "typing": "number",
        "context": "INextBotFindSpotsSpecs"
      },
      {
        "comments": [
          "stepdown - {number}: the highest we can step down without being hurt."
        ],
        "type": "interface",
        "name": "stepdown",
        "typing": "number",
        "context": "INextBotFindSpotsSpecs"
      }
    ]
  },
  {
    "comments": [
      "\nLike @NextBot:FindSpots but only returns a vector.\n",
      "@name NextBot:FindSpot",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/FindSpot",
      "@param {NextBot} this - no description",
      "@param {string} type - Either \"random\", \"near\", \"far\"",
      "@param {INextBotFindSpotOptions} options - This table should contain the search info.",
      "@returns {Vector} - If it finds a spot it will return a vector. If not it will return nil."
    ],
    "type": "class",
    "context": "NextBot",
    "name": "FindSpot",
    "typings": [
      "(this: NextBot, type: string, options: INextBotFindSpotOptions): Vector"
    ],
    "types": [
      {
        "comments": [
          "type - {string}: The type (Only'hiding' for now)"
        ],
        "type": "interface",
        "name": "type",
        "typing": "string",
        "context": "INextBotFindSpotOptions"
      },
      {
        "comments": [
          "pos - {Vector}: the position to search."
        ],
        "type": "interface",
        "name": "pos",
        "typing": "Vector",
        "context": "INextBotFindSpotOptions"
      },
      {
        "comments": [
          "radius - {number}: the radius to search."
        ],
        "type": "interface",
        "name": "radius",
        "typing": "number",
        "context": "INextBotFindSpotOptions"
      },
      {
        "comments": [
          "stepup - {number}: the highest step to step up."
        ],
        "type": "interface",
        "name": "stepup",
        "typing": "number",
        "context": "INextBotFindSpotOptions"
      },
      {
        "comments": [
          "stepdown - {number}: the highest we can step down without being hurt."
        ],
        "type": "interface",
        "name": "stepdown",
        "typing": "number",
        "context": "INextBotFindSpotOptions"
      }
    ]
  },
  {
    "comments": [
      "\nCalled to update the bot's animation.\n",
      "@name NEXTBOT:BodyUpdate",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/BodyUpdate",
      "@param {NEXTBOT} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "BodyUpdate",
    "typings": [
      "(this: NEXTBOT): void"
    ]
  },
  {
    "comments": [
      "\nShould only be called in BodyUpdate. This sets the move_x and move_y pose parameters of the bot to fit how they're currently moving, sets the animation speed to suit the ground speed, and calls FrameAdvance.\n",
      "@name NextBot:BodyMoveXY",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/BodyMoveXY",
      "@bug #3420 This function might cause crashes with some activities.",
      "@param {NextBot} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NextBot",
    "name": "BodyMoveXY",
    "typings": [
      "(this: NextBot): void"
    ]
  },
  {
    "comments": [
      "\nCalled to update the bot's behaviour.\n",
      "@name NEXTBOT:BehaveUpdate",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/BehaveUpdate",
      "@param {NEXTBOT} this - no description",
      "@param {number} interval - How long since the last update",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "BehaveUpdate",
    "typings": [
      "(this: NEXTBOT, interval: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled to initialize the behaviour.\nThis is called automatically when the NextBot is created, you should not call it manually.\n",
      "@name NEXTBOT:BehaveStart",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NEXTBOT/BehaveStart",
      "@note You shouldn't override this unless you know what you are doing - it's used to kick off the @coroutine type that runs the bot's behaviour. See @NEXTBOT:RunBehaviour instead.",
      "@param {NEXTBOT} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "NEXTBOT",
    "name": "BehaveStart",
    "typings": [
      "(this: NEXTBOT): void"
    ]
  },
  {
    "comments": [
      "\nBecome a ragdoll and remove the entity.\n",
      "@name NextBot:BecomeRagdoll",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/NextBot/BecomeRagdoll",
      "@param {NextBot} this - no description",
      "@param {CTakeDamageInfo} info - Damage info passed from an onkilled event",
      "@returns {Entity} - The created ragdoll, if any."
    ],
    "type": "class",
    "context": "NextBot",
    "name": "BecomeRagdoll",
    "typings": [
      "(this: NextBot, info: CTakeDamageInfo): Entity"
    ]
  },
  {
    "comments": [
      "\nAppends a vector to the current net message.\nVectors sent by this function are compressed, which may result in precision loss.  XYZ components greater than 16384 or less than -16384 are irrecoverably altered (most significant bits are trimmed) and precision after the decimal point is low.\n",
      "@name net.WriteVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteVector",
      "@param {void} this - no description",
      "@param {Vector} vector - The vector to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteVector",
    "typings": [
      "(this: void, vector: Vector): void"
    ]
  },
  {
    "comments": [
      "\nAppends an unsigned integer with the specified number of bits to the current net message.\nUse @net.WriteInt if you want to send positive and negative numbers. Use @net.WriteFloat for a non-whole number (e.g. 2.25).\n",
      "@name net.WriteUInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteUInt",
      "@note Unsigned numbers does not support negative numbers.",
      "@param {void} this - no description",
      "@param {number} unsignedInteger - The unsigned integer to be sent.",
      "@param {number} numberOfBits - The size of the integer to be sent, in bits. Acceptable values range from any number 1 to 32 inclusive. For reference, 1 = bit, 4 = nibble, 8 = byte, 16 = short, 32 = long.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteUInt",
    "typings": [
      "(this: void, unsignedInteger: number, numberOfBits: number): void"
    ]
  },
  {
    "comments": [
      "\nAppends any type of value to the current net message.\n",
      "@name net.WriteType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteType",
      "@internal Used internally by @net.WriteTable.",
      "@note An additional 8-bit unsigned integer indicating the type will automatically be written to the packet before the value, in order to facilitate reading with @net.ReadType. If you know the data type you are writing, use a function meant for that specific data type to reduce amount of data sent.",
      "@param {void} this - no description",
      "@param {any} Data - The data to be sent",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteType",
    "typings": [
      "(this: void, Data: any): void"
    ]
  },
  {
    "comments": [
      "\nAppends a table to the current net message. Adds 16 extra bits per key/value pair so you're better off writing each individual key/value as the exact type if possible.\n",
      "@name net.WriteTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteTable",
      "@warning All net messages have a 64kb buffer. This function will not check or error when that buffer is overflown. You might want to consider using @util.TableToJSON and @util.Compress and send the resulting string in 60kb chunks, doing the opposite on the receiving end.",
      "@warning If the table contains a nil key the table may not be read correctly.\nNot all objects can be sent over the network. Things like functions, @IMaterial types, etc will cause errors when reading the table from a net message.",
      "@param {void} this - no description",
      "@param {table} table - The table to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteTable",
    "typings": [
      "(this: void, table: table): void"
    ]
  },
  {
    "comments": [
      "\nAppends a string to the current net message. The size of the string is 8 bits plus 8 bits for every ASCII character in the string. The maximum allowed length of a single written string is 65533 characters.\n",
      "@name net.WriteString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteString",
      "@param {void} this - no description",
      "@param {string} str - The string to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteString",
    "typings": [
      "(this: void, str: string): void"
    ]
  },
  {
    "comments": [
      "\nWrites a normalized/direction vector ( Vector with length of 1 ) to the net message.\nThis function uses less bandwidth compared to @net.WriteVector and will not send vectors with length of > 1 properly.\n",
      "@name net.WriteNormal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteNormal",
      "@param {void} this - no description",
      "@param {Vector} normal - The normalized/direction vector to be send.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteNormal",
    "typings": [
      "(this: void, normal: Vector): void"
    ]
  },
  {
    "comments": [
      "\nWrites a @VMatrix type to the current net message.\n",
      "@name net.WriteMatrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteMatrix",
      "@param {void} this - no description",
      "@param {VMatrix} matrix - The matrix to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteMatrix",
    "typings": [
      "(this: void, matrix: VMatrix): void"
    ]
  },
  {
    "comments": [
      "\nAppends an integer - a whole number - to the current net message. Can be read back with @net.ReadInt on the receiving end.\nUse @net.WriteUInt to send an unsigned number (that you know will never be negative). Use @net.WriteFloat for a non-whole number (e.g. 2.25).\n",
      "@name net.WriteInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteInt",
      "@param {void} this - no description",
      "@param {number} integer - The integer to be sent.",
      "@param {number} bitCount - The amount of bits the number consists of. This must be 32 or less.\nIf you are unsure what to set, just set it to 32.\n{ * class=\"mw-collapsible mw-collapsed wikitable\"\n*+Consult the table below to determine the bit count you need.\n! Bit Count\n! Minimum value\n! Maximum value\n*-\n* 2\n* -2\n* 1\n*-\n*  3\n* -4\n* 3\n*-\n*  4\n* -8\n* 7\n*-\n*  5\n* -16\n* 15\n*-\n*  6\n* -32\n* 31\n*-\n*  7\n* -64\n* 63\n*-\n*  8\n* -128\n* 127\n*-\n*  9\n* -256\n* 255\n*-\n*  10\n* -512\n* 511\n*-\n*  11\n* -1024\n* 1023\n*-\n*  12\n* -2048\n* 2047\n*-\n*  13\n* -4096\n* 4095\n*-\n*  14\n* -8192\n* 8191\n*-\n*  15\n* -16384\n* 16383\n*-\n*  16\n* -32768\n* 32767\n*-\n*  17\n* -65536\n* 65535\n*-\n*  18\n* -131072\n* 131071\n*-\n*  19\n* -262144\n* 262143\n*-\n*  20\n* -524288\n* 524287\n*-\n*  21\n* -1048576\n* 1048575\n*-\n*  22\n* -2097152\n* 2097151\n*-\n*  23\n* -4194304\n* 4194303\n*-\n*  24\n* -8388608\n* 8388607\n*-\n*  25\n* -16777216\n* 16777215\n*-\n*  26\n* -33554432\n* 33554431\n*-\n*  27\n* -67108864\n* 67108863\n*-\n*  28\n* -134217728\n* 134217727\n*-\n*  29\n* -268435456\n* 268435455\n*-\n*  30\n* -536870912\n* 536870911\n*-\n*  31\n* -1073741824\n* 1073741823\n*-\n*  32\n* -2147483648\n* 2147483647\n* }",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteInt",
    "typings": [
      "(this: void, integer: number, bitCount: number): void"
    ]
  },
  {
    "comments": [
      "\nAppends a float (number with decimals) to the current net message.\n",
      "@name net.WriteFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteFloat",
      "@param {void} this - no description",
      "@param {number} float - The float to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteFloat",
    "typings": [
      "(this: void, float: number): void"
    ]
  },
  {
    "comments": [
      "\nAppends an entity to the current net message.\n",
      "@name net.WriteEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteEntity",
      "@param {void} this - no description",
      "@param {Entity} entity - The entity to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteEntity",
    "typings": [
      "(this: void, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nAppends a double-precision number to the current net message.\n",
      "@name net.WriteDouble",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteDouble",
      "@param {void} this - no description",
      "@param {number} double - The double to be sent",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteDouble",
    "typings": [
      "(this: void, double: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites a chunk of binary data to the message.\n",
      "@name net.WriteData",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteData",
      "@param {void} this - no description",
      "@param {string} binaryData - The binary data to be sent.",
      "@param {number} length - The length of the binary data to be sent, in bytes.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteData",
    "typings": [
      "(this: void, binaryData: string, length: number): void"
    ]
  },
  {
    "comments": [
      "\nAppends a @IColor structure to the current net message.\n",
      "@name net.WriteColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteColor",
      "@param {void} this - no description",
      "@param {Color} Color - The @IColor structure you want to append to the net message.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteColor",
    "typings": [
      "(this: void, Color: Color): void"
    ]
  },
  {
    "comments": [
      "\nAppends a boolean to the current net message. Alias of @net.WriteBit\n",
      "@name net.WriteBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteBool",
      "@param {void} this - no description",
      "@param {boolean} boolean - Boolean value to write",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteBool",
    "typings": [
      "(this: void, boolean: boolean): void"
    ]
  },
  {
    "comments": [
      "\nAppends a boolean (as 1 or 0) to the current net message.\nPlease note that the bit is written here from a @boolean type (true/false) but @net.ReadBit returns a number.\n",
      "@name net.WriteBit",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteBit",
      "@param {void} this - no description",
      "@param {boolean} boolean - Bit status (false = 0, true = 1)",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteBit",
    "typings": [
      "(this: void, boolean: boolean): void"
    ]
  },
  {
    "comments": [
      "\nWrites an angle to the current net message.\n",
      "@name net.WriteAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/WriteAngle",
      "@param {void} this - no description",
      "@param {Angle} angle - The angle to be sent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "WriteAngle",
    "typings": [
      "(this: void, angle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nBegins a new net message. If another net message is already started and hasn't been sent yet, it will be discarded.\n",
      "@name net.Start",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/Start",
      "@warning Each net message has a length limit of 64KB!",
      "@warning The message name must be pooled with @util.AddNetworkString beforehand!",
      "@param {void} this - no description",
      "@param {string} messageName - The name of the message to send",
      "@param {boolean} unreliable - If set to true, the message is not guaranteed to reach its destination",
      "@returns {boolean} - True if the message has been started."
    ],
    "type": "func",
    "context": "net",
    "name": "Start",
    "typings": [
      "(this: void, messageName: string, unreliable?: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nSends the current message to the server.\n",
      "@name net.SendToServer",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/net/SendToServer",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "SendToServer",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSends the message to all players the position is in the PVS of or, more simply said, sends the message to players that can potentially see this position.\n",
      "@name net.SendPVS",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/net/SendPVS",
      "@param {void} this - no description",
      "@param {Vector} position - Position that must be in players' visibility set.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "SendPVS",
    "typings": [
      "(this: void, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSends the current message to all except the specified, or to all except all players in the table.\n",
      "@name net.SendOmit",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/net/SendOmit",
      "@param {void} this - no description",
      "@param {Player} ply - The player(s) to NOT send the message to. Can be a table of players",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "SendOmit",
    "typings": [
      "(this: void, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nSends the message to all players that are in the same potentially audible set(PAS) as the position, or simply said, it adds all players that can potentially hear sounds from this position.\n",
      "@name net.SendPAS",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/net/SendPAS",
      "@param {void} this - no description",
      "@param {Vector} position - PAS position.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "SendPAS",
    "typings": [
      "(this: void, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSends the current message to the specified player, or to all players listed in the table.\n",
      "@name net.Send",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/net/Send",
      "@param {void} this - no description",
      "@param {CRecipientFilter} ply - The player(s) to send the message to. Can be a table of players or a @CRecipientFilter type.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "Send",
    "typings": [
      "(this: void, ply: CRecipientFilter): void"
    ]
  },
  {
    "comments": [
      "\nAdds a net message handler. Only one receiver can be used to receive the net message.\n",
      "@name net.Receive",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/Receive",
      "@note The message-name is converted to lower-case so the message-names \"*BigBlue*\" and \"*bigblue*\" would be equal.",
      "@warning You **must** put this function **outside** of any other function or hook for it to work properly unless you know what you are doing!",
      "@warning You **must** read information in the same order as you write it.",
      "@warning Each net message has a length limit of 64KB!",
      "@param {void} this - no description",
      "@param {string} messageName - The message name to hook to.",
      "@param {function} callback - The function to be called if the specified message was received. Arguments are:",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "Receive",
    "typings": [
      "(this: void, messageName: string, callback: netReceiveCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type netReceiveCallback",
          "@param {void} this - no description",
          "@param {number} len - Length of the message, in bits",
          "@param {Player} ply - The player that sent the message, works only serverside"
        ],
        "type": "type",
        "name": "netReceiveCallback",
        "typing": "(this: void, len: number, ply: Player) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nReads a vector from the received net message.  Vectors sent by this function are compressed, which may result in precision loss. See @net.WriteVector for more information.\n",
      "@name net.ReadVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadVector",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {Vector} - The read vector, or Vector(0,0,0) if no vector could be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadVector",
    "typings": [
      "(this: void): Vector"
    ]
  },
  {
    "comments": [
      "\nReads an unsigned integer with the specified number of bits from the received net message.\n",
      "@name net.ReadUInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadUInt",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@param {number} numberOfBits - The size of the integer to be read, in bits.",
      "@returns {number} - The unsigned integer read, or 0 if the integer could not be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadUInt",
    "typings": [
      "(this: void, numberOfBits: number): number"
    ]
  },
  {
    "comments": [
      "\nReads a value from the net message with the specified type, written by @net.WriteType.\n",
      "@name net.ReadType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadType",
      "@internal Used internally by @net.ReadTable.",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@param {TYPE} typeID - The type of value to be read, using @TYPE enum.",
      "@returns {any} - The value, or the respective blank value based on the type you're reading if the value could not be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadType",
    "typings": [
      "(this: void, typeID?: TYPE): any"
    ]
  },
  {
    "comments": [
      "\nReads a null terminated string from the net stream. The size of the string is 8 bits plus 8 bits for every ASCII character in the string.\n",
      "@name net.ReadString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadString",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {string} - The read string, or a string with 0 length if no string could be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadString",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nReads a table from the received net message.\nSee @net.WriteTable for extra info.\nYou may get net.ReadType: Couldn't read type X``` during the execution of the function, the problem is that you are sending objects that cannot be serialized/sent over the network.\n",
      "@name net.ReadTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadTable",
      "@note Sometimes when sending a table through the net library, the order of the keys may be switched. So be cautious when comparing (See Example 1).",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {table} - Table recieved via the net message, or a blank table if no table could be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadTable",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nReads a normal vector from the net message.\n",
      "@name net.ReadNormal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadNormal",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {Vector} - The normalized vector ( length = 1 ), or Vector(0,0,1) if no normal could be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadNormal",
    "typings": [
      "(this: void): Vector"
    ]
  },
  {
    "comments": [
      "\nReads a @VMatrix type from the received net message.\n",
      "@name net.ReadMatrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadMatrix",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {VMatrix} - The matrix, or an empty matrix if no matrix could be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadMatrix",
    "typings": [
      "(this: void): VMatrix"
    ]
  },
  {
    "comments": [
      "\nReads an integer from the received net message.\n",
      "@name net.ReadInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadInt",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@param {number} bitCount - The amount of bits to be read.\nThis must be set to what you set to @net.WriteInt. Read more information at @net.WriteInt.",
      "@returns {number} - The read integer number, or 0 if no integer could be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadInt",
    "typings": [
      "(this: void, bitCount: number): number"
    ]
  },
  {
    "comments": [
      "\nReads a word, basically unsigned short. This is used internally to read the \"header\" of the message which is an unsigned short which can be converted to the corresponding message name via @util.NetworkIDToString.\n",
      "@name net.ReadHeader",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadHeader",
      "@internal",
      "@param {void} this - no description",
      "@returns {number} - The header number"
    ],
    "type": "func",
    "context": "net",
    "name": "ReadHeader",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReads a floating point number from the received net message.\n",
      "@name net.ReadFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadFloat",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {number} - The floating point number, or 0 if no number could be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadFloat",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReads an entity from the received net message. You should always check if the specified entity exists as it may have been removed and therefor NULL if it is outside of the players PVS or was already removed.\n",
      "@name net.ReadEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadEntity",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {Entity} - The entity, or Entity(0) if no entity could be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadEntity",
    "typings": [
      "(this: void): Entity"
    ]
  },
  {
    "comments": [
      "\nReads a double-precision number from the received net message.\n",
      "@name net.ReadDouble",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadDouble",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {number} - The double-precision number, or 0 if no number could be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadDouble",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReads pure binary data from the message.\n",
      "@name net.ReadData",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadData",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@param {number} length - The length of the data to be read, in bytes.",
      "@returns {string} - The binary data read, or a string containing one character with a byte of 0 if no data could be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadData",
    "typings": [
      "(this: void, length: number): string"
    ]
  },
  {
    "comments": [
      "\nReads a @IColor structure from the current net message.\n",
      "@name net.ReadColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadColor",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {IColor} - The @IColor structure read from the current net message, or Color(0,0,0,0) if the color could not be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadColor",
    "typings": [
      "(this: void): IColor"
    ]
  },
  {
    "comments": [
      "\nReads a bit from the received net message.\n",
      "@name net.ReadBit",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadBit",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {number} - 0 or 1, or 0 if the bit could not be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadBit",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReads a boolean from the received net message.\n",
      "@name net.ReadBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadBool",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {boolean} - true or false, or false if the bool could not be read."
    ],
    "type": "func",
    "context": "net",
    "name": "ReadBool",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReads an angle from the received net message.\n",
      "@name net.ReadAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/ReadAngle",
      "@warning You **must** read information in same order as you write it.",
      "@param {void} this - no description",
      "@returns {Angle} - The read angle, or Angle(0,0,0) if no angle could be read"
    ],
    "type": "func",
    "context": "net",
    "name": "ReadAngle",
    "typings": [
      "(this: void): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the size of the current message in bytes.\n",
      "@name net.BytesWritten",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/BytesWritten",
      "@note This will include 3 extra bytes used by the engine internally to send the data over the network.",
      "@param {void} this - no description",
      "@returns {number} - The amount of bytes written to the current net message.\nReturns nil if no net message has been started.",
      "@returns {number} - The amount of bits written to the current net message.\nReturns nil if no net message has been started.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "net",
    "name": "BytesWritten",
    "typings": [
      "(this: void): [number, number]"
    ]
  },
  {
    "comments": [
      "\nFunction called by the engine to tell the lua state a message arrived.\n",
      "@name net.Incoming",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/Incoming",
      "@internal You may be looking for @net.Receive.",
      "@param {void} this - no description",
      "@param {number} length - The message length, in bits.",
      "@param {Player} client - The player that sent the message. This will be nil in the client state.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "Incoming",
    "typings": [
      "(this: void, length: number, client: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of data left to read in the current message in bytes. Does nothing when sending data.\n",
      "@name net.BytesLeft",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/net/BytesLeft",
      "@param {void} this - no description",
      "@returns {number} - The amount of data left to read in the current net message in bytes.\nReturns nil if no net message has been started.",
      "@returns {number} - The amount of data left to read in the current net message in bits.\nReturns nil if no net message has been started.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "net",
    "name": "BytesLeft",
    "typings": [
      "(this: void): [number, number]"
    ]
  },
  {
    "comments": [
      "\nSends the currently built net message to all connected players.\nMore information can be found in [Net Library Usage](https://wiki.garrysmod.com/page/Net%20Library%20Usage).\n",
      "@name net.Broadcast",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/net/Broadcast",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "net",
    "name": "Broadcast",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the classname of the default spawn point entity, used before generating a new navmesh with @navmesh.BeginGeneration.\n",
      "@name navmesh.SetPlayerSpawnName",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/SetPlayerSpawnName",
      "@param {void} this - no description",
      "@param {string} spawnPointClass - The classname of what the player uses to spawn, automatically adds it to the walkable positions during map generation.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "SetPlayerSpawnName",
    "typings": [
      "(this: void, spawnPointClass: string): void"
    ]
  },
  {
    "comments": [
      "\nSaves any changes made to navmesh to the .nav file.\n",
      "@name navmesh.Save",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/Save",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "Save",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the @CNavLadder type as marked, so it can be used with editing console commands.\n",
      "@name navmesh.SetMarkedLadder",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/SetMarkedLadder",
      "@param {void} this - no description",
      "@param {CNavLadder} area - The @CNavLadder type to set as the marked ladder.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "SetMarkedLadder",
    "typings": [
      "(this: void, area: CNavLadder): void"
    ]
  },
  {
    "comments": [
      "\nSets the @CNavArea type as marked, so it can be used with editing console commands.\n",
      "@name navmesh.SetMarkedArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/SetMarkedArea",
      "@param {void} this - no description",
      "@param {CNavArea} area - The @CNavArea type to set as the marked area.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "SetMarkedArea",
    "typings": [
      "(this: void, area: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nDeletes every @CNavArea type and @CNavLadder type on the map **without saving the changes**.\n",
      "@name navmesh.Reset",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/Reset",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "Reset",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if a navmesh has been loaded when loading the map.\n",
      "@name navmesh.IsLoaded",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/IsLoaded",
      "@param {void} this - no description",
      "@returns {boolean} - Whether a navmesh has been loaded when loading the map."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "IsLoaded",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nLoads a new navmesh from the .nav file for current map discarding any changes made to the navmesh previously.\n",
      "@name navmesh.Load",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/Load",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "Load",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nWhether we're currently generating a new navmesh with @navmesh.BeginGeneration.\n",
      "@name navmesh.IsGenerating",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/IsGenerating",
      "@param {void} this - no description",
      "@returns {boolean} - Whether we're generating a nav mesh or not."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "IsGenerating",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the classname of the player spawn entity.\n",
      "@name navmesh.GetPlayerSpawnName",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetPlayerSpawnName",
      "@param {void} this - no description",
      "@returns {string} - The classname of the spawn point entity. By default returns \"info_player_start\""
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetPlayerSpawnName",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nReturns the closest @CNavArea type to given position at the same height, or beneath it.\nThis function will ignore blocked @CNavArea types. See @navmesh.GetNavArea for a function that does see blocked areas.\n",
      "@name navmesh.GetNearestNavArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetNearestNavArea",
      "@param {void} this - no description",
      "@param {Vector} pos - The position to look from",
      "@param {boolean} anyZ - This argument is ignored and has no effect",
      "@param {number} maxDist - This is the maximum distance from the given position that the function will look for a @CNavArea type",
      "@param {boolean} checkLOS - If this is set to true then the function will internally do a @util.TraceLine from the starting position to each potential @CNavArea type with a MASK_NPCSOLID_BRUSHONLY @MASK enum. If the trace fails then the @CNavArea type is ignored.\nIf this is set to false then the function will find the closest @CNavArea type through anything, including the world.",
      "@param {boolean} checkGround - If checkGround is true then this function will internally call @navmesh.GetNavArea to check if there is a @CNavArea type directly below the position, and return it if so, before checking anywhere else.",
      "@param {number} team - This will internally call @CNavArea:IsBlocked to check if the target @CNavArea type is not to be navigated by the given team. Currently this appears to do nothing.",
      "@returns {CNavArea} - The closest @CNavArea type found with the given parameters."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetNearestNavArea",
    "typings": [
      "(this: void, pos: Vector, anyZ?: boolean, maxDist?: number, checkLOS?: boolean, checkGround?: boolean, team?: number): CNavArea"
    ]
  },
  {
    "comments": [
      "\nReturns a @CNavLadder type by the given ID.\n",
      "@name navmesh.GetNavAreaByID",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetNavLadderByID",
      "@param {void} this - no description",
      "@param {number} id - ID of the @CNavLadder type to get. Starts with 1.",
      "@returns {CNavLadder} - The @CNavLadder type with given ID."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetNavAreaByID",
    "typings": [
      "(this: void, id: number): CNavLadder"
    ]
  },
  {
    "comments": [
      "\nReturns a @CNavArea type by the given ID.\n",
      "@name navmesh.GetNavAreaByID",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetNavAreaByID",
      "@note Avoid calling this function every frame, as internally it does a lookup trough all the @CNavArea types, call this once and store the result",
      "@param {void} this - no description",
      "@param {number} id - ID of the @CNavArea type to get. Starts with 1.",
      "@returns {CNavArea} - The @CNavArea type with given ID."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetNavAreaByID",
    "typings": [
      "(this: void, id: number): CNavArea"
    ]
  },
  {
    "comments": [
      "\nReturns the highest ID of all nav areas on the map. While this can be used to get all nav areas, this number may not actually be the actual number of nav areas on the map.\n",
      "@name navmesh.GetNavAreaCount",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetNavAreaCount",
      "@param {void} this - no description",
      "@returns {number} - The highest ID of all nav areas on the map."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetNavAreaCount",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the Nav Area contained in this position that also satisfies the elevation limit.\nThis function will properly see blocked @CNavArea types. See @navmesh.GetNearestNavArea.\n",
      "@name navmesh.GetNavArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetNavArea",
      "@param {void} this - no description",
      "@param {Vector} pos - The position to search for.",
      "@param {number} beneathLimit - The elevation limit at which the Nav Area will be searched.",
      "@returns {CNavArea} - The nav area."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetNavArea",
    "typings": [
      "(this: void, pos: Vector, beneathLimit: number): CNavArea"
    ]
  },
  {
    "comments": [
      "\nReturns the currently marked @CNavLadder type, for use with editing console commands.\n",
      "@name navmesh.GetMarkedLadder",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetMarkedLadder",
      "@param {void} this - no description",
      "@returns {CNavLadder} - The currently marked @CNavLadder type."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetMarkedLadder",
    "typings": [
      "(this: void): CNavLadder"
    ]
  },
  {
    "comments": [
      "\nReturns the currently marked @CNavArea type, for use with editing console commands.\n",
      "@name navmesh.GetMarkedArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetMarkedArea",
      "@param {void} this - no description",
      "@returns {CNavArea} - The currently marked @CNavArea type."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetMarkedArea",
    "typings": [
      "(this: void): CNavArea"
    ]
  },
  {
    "comments": [
      "\nFinds the closest standable ground at, above, or below the provided position.\n",
      "@name navmesh.GetGroundHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetGroundHeight",
      "@note The ground must have at least 32 units of empty space above it to be considered by this function, unless 16 layers are tested without finding valid ground.",
      "@param {void} this - no description",
      "@param {Vector} pos - Position to find the closest ground for.",
      "@returns {number} - The height of the ground layer.",
      "@returns {Vector} - The normal of the ground layer.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetGroundHeight",
    "typings": [
      "(this: void, pos: Vector): [number, Vector]"
    ]
  },
  {
    "comments": [
      "\nReturns the position of the edit cursor when nav_edit is set to 1.\n",
      "@name navmesh.GetEditCursorPosition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetEditCursorPosition",
      "@param {void} this - no description",
      "@returns {Vector} - The position of the edit cursor."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetEditCursorPosition",
    "typings": [
      "(this: void): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns an integer indexed table of all @CNavArea types on the current map. If the map doesn't have a navmesh generated then this will return an empty table.\n",
      "@name navmesh.GetAllNavAreas",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/GetAllNavAreas",
      "@param {void} this - no description",
      "@returns {CNavArea[]} - A table of all the @CNavArea types on the current map."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "GetAllNavAreas",
    "typings": [
      "(this: void): CNavArea[]"
    ]
  },
  {
    "comments": [
      "\nClears all the walkable positions, used before calling @navmesh.BeginGeneration.\n",
      "@name navmesh.ClearWalkableSeeds",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/ClearWalkableSeeds",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "ClearWalkableSeeds",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns a bunch of areas within distance, used to find hiding spots by @NextBot types for example.\n",
      "@name navmesh.Find",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/Find",
      "@param {void} this - no description",
      "@param {Vector} pos - The position to search around",
      "@param {number} radius - Radius to search within",
      "@param {number} stepdown - Maximum stepdown( fall distance ) allowed",
      "@param {number} stepup - Maximum stepup( jump height ) allowed",
      "@returns {CNavArea[]} - A table of @CNavArea types"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "Find",
    "typings": [
      "(this: void, pos: Vector, radius: number, stepdown: number, stepup: number): CNavArea[]"
    ]
  },
  {
    "comments": [
      "\nCreates a new @CNavArea type.\n",
      "@name navmesh.CreateNavArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/CreateNavArea",
      "@param {void} this - no description",
      "@param {CNavArea} corner - The first corner of the new @CNavArea type",
      "@param {CNavArea} opposite_corner - The opposite (diagonally) corner of the new @CNavArea type",
      "@returns {CNavArea} - The new @CNavArea type or @nil type if we failed for some reason."
    ],
    "type": "func",
    "context": "navmesh",
    "name": "CreateNavArea",
    "typings": [
      "(this: void, corner: CNavArea, opposite_corner: CNavArea): CNavArea"
    ]
  },
  {
    "comments": [
      "\nStarts the generation of a new navmesh.\n",
      "@name navmesh.BeginGeneration",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/BeginGeneration",
      "@note This process is highly resource intensive and it's not wise to use during normal gameplay",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "BeginGeneration",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdd this position and normal to the list of walkable positions, used before map generation with @navmesh.BeginGeneration\n",
      "@name navmesh.AddWalkableSeed",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/navmesh/AddWalkableSeed",
      "@param {void} this - no description",
      "@param {Vector} pos - The terrain position.",
      "@param {Vector} dir - The normal of this terrain position.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "navmesh",
    "name": "AddWalkableSeed",
    "typings": [
      "(this: void, pos: Vector, dir: Vector): void"
    ]
  },
  {
    "comments": [
      "\nStops the motion capture.\n",
      "@name motionsensor.Stop",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/Stop",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "Stop",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nThis starts access to the kinect sensor. Note that this usually freezes the game for a couple of seconds.\n",
      "@name motionsensor.Start",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/Start",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "Start",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "@name motionsensor.ProcessPositionTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/ProcessPositionTable",
      "@param {void} this - no description",
      "@param {table} translator - no description",
      "@param {table} sensor - no description",
      "@returns {Vector} - Pos. if !translator.PositionTable then return - {}"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "ProcessPositionTable",
    "typings": [
      "(this: void, translator: table, sensor: table): Vector"
    ]
  },
  {
    "comments": [
      "@name motionsensor.ProcessAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/ProcessAngle",
      "@param {void} this - no description",
      "@param {table} translator - no description",
      "@param {table} sensor - no description",
      "@param {Vector} pos - no description",
      "@param {Angle} ang - no description",
      "@param {table} special_vectors - no description",
      "@param {number} boneid - no description",
      "@param {table} v - no description",
      "@returns {boolean} - Return nil on failure"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "ProcessAngle",
    "typings": [
      "(this: void, translator: table, sensor: table, pos: Vector, ang: Angle, special_vectors: table, boneid: number, v: table): boolean"
    ]
  },
  {
    "comments": [
      "@name motionsensor.ProcessAnglesTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/ProcessAnglesTable",
      "@param {void} this - no description",
      "@param {table} translator - no description",
      "@param {table} sensor - no description",
      "@param {Vector} pos - no description",
      "@param {Angle} rotation - no description",
      "@returns {Angle} - Ang. If !translator.AnglesTable then return - {}"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "ProcessAnglesTable",
    "typings": [
      "(this: void, translator: table, sensor: table, pos: Vector, rotation: Angle): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns true if we have detected that there's a kinect connected to the PC\n",
      "@name motionsensor.IsAvailable",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/IsAvailable",
      "@param {void} this - no description",
      "@returns {boolean} - Connected or not"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "IsAvailable",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturn whether a kinect is connected - and active (ie - Start has been called).\n",
      "@name motionsensor.IsActive",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/IsActive",
      "@param {void} this - no description",
      "@returns {boolean} - Connected and active or not"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "IsActive",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "@name motionsensor.GetSkeleton",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/GetSkeleton",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "GetSkeleton",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns the depth map material.\n",
      "@name motionsensor.GetColourMaterial",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/GetColourMaterial",
      "@param {void} this - no description",
      "@returns {IMaterial} - The material"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "GetColourMaterial",
    "typings": [
      "(this: void): IMaterial"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of vertex that have yet been pushed.\n",
      "@name mesh.VertexCount",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/VertexCount",
      "@param {void} this - no description",
      "@returns {number} - vertexCount"
    ],
    "type": "func",
    "context": "mesh",
    "name": "VertexCount",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "@name motionsensor.ChooseBuilderFromEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/ChooseBuilderFromEntity",
      "@param {void} this - no description",
      "@param {Entity} ent - Entity to choose builder for",
      "@returns {string} - Chosen builder"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "ChooseBuilderFromEntity",
    "typings": [
      "(this: void, ent: Entity): string"
    ]
  },
  {
    "comments": [
      "@name motionsensor.BuildSkeleton",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/motionsensor/BuildSkeleton",
      "@param {void} this - no description",
      "@param {table} translator - no description",
      "@param {Player} player - no description",
      "@param {Angle} rotation - no description",
      "@returns {Vector} - Pos",
      "@returns {Angle} - ang",
      "@returns {sensor} - sensor",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "motionsensor",
    "name": "BuildSkeleton",
    "typings": [
      "(this: void, translator: table, player: Player, rotation: Angle): [Vector, Angle, sensor]"
    ]
  },
  {
    "comments": [
      "\nA table of four numbers. This is used by most shaders in Source to hold tangent information of the vertex ( tangentX, tangentY, tangentZ, tangentHandedness ).\n",
      "@name mesh.UserData",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/UserData",
      "@note It is recommended to use @IMesh:BuildFromTriangles instead of the mesh library.",
      "@param {void} this - no description",
      "@param {number} tangentX - no description",
      "@param {number} tangentY - no description",
      "@param {number} tangentZ - no description",
      "@param {number} tangentHandedness - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "UserData",
    "typings": [
      "(this: void, tangentX: number, tangentY: number, tangentZ: number, tangentHandedness: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the texture coordinates for the next vertex.\nNon-zero values of stage require the currently bound material to support it. For example, any LightmappedGeneric material supports stages 1 and 2 (lightmap texture coordinates).\n",
      "@name mesh.TexCoord",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/TexCoord",
      "@param {void} this - no description",
      "@param {number} stage - The stage of the texture coordinate.",
      "@param {number} u - U coordinate.",
      "@param {number} v - V coordinate.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "TexCoord",
    "typings": [
      "(this: void, stage: number, u: number, v: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the s tangent to be used.\nThis function actually does nothing.\n",
      "@name mesh.TangentS",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/TangentS",
      "@param {void} this - no description",
      "@param {Vector} sTanger - The s tangent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "TangentS",
    "typings": [
      "(this: void, sTanger: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the T tangent to be used.\nThis function actually does nothing.\n",
      "@name mesh.TangentT",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/TangentT",
      "@param {void} this - no description",
      "@param {Vector} tTanger - The t tangent.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "TangentT",
    "typings": [
      "(this: void, tTanger: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the specular map values.\nThis function actually does nothing.\n",
      "@name mesh.Specular",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/Specular",
      "@param {void} this - no description",
      "@param {number} r - The red channel multiplier of the specular map.",
      "@param {number} g - The green channel multiplier of the specular map.",
      "@param {number} b - The blue channel multiplier of the specular map.",
      "@param {number} a - The alpha channel multiplier of the specular map.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "Specular",
    "typings": [
      "(this: void, r: number, g: number, b: number, a: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws a quad using 4 vertices.\n",
      "@name mesh.Quad",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/Quad",
      "@param {void} this - no description",
      "@param {Vector} vertex1 - The first vertex.",
      "@param {Vector} vertex2 - The second vertex.",
      "@param {Vector} vertex3 - The third vertex.",
      "@param {Vector} vertex4 - The fourth vertex.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "Quad",
    "typings": [
      "(this: void, vertex1: Vector, vertex2: Vector, vertex3: Vector, vertex4: Vector): void"
    ]
  },
  {
    "comments": [
      "\nDraws a quad using a position, a normal and the size.\n",
      "@name mesh.QuadEasy",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/QuadEasy",
      "@param {void} this - no description",
      "@param {Vector} position - The center of the quad.",
      "@param {Vector} normal - The normal of the quad.",
      "@param {number} sizeX - X size in pixels.",
      "@param {number} sizeY - Y size in pixels.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "QuadEasy",
    "typings": [
      "(this: void, position: Vector, normal: Vector, sizeX: number, sizeY: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the position to be used for the next vertex.\n",
      "@name mesh.Position",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/Position",
      "@param {void} this - no description",
      "@param {Vector} position - The position of the vertex.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "Position",
    "typings": [
      "(this: void, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the normal to be used for the next vertex.\n",
      "@name mesh.Normal",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/Normal",
      "@param {void} this - no description",
      "@param {Vector} normal - The normal of the vertex.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "Normal",
    "typings": [
      "(this: void, normal: Vector): void"
    ]
  },
  {
    "comments": [
      "\nEnds the mesh and renders it.\n",
      "@name mesh.End",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/End",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "End",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the color to be used for the next vertex.\n",
      "@name mesh.Color",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/Color",
      "@param {void} this - no description",
      "@param {number} r - Red component.",
      "@param {number} g - Green component.",
      "@param {number} b - Blue component.",
      "@param {number} a - Alpha component.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "Color",
    "typings": [
      "(this: void, r: number, g: number, b: number, a: number): void"
    ]
  },
  {
    "comments": [
      "\nPushes the new vertex data onto the render stack.\n",
      "@name mesh.AdvanceVertex",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/AdvanceVertex",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "AdvanceVertex",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nStarts a new dynamic mesh. If an @IMesh type is passed, it will use that mesh instead.\n",
      "@name mesh.Begin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/mesh/Begin",
      "@param {void} this - no description",
      "@param {IMesh} mesh - Mesh to build. This argument can be removed if you wish to build a \"dynamic\" mesh. See examples below.",
      "@param {MATERIAL} primitiveType - Primitive type, see @MATERIAL enum.",
      "@param {number} primiteCount - The amount of primitives.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "mesh",
    "name": "Begin",
    "typings": [
      "(this: void, mesh?: IMesh, primitiveType: MATERIAL, primiteCount: number): void"
    ]
  },
  {
    "comments": [
      "\nParents the menubar to the panel and displays the menubar.\n",
      "@name menubar.ParentTo",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/menubar/ParentTo",
      "@param {void} this - no description",
      "@param {Panel} pnl - The panel to parent to",
      "@returns {void}"
    ],
    "type": "func",
    "context": "menubar",
    "name": "ParentTo",
    "typings": [
      "(this: void, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nChecks if the supplied panel is parent to the menubar\n",
      "@name menubar.IsParent",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/menubar/IsParent",
      "@param {void} this - no description",
      "@param {Panel} pnl - The panel to check",
      "@returns {boolean} - Is parent or not"
    ],
    "type": "func",
    "context": "menubar",
    "name": "IsParent",
    "typings": [
      "(this: void, pnl: Panel): boolean"
    ]
  },
  {
    "comments": [
      "\nCreates the menu bar ( The bar at the top of the screen when holding C or Q in sandbox ) and docks it to the top of the screen. It will not appear.\nCalling this multiple times will **NOT** remove previous panel.\n",
      "@name menubar.Init",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/menubar/Init",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "menubar",
    "name": "Init",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nUsed by \"Demo to Video\" to record the frame.\n",
      "@name menu.RecordFrame",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/menu/RecordFrame",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "menu",
    "name": "RecordFrame",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine from OnBind\n",
      "@name matproxy.Init",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/matproxy/Init",
      "@param {void} this - no description",
      "@param {string} name - no description",
      "@param {string} uname - no description",
      "@param {IMaterial} mat - no description",
      "@param {table} values - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "matproxy",
    "name": "Init",
    "typings": [
      "(this: void, name: string, uname: string, mat: IMaterial, values: table): void"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine from OnBind\n",
      "@name matproxy.Call",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/matproxy/Call",
      "@param {void} this - no description",
      "@param {string} uname - no description",
      "@param {IMaterial} mat - no description",
      "@param {Entity} ent - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "matproxy",
    "name": "Call",
    "typings": [
      "(this: void, uname: string, mat: IMaterial, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled by engine, returns true if we're overriding a proxy\n",
      "@name matproxy.ShouldOverrideProxy",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/matproxy/ShouldOverrideProxy",
      "@param {void} this - no description",
      "@param {string} name - The name of proxy in question",
      "@returns {boolean} - Are we overriding it?"
    ],
    "type": "func",
    "context": "matproxy",
    "name": "ShouldOverrideProxy",
    "typings": [
      "(this: void, name: string): boolean"
    ]
  },
  {
    "comments": [
      "\nAdds a material proxy.\n",
      "@name matproxy.Add",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/matproxy/Add",
      "@param {void} this - no description",
      "@param {MatProxyData} MatProxyData - The information about the proxy. See @MatProxyData structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "matproxy",
    "name": "Add",
    "typings": [
      "(this: void, MatProxyData: MatProxyData): void"
    ]
  },
  {
    "comments": [
      "\nReturns the [hyperbolic tangents](https://en.wikipedia.org/wiki/hyperbolic%20tangents) of the given number.\n",
      "@name math.tanh",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/tanh",
      "@param {void} this - no description",
      "@param {number} num - Angle in radians.",
      "@returns {number} - The hyperbolic tangent of the given angle."
    ],
    "type": "func",
    "context": "math",
    "name": "tanh",
    "typings": [
      "(this: void, num: number): number"
    ]
  },
  {
    "comments": [
      "\nRounds towards zero.\n",
      "@name math.Truncate",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/Truncate",
      "@param {void} this - no description",
      "@param {number} num - The number to truncate",
      "@param {number} digits - The amount of digits to keep after the point.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "math",
    "name": "Truncate",
    "typings": [
      "(this: void, num: number, digits?: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the fraction of where the current time is relative to the start and end times\n",
      "@name math.TimeFraction",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/TimeFraction",
      "@param {void} this - no description",
      "@param {number} start - Start time in seconds",
      "@param {number} end - End time in seconds",
      "@param {number} current - Current time in seconds",
      "@returns {number} - Fraction"
    ],
    "type": "func",
    "context": "math",
    "name": "TimeFraction",
    "typings": [
      "(this: void, start: number, end: number, current: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the [tangent](https://en.wikipedia.org/wiki/tangent%20(trigonometry)) of the given angle.\n",
      "@name math.tan",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/tan",
      "@param {void} this - no description",
      "@param {number} value - Angle in radians",
      "@returns {number} - The tangent of the given angle."
    ],
    "type": "func",
    "context": "math",
    "name": "tan",
    "typings": [
      "(this: void, value: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the square root of the number.\n",
      "@name math.sqrt",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/sqrt",
      "@param {void} this - no description",
      "@param {number} value - Value to get the square root of.",
      "@returns {number} - squareRoot"
    ],
    "type": "func",
    "context": "math",
    "name": "sqrt",
    "typings": [
      "(this: void, value: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the [sine](https://en.wikipedia.org/wiki/sine) of given angle.\n",
      "@name math.sin",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/sin",
      "@param {void} this - no description",
      "@param {number} num - Angle in radians",
      "@returns {number} - Sine for given angle"
    ],
    "type": "func",
    "context": "math",
    "name": "sin",
    "typings": [
      "(this: void, num: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the [hyperbolic sine](https://en.wikipedia.org/wiki/hyperbolic%20sine) of the given angle.\n",
      "@name math.sinh",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/sinh",
      "@param {void} this - no description",
      "@param {number} num - Angle in radians.",
      "@returns {number} - The hyperbolic sine of the given angle."
    ],
    "type": "func",
    "context": "math",
    "name": "sinh",
    "typings": [
      "(this: void, num: number): number"
    ]
  },
  {
    "comments": [
      "\nRounds the given value to the nearest whole number or to the given decimal places.\n",
      "@name math.Round",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/Round",
      "@param {void} this - no description",
      "@param {number} value - The value to round.",
      "@param {number} decimals - The decimal places to round to.",
      "@returns {number} - The rounded value."
    ],
    "type": "func",
    "context": "math",
    "name": "Round",
    "typings": [
      "(this: void, value: number, decimals?: number): number"
    ]
  },
  {
    "comments": [
      "\nRemaps the value from one range to another\n",
      "@name math.Remap",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/Remap",
      "@param {void} this - no description",
      "@param {number} value - The value",
      "@param {number} inMin - The minimum of the initial range",
      "@param {number} inMax - The maximum of the initial range",
      "@param {number} outMin - The minimum of new range",
      "@param {number} outMax - The maximum of new range",
      "@returns {number} - The number in the new range"
    ],
    "type": "func",
    "context": "math",
    "name": "Remap",
    "typings": [
      "(this: void, value: number, inMin: number, inMax: number, outMin: number, outMax: number): number"
    ]
  },
  {
    "comments": [
      "\nWhen called without arguments, returns a uniform pseudo-random real number in the range 0 to 1 which includes 0 but excludes 1.\nWhen called with an integer number m, returns a uniform pseudo-random integer in the range 1 to m inclusive.\nWhen called with two integer numbers m and n, returns a uniform pseudo-random integer in the range m to n inclusive.\nSee also @math.Rand\n",
      "@name math.random",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/random",
      "@param {void} this - no description",
      "@param {number} m - If m is the only parameter: upper limit.\nIf n is also provided: lower limit.\nIf provided, this must be an integer.",
      "@param {number} n - Upper limit.\nIf provided, this must be an integer.",
      "@returns {number} - Random value"
    ],
    "type": "func",
    "context": "math",
    "name": "random",
    "typings": [
      "(this: void, m?: number, n?: number): number"
    ]
  },
  {
    "comments": [
      "\nSeeds the random number generator. The same seed will guarantee the same sequence of numbers each time with @math.random.\nFor shared random values across predicted realms, use @util.SharedRandom.\n",
      "@name math.randomseed",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/randomseed",
      "@warning Incorrect usage of this function will affect *all* random numbers in the game.",
      "@param {void} this - no description",
      "@param {number} seed - The new seed",
      "@returns {void}"
    ],
    "type": "func",
    "context": "math",
    "name": "randomseed",
    "typings": [
      "(this: void, seed: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns a random float between min and max.\nSee also @math.random\n",
      "@name math.Rand",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/Rand",
      "@param {void} this - no description",
      "@param {number} min - The minimum value.",
      "@param {number} max - The maximum value.",
      "@returns {number} - Random float between min and max."
    ],
    "type": "func",
    "context": "math",
    "name": "Rand",
    "typings": [
      "(this: void, min: number, max: number): number"
    ]
  },
  {
    "comments": [
      "\nConverts an angle in degrees to it's equivalent in radians.\n",
      "@name math.rad",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/rad",
      "@param {void} this - no description",
      "@param {number} degrees - The angle measured in degrees.",
      "@returns {number} - radians"
    ],
    "type": "func",
    "context": "math",
    "name": "rad",
    "typings": [
      "(this: void, degrees: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns x raised to the power y.\nIn particular, math.pow(1.0, x) and math.pow(x, 0.0) always return 1.0, even when x is a zero or a NaN. If both x and y are finite, x is negative, and y is not an integer then math.pow(x, y) is undefined.\n",
      "@name math.pow",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/pow",
      "@param {void} this - no description",
      "@param {number} x - Base.",
      "@param {number} y - Exponent.",
      "@returns {number} - y power of x"
    ],
    "type": "func",
    "context": "math",
    "name": "pow",
    "typings": [
      "(this: void, x: number, y: number): number"
    ]
  },
  {
    "comments": [
      "\nNormalizes angle, so it returns value between -180 and 180.\n",
      "@name math.NormalizeAngle",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/NormalizeAngle",
      "@param {void} this - no description",
      "@param {number} angle - The angle to normalize, in degrees.",
      "@returns {number} - The normalized angle, in the range of -180 to 180 degrees."
    ],
    "type": "func",
    "context": "math",
    "name": "NormalizeAngle",
    "typings": [
      "(this: void, angle: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the integral and fractional component of the modulo operation.\n",
      "@name math.modf",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/modf",
      "@param {void} this - no description",
      "@param {number} base - The base value.",
      "@returns {number} - The integral component.",
      "@returns {number} - The fractional component.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "math",
    "name": "modf",
    "typings": [
      "(this: void, base: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the smallest value of all arguments.\n",
      "@name math.min",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/min",
      "@param {void} this - no description",
      "@param {any[]} ...numbers - Numbers to get the smallest from.",
      "@returns {number} - The smallest number"
    ],
    "type": "func",
    "context": "math",
    "name": "min",
    "typings": [
      "(this: void, ...numbers: any[]): number"
    ]
  },
  {
    "comments": [
      "\nReturns the modulus of the specified values. Same as @math.fmod.\n",
      "@name math.mod",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/mod",
      "@param {void} this - no description",
      "@param {number} base - The base value",
      "@param {number} modulator - Modulator",
      "@returns {number} - The calculated modulus"
    ],
    "type": "func",
    "context": "math",
    "name": "mod",
    "typings": [
      "(this: void, base: number, modulator: number): number"
    ]
  },
  {
    "comments": [
      "\nTakes a normalised number and returns the floating point representation.\n",
      "@name math.ldexp",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/ldexp",
      "@param {void} this - no description",
      "@param {number} normalizedFraction - The value to get the normalized fraction and the exponent from.",
      "@param {number} exponent - The value to get the normalized fraction and the exponent from.",
      "@returns {number} - result"
    ],
    "type": "func",
    "context": "math",
    "name": "ldexp",
    "typings": [
      "(this: void, normalizedFraction: number, exponent: number): number"
    ]
  },
  {
    "comments": [
      "\nWith one argument, return the natural logarithm of x (to base e).\nWith two arguments, return the logarithm of x to the given base, calculated as log(x)/log(base).\n",
      "@name math.log",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/log",
      "@param {void} this - no description",
      "@param {number} x - The value to get the base from exponent from.",
      "@param {number} base - The logarithmic base.",
      "@returns {number} - Logarithm of x to the given base"
    ],
    "type": "func",
    "context": "math",
    "name": "log",
    "typings": [
      "(this: void, x: number, base?: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the largest value of all arguments.\n",
      "@name math.max",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/max",
      "@param {void} this - no description",
      "@param {any[]} ...numbers - Numbers to get the largest from",
      "@returns {number} - The largest number"
    ],
    "type": "func",
    "context": "math",
    "name": "max",
    "typings": [
      "(this: void, ...numbers: any[]): number"
    ]
  },
  {
    "comments": [
      "\nReturns the base-10 logarithm of x. This is usually more accurate than math.log(x, 10).\n",
      "@name math.log10",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/log10",
      "@param {void} this - no description",
      "@param {number} x - The value to get the base from exponent from.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "math",
    "name": "log10",
    "typings": [
      "(this: void, x: number): void"
    ]
  },
  {
    "comments": [
      "\nConverts an integer to a binary (base-2) string.\n",
      "@name math.IntToBin",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/IntToBin",
      "@param {void} this - no description",
      "@param {number} int - Number to be converted.",
      "@returns {string} - Binary number string. The length of this will always be a multiple of 3."
    ],
    "type": "func",
    "context": "math",
    "name": "IntToBin",
    "typings": [
      "(this: void, int: number): string"
    ]
  },
  {
    "comments": [
      "\nUsed to split the number value into a normalized fraction and an exponent. Two values are returned: the first is a multiplier in the range 1/2 (inclusive) to 1 (exclusive) and the second is an integer exponent.\nThe result is such that x = m*2^e.\n",
      "@name math.frexp",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/frexp",
      "@param {void} this - no description",
      "@param {number} x - The value to get the normalized fraction and the exponent from.",
      "@returns {number} - m, multiplier - between 0.5 and 1",
      "@returns {number} - e, exponent - always an integer",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "math",
    "name": "frexp",
    "typings": [
      "(this: void, x: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the modulus of the specified values.\nWhile this is similar to the % operator, **it will return a negative value if the first argument is negative**, whereas the % operator will return a *positive* value **even if the first operand is negative**.\n",
      "@name math.fmod",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/fmod",
      "@param {void} this - no description",
      "@param {number} base - The base value.",
      "@param {number} modulator - The modulator.",
      "@returns {number} - The calculated modulus."
    ],
    "type": "func",
    "context": "math",
    "name": "fmod",
    "typings": [
      "(this: void, base: number, modulator: number): number"
    ]
  },
  {
    "comments": [
      "\nFloors or rounds a number down.\n",
      "@name math.floor",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/floor",
      "@param {void} this - no description",
      "@param {number} num - The number to be rounded down.",
      "@returns {number} - floored numbers"
    ],
    "type": "func",
    "context": "math",
    "name": "floor",
    "typings": [
      "(this: void, num: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the x power of the Euler constant *[e](https://en.wikipedia.org/wiki/e%20(mathematical%20constant))*.\n",
      "@name math.exp",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/exp",
      "@param {void} this - no description",
      "@param {number} exponent - The exponent for the function.",
      "@returns {number} - e to the specified power"
    ],
    "type": "func",
    "context": "math",
    "name": "exp",
    "typings": [
      "(this: void, exponent: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the difference between two points in 2D space.\n",
      "@name math.Distance",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/Distance",
      "@param {void} this - no description",
      "@param {number} x1 - X position of first point",
      "@param {number} y1 - Y position of first point",
      "@param {number} x2 - X position of second point",
      "@param {number} y2 - Y position of second point",
      "@returns {number} - Distance between the two points"
    ],
    "type": "func",
    "context": "math",
    "name": "Distance",
    "typings": [
      "(this: void, x1: number, y1: number, x2: number, y2: number): number"
    ]
  },
  {
    "comments": [
      "\nCalculates the progress of a value fraction, taking in to account given easing fractions\n",
      "@name math.EaseInOut",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/EaseInOut",
      "@param {void} this - no description",
      "@param {number} progress - Fraction of the progress to ease",
      "@param {number} easeIn - Fraction of how much easing to begin with",
      "@param {number} easeOut - Fraction of how much easing to end with",
      "@returns {number} - Eased Value"
    ],
    "type": "func",
    "context": "math",
    "name": "EaseInOut",
    "typings": [
      "(this: void, progress: number, easeIn: number, easeOut: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the difference between two points in 2D space. Alias of @math.Distance.\n",
      "@name math.Dist",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/Dist",
      "@param {void} this - no description",
      "@param {number} x1 - X position of first point",
      "@param {number} y1 - Y position of first point",
      "@param {number} x2 - X position of second point",
      "@param {number} y2 - Y position of second point",
      "@returns {number} - Distance between the two points."
    ],
    "type": "func",
    "context": "math",
    "name": "Dist",
    "typings": [
      "(this: void, x1: number, y1: number, x2: number, y2: number): number"
    ]
  },
  {
    "comments": [
      "\nConverts radians to degrees.\n",
      "@name math.deg",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/deg",
      "@param {void} this - no description",
      "@param {number} radians - Value to be converted to degrees.",
      "@returns {number} - degrees"
    ],
    "type": "func",
    "context": "math",
    "name": "deg",
    "typings": [
      "(this: void, radians: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the [cosine](https://en.wikipedia.org/wiki/cosine) of given angle.\n",
      "@name math.cos",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/cos",
      "@param {void} this - no description",
      "@param {number} num - Angle in radians",
      "@returns {number} - Cosine of given angle"
    ],
    "type": "func",
    "context": "math",
    "name": "cos",
    "typings": [
      "(this: void, num: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the [hyperbolic cosine](https://en.wikipedia.org/wiki/hyperbolic%20cosine) of the given angle.\n",
      "@name math.cosh",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/cosh",
      "@param {void} this - no description",
      "@param {number} num - Angle in radians.",
      "@returns {number} - The hyperbolic cosine of the given angle."
    ],
    "type": "func",
    "context": "math",
    "name": "cosh",
    "typings": [
      "(this: void, num: number): number"
    ]
  },
  {
    "comments": [
      "\nClamps a number between a minimum and maximum value\n",
      "@name math.Clamp",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/Clamp",
      "@param {void} this - no description",
      "@param {number} input - The number to clamp.",
      "@param {number} min - The minimum value, this function will never return a number less than this.",
      "@param {number} max - The maximum value, this function will never return a number greater than this.",
      "@returns {number} - The clamped value."
    ],
    "type": "func",
    "context": "math",
    "name": "Clamp",
    "typings": [
      "(this: void, input: number, min: number, max: number): number"
    ]
  },
  {
    "comments": [
      "\nCeils or rounds a number up.\n",
      "@name math.ceil",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/ceil",
      "@param {void} this - no description",
      "@param {number} num - The number to be rounded up.",
      "@returns {number} - ceiled numbers"
    ],
    "type": "func",
    "context": "math",
    "name": "ceil",
    "typings": [
      "(this: void, num: number): number"
    ]
  },
  {
    "comments": [
      "\nBasic code for Bezier-Spline algorithm, helper function for @math.BSplinePoint.\n",
      "@name math.calcBSplineN",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/calcBSplineN",
      "@internal Use @math.BSplinePoint instead.",
      "@bug  Sending in a value < 1 will result in an infinite loop.",
      "@param {void} this - no description",
      "@param {number} i - no description",
      "@param {number} k - no description",
      "@param {number} t - no description",
      "@param {number} tinc - no description",
      "@returns {number} - no description"
    ],
    "type": "func",
    "context": "math",
    "name": "calcBSplineN",
    "typings": [
      "(this: void, i: number, k: number, t: number, tinc: number): number"
    ]
  },
  {
    "comments": [
      "\nBasic code for [Bézier-Spline](https://en.wikipedia.org/wiki/B%C3%A9zier%20curve) algorithm.\n",
      "@name math.BSplinePoint",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/BSplinePoint",
      "@param {void} this - no description",
      "@param {number} tDiff - From 0 to 1, where alongside the spline the point will be.",
      "@param {Vector[]} tPoints - A table of @Vector types. The amount cannot be less than 4.",
      "@param {number} tMax - Just leave this at 1.",
      "@returns {Vector} - Point on Bezier curve, related to tDiff."
    ],
    "type": "func",
    "context": "math",
    "name": "BSplinePoint",
    "typings": [
      "(this: void, tDiff: number, tPoints: Vector[], tMax: number): Vector"
    ]
  },
  {
    "comments": [
      "\nConverts a binary string into a number.\n",
      "@name math.BinToInt",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/BinToInt",
      "@param {void} this - no description",
      "@param {string} str - Binary string to convert",
      "@returns {number} - Base 10 number."
    ],
    "type": "func",
    "context": "math",
    "name": "BinToInt",
    "typings": [
      "(this: void, str: string): number"
    ]
  },
  {
    "comments": [
      "\n[atan2](https://en.wikipedia.org/wiki/atan2) functions like @math.atan(y / x), except it also takes into account the quadrant of the angle and so doesn't have a limited range of output.\n",
      "@name math.atan2",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/atan2",
      "@note The Y argument comes first!",
      "@param {void} this - no description",
      "@param {number} y - Y coordinate.",
      "@param {number} x - X coordinate.",
      "@returns {number} - The angle of the line from (0, 0) to (x, y) in radians, in the range -pi to pi."
    ],
    "type": "func",
    "context": "math",
    "name": "atan2",
    "typings": [
      "(this: void, y: number, x: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the [arc tangent](https://en.wikipedia.org/wiki/arc%20tangent) of the given number.\n",
      "@name math.atan",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/atan",
      "@param {void} this - no description",
      "@param {number} normal - Tangent value.",
      "@returns {number} - An angle in radians, in the range -pi/2 to pi/2, which has the given tangent."
    ],
    "type": "func",
    "context": "math",
    "name": "atan",
    "typings": [
      "(this: void, normal: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the [arc sine](https://en.wikipedia.org/wiki/arc%20sine) of the given number.\n",
      "@name math.asin",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/asin",
      "@param {void} this - no description",
      "@param {number} normal - Sine value in the range of -1 to 1.",
      "@returns {number} - An angle in radians, in the range -pi/2 to pi/2, which has the given sine value.\n[nan](https://wiki.garrysmod.com/page/nan) if the argument is out of range."
    ],
    "type": "func",
    "context": "math",
    "name": "asin",
    "typings": [
      "(this: void, normal: number): number"
    ]
  },
  {
    "comments": [
      "\nIncrements an angle towards another by specified rate.\n",
      "@name math.ApproachAngle",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/ApproachAngle",
      "@note This function is for numbers representing angles (0-360), NOT @Angle type objects!",
      "@param {void} this - no description",
      "@param {number} currentAngle - The current angle to increase",
      "@param {number} targetAngle - The angle to increase towards",
      "@param {number} rate - The amount to approach the target angle by",
      "@returns {number} - Modified angle"
    ],
    "type": "func",
    "context": "math",
    "name": "ApproachAngle",
    "typings": [
      "(this: void, currentAngle: number, targetAngle: number, rate: number): number"
    ]
  },
  {
    "comments": [
      "\nGradually approaches the target value by the specified amount.\n",
      "@name math.Approach",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/Approach",
      "@param {void} this - no description",
      "@param {number} current - The value we're currently at.",
      "@param {number} target - The target value. This function will never overshoot this value.",
      "@param {number} change - The amount that the current value is allowed to change by to approach the target. (It makes no difference whether this is positive or negative.)",
      "@returns {number} - New current value, closer to the target than it was previously."
    ],
    "type": "func",
    "context": "math",
    "name": "Approach",
    "typings": [
      "(this: void, current: number, target: number, change: number): number"
    ]
  },
  {
    "comments": [
      "\nCalculates the difference between two angles.\n",
      "@name math.AngleDifference",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/AngleDifference",
      "@param {void} this - no description",
      "@param {number} a - The first angle.",
      "@param {number} b - The second angle.",
      "@returns {number} - The difference between the angles between -180 and 180"
    ],
    "type": "func",
    "context": "math",
    "name": "AngleDifference",
    "typings": [
      "(this: void, a: number, b: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the [arc cosine](https://en.wikipedia.org/wiki/arc%20cosine) of the given number.\n",
      "@name math.acos",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/acos",
      "@param {void} this - no description",
      "@param {number} cos - Cosine value in range of -1 to 1.",
      "@returns {number} - An angle in radians, between 0 and pi, which has the given cos value.\n[nan](https://wiki.garrysmod.com/page/nan) if the argument is out of range."
    ],
    "type": "func",
    "context": "math",
    "name": "acos",
    "typings": [
      "(this: void, cos: number): number"
    ]
  },
  {
    "comments": [
      "\nCalculates the absolute value of a number (effectively removes any negative sign).\n",
      "@name math.abs",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/math/abs",
      "@param {void} this - no description",
      "@param {number} x - The number to get the absolute value of.",
      "@returns {number} - absolute_value"
    ],
    "type": "func",
    "context": "math",
    "name": "abs",
    "typings": [
      "(this: void, x: number): number"
    ]
  },
  {
    "comments": [
      "\nSets the material used by the panel.\n",
      "@name Material:SetMaterial",
      "@wiki https://wiki.garrysmod.com/page/Material/SetMaterial",
      "@note If the material is not showing up as the correct size, try setting the Material panel's *AutoSize* variable to **false**",
      "@param {Material} this - no description",
      "@param {string} matname - The file path of the material to set (relative to \"garrysmod/materials/\").",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Material",
    "extends": [
      "Button"
    ],
    "name": "SetMaterial",
    "typings": [
      "(this: Material, matname: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the alpha value of the Material panel.\n",
      "@name Material:SetAlpha",
      "@wiki https://wiki.garrysmod.com/page/Material/SetAlpha",
      "@param {Material} this - no description",
      "@param {number} alpha - The alpha value, from 0 to 255.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "Material",
    "extends": [
      "Button"
    ],
    "name": "SetAlpha",
    "typings": [
      "(this: Material, alpha: number): void"
    ]
  },
  {
    "comments": [
      "\nGets computed the width and height of the markupobject.\n",
      "@name MarkupObject:Size",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/MarkupObject/Size",
      "@param {MarkupObject} this - no description",
      "@returns {number} - The computed width.",
      "@returns {number} - The computed height.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "MarkupObject",
    "name": "Size",
    "typings": [
      "(this: MarkupObject): [number, number]"
    ]
  },
  {
    "comments": [
      "\nGets computed the height of the markupobject.\n",
      "@name MarkupObject:GetHeight",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/MarkupObject/GetHeight",
      "@param {MarkupObject} this - no description",
      "@returns {number} - The computed height."
    ],
    "type": "class",
    "context": "MarkupObject",
    "name": "GetHeight",
    "typings": [
      "(this: MarkupObject): number"
    ]
  },
  {
    "comments": [
      "\nGets computed the width of the markupobject.\n",
      "@name MarkupObject:GetWidth",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/MarkupObject/GetWidth",
      "@param {MarkupObject} this - no description",
      "@returns {number} - The computed width."
    ],
    "type": "class",
    "context": "MarkupObject",
    "name": "GetWidth",
    "typings": [
      "(this: MarkupObject): number"
    ]
  },
  {
    "comments": [
      "\nDraws the computed markupobject to the screen.\n",
      "@name MarkupObject:Draw",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/MarkupObject/Draw",
      "@param {MarkupObject} this - no description",
      "@param {number} xOffset - The X coordinate on the screen.",
      "@param {number} yOffset - The Y coordinate on the screen.",
      "@param {TEXT_ALIGN} xAlign - The alignment of the x coordinate using @TEXT_ALIGN enum",
      "@param {TEXT_ALIGN} yAlign - The alignment of the y coordinate using @TEXT_ALIGN enum",
      "@param {number} alphaoverride - Sets the alpha of all drawn objects to this.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "MarkupObject",
    "name": "Draw",
    "typings": [
      "(this: MarkupObject, xOffset: number, yOffset: number, xAlign: TEXT_ALIGN, yAlign: TEXT_ALIGN, alphaoverride?: number): void"
    ]
  },
  {
    "comments": [
      "\nParses markup into a @ MarkupObject type. Currently, this only supports fonts and colors as demonstrated in the example.\n",
      "@name markup.Parse",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/markup/Parse",
      "@param {void} this - no description",
      "@param {string} markup - The markup to be parsed.",
      "@param {number} maxwidth - The max width of the output",
      "@returns {MarkupObject} - The parsed markup object ready to be drawn."
    ],
    "type": "func",
    "context": "markup",
    "name": "Parse",
    "typings": [
      "(this: void, markup: string, maxwidth: number): MarkupObject"
    ]
  },
  {
    "comments": [
      "\nReturns true if the list contains the given key.\nFor a function that looks for values and not keys see @list.Contains.\n",
      "@name list.HasEntry",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/list/HasEntry",
      "@param {void} this - no description",
      "@param {string} list - List to search through",
      "@param {any} key - The key to test",
      "@returns {boolean} - Returns true if the list contains the key, false otherwise"
    ],
    "type": "func",
    "context": "list",
    "name": "HasEntry",
    "typings": [
      "(this: void, list: string, key: any): boolean"
    ]
  },
  {
    "comments": [
      "\nSets a specific position in the named list to a value.\n",
      "@name list.Set",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/list/Set",
      "@param {void} this - no description",
      "@param {string} identifier - The list identifier",
      "@param {any} key - The key in the list to set",
      "@param {any} item - The item to set to the list as key",
      "@returns {void}"
    ],
    "type": "func",
    "context": "list",
    "name": "Set",
    "typings": [
      "(this: void, identifier: string, key: any, item: any): void"
    ]
  },
  {
    "comments": [
      "\nReturns the actual table of the list stored at identifier. Modifying this will affect the stored list\n",
      "@name list.GetForEdit",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/list/GetForEdit",
      "@param {void} this - no description",
      "@param {string} identifier - The list identifier",
      "@returns {table} - The actual list"
    ],
    "type": "func",
    "context": "list",
    "name": "GetForEdit",
    "typings": [
      "(this: void, identifier: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns a copy of the list stored at identifier\n",
      "@name list.Get",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/list/Get",
      "@param {void} this - no description",
      "@param {string} identifier - The list identifier",
      "@returns {table} - The copy of the list"
    ],
    "type": "func",
    "context": "list",
    "name": "Get",
    "typings": [
      "(this: void, identifier: string): table"
    ]
  },
  {
    "comments": [
      "\nAdds an item to a named list\n",
      "@name list.Add",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/list/Add",
      "@param {void} this - no description",
      "@param {string} identifier - The list identifier",
      "@param {any} item - The item to add to the list",
      "@returns {void}"
    ],
    "type": "func",
    "context": "list",
    "name": "Add",
    "typings": [
      "(this: void, identifier: string, item: any): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if the list contains the value. (as a value - not a key)\nFor a function that looks for a key and not a value see @list.HasEntry.\n",
      "@name list.Contains",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/list/Contains",
      "@param {void} this - no description",
      "@param {string} list - List to search through",
      "@param {any} value - The value to test",
      "@returns {boolean} - Returns true if the list contains the value, false otherwise"
    ],
    "type": "func",
    "context": "list",
    "name": "Contains",
    "typings": [
      "(this: void, list: string, value: any): boolean"
    ]
  },
  {
    "comments": [
      "\nRetrieves the translated version of inputted string. Useful for concentrating multiple translated strings.\n",
      "@name language.GetPhrase",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/language/GetPhrase",
      "@param {void} this - no description",
      "@param {string} phrase - The phrase to translate",
      "@returns {string} - The translated phrase, or the input string if no translation was found"
    ],
    "type": "func",
    "context": "language",
    "name": "GetPhrase",
    "typings": [
      "(this: void, phrase: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns the size of a kill icon.\n",
      "@name killicon.GetSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/killicon/GetSize",
      "@param {void} this - no description",
      "@param {string} name - Classname of the kill icon",
      "@returns {number} - Width of the kill icon",
      "@returns {number} - Height of the kill icon",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "killicon",
    "name": "GetSize",
    "typings": [
      "(this: void, name: string): [number, number]"
    ]
  },
  {
    "comments": [
      "\nAdds a language item. Language placeholders preceded with \"#\" are replaced with full text in Garry's Mod once registered with this function.\n",
      "@name language.Add",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/language/Add",
      "@param {void} this - no description",
      "@param {string} placeholder - The key for this phrase, without the preceding \"#\".",
      "@param {string} fulltext - The phrase that should be displayed whenever this key is used.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "language",
    "name": "Add",
    "typings": [
      "(this: void, placeholder: string, fulltext: string): void"
    ]
  },
  {
    "comments": [
      "\nChecks if kill icon exists for given class.\n",
      "@name killicon.Exists",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/killicon/Exists",
      "@param {void} this - no description",
      "@param {string} cls - The class to test",
      "@returns {boolean} - Returns true if kill icon exists"
    ],
    "type": "func",
    "context": "killicon",
    "name": "Exists",
    "typings": [
      "(this: void, cls: string): boolean"
    ]
  },
  {
    "comments": [
      "\nDraws a kill icon.\n",
      "@name killicon.Draw",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/killicon/Draw",
      "@param {void} this - no description",
      "@param {number} x - X coordinate of the icon",
      "@param {number} y - Y coordinate of the icon",
      "@param {string} name - Classname of the kill icon",
      "@param {number} alpha - Alpha/transparency value ( 0 - 255 ) of the icon",
      "@returns {void}"
    ],
    "type": "func",
    "context": "killicon",
    "name": "Draw",
    "typings": [
      "(this: void, x: number, y: number, name: string, alpha: number): void"
    ]
  },
  {
    "comments": [
      "\nCreates kill icon from existing one.\n",
      "@name killicon.AddAlias",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/killicon/AddAlias",
      "@param {void} this - no description",
      "@param {string} new_class - New class of the kill icon",
      "@param {string} existing_class - Already existing kill icon class",
      "@returns {void}"
    ],
    "type": "func",
    "context": "killicon",
    "name": "AddAlias",
    "typings": [
      "(this: void, new_class: string, existing_class: string): void"
    ]
  },
  {
    "comments": [
      "\nAdds kill icon for given weapon/entity class using special font.\n",
      "@name killicon.AddFont",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/killicon/AddFont",
      "@param {void} this - no description",
      "@param {string} cls - Weapon or entity class",
      "@param {string} font - Font to be used",
      "@param {string} symbol - The symbol to be used",
      "@param {Color} color - Color of the killicon",
      "@returns {void}"
    ],
    "type": "func",
    "context": "killicon",
    "name": "AddFont",
    "typings": [
      "(this: void, cls: string, font: string, symbol: string, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nCreates new kill icon using a texture.\n",
      "@name killicon.Add",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/killicon/Add",
      "@param {void} this - no description",
      "@param {string} cls - Weapon or entity class",
      "@param {string} texture - Path to the texture",
      "@param {Color} color - Color of the kill icon",
      "@returns {void}"
    ],
    "type": "func",
    "context": "killicon",
    "name": "Add",
    "typings": [
      "(this: void, cls: string, texture: string, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nReturn table fields:\n* 0 (ref) (number): first IR ref for the snapshot\n* 1 (nslots) (number): the number of valid slots\n* all indexes except first 2 and last (there might not be any of these): the snapshot map\n* last index in table (number): -16777216 (255 << 24)\n",
      "@name jit.util.tracesnap",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.tracesnap",
      "@param {void} this - no description",
      "@param {number} tr - trace index to retrieve snapshot for (gotten via @jit.attach)",
      "@param {number} sn - snapshot index for trace (starting from 0 to nexit - 1, nexit gotten via @jit.util.traceinfo)",
      "@returns {table} - snapshot"
    ],
    "type": "func",
    "context": "jit.util",
    "name": "tracesnap",
    "typings": [
      "(this: void, tr: number, sn: number): table"
    ]
  },
  {
    "comments": [
      "@name jit.util.tracemc",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.tracemc",
      "@param {void} this - no description",
      "@param {number} tr - no description",
      "@returns {string} - mcode",
      "@returns {number} - address",
      "@returns {number} - loop",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "jit.util",
    "name": "tracemc",
    "typings": [
      "(this: void, tr: number): [string, number, number]"
    ]
  },
  {
    "comments": [
      "@name jit.util.traceir",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.traceir",
      "@param {void} this - no description",
      "@param {number} tr - no description",
      "@param {number} index - no description",
      "@returns {number} - m",
      "@returns {number} - ot",
      "@returns {number} - op1",
      "@returns {number} - op2",
      "@returns {number} - prev",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "jit.util",
    "name": "traceir",
    "typings": [
      "(this: void, tr: number, index: number): [number, number, number, number, number]"
    ]
  },
  {
    "comments": [
      "@name jit.util.tracek",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.tracek",
      "@param {void} this - no description",
      "@param {number} tr - no description",
      "@param {number} index - no description",
      "@returns {any} - k",
      "@returns {number} - t",
      "@returns {number} - slot; optional",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "jit.util",
    "name": "tracek",
    "typings": [
      "(this: void, tr: number, index: number): [any, number, number]"
    ]
  },
  {
    "comments": [
      "\nReturn table fields:\n* link (number): the linked trace (0 for link types: none, return, interpreter)\n* nk (number): the lowest IR constant (???)\n* nins (number): the next IR instruction (???)\n* linktype (string): the link type (none, root, loop, tail-recursion, up-recursion, down-recursion, interpreter, return)\n* nexit (number): number of snapshots (for use with @jit.util.tracesnap)\n",
      "@name jit.util.traceinfo",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.traceinfo",
      "@param {void} this - no description",
      "@param {number} trace - trace index to retrieve info for (gotten via @jit.attach)",
      "@returns {table} - trace info"
    ],
    "type": "func",
    "context": "jit.util",
    "name": "traceinfo",
    "typings": [
      "(this: void, trace: number): table"
    ]
  },
  {
    "comments": [
      "@name jit.util.traceexitstub",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.traceexitstub",
      "@param {void} this - no description",
      "@param {number} exitno - exit number to retrieve exit stub address from (gotten via @jit.attach with the texit event)",
      "@returns {number} - exitstub trace address"
    ],
    "type": "func",
    "context": "jit.util",
    "name": "traceexitstub",
    "typings": [
      "(this: void, exitno: number): number"
    ]
  },
  {
    "comments": [
      "\nGets the address of a function from a list of 20 functions, for the list see [Ircalladdr Functions](https://wiki.garrysmod.com/page/Ircalladdr%20Functions)\n",
      "@name jit.util.ircalladdr",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.ircalladdr",
      "@warning This function isn't officially documented on LuJIT wiki, use it at your own risk.",
      "@param {void} this - no description",
      "@param {number} index - The index of the function address to get from the ircalladdr func array (starting from 0)",
      "@returns {number} - The address of the function"
    ],
    "type": "func",
    "context": "jit.util",
    "name": "ircalladdr",
    "typings": [
      "(this: void, index: number): number"
    ]
  },
  {
    "comments": [
      "\nDoes the exact same thing as debug.getupvalue except it only returns the name, not the name and the object. The upvalue indexes also start at 0 rather than 1, so doing jit.util.funcuvname(func, 0) will get you the same name as debug.getupvalue(func, 1)\n",
      "@name jit.util.funcuvname",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.funcuvname",
      "@warning This function isn't officially documented on LuJIT wiki, use it at your own risk.",
      "@param {void} this - no description",
      "@param {function} func - Function to get the upvalue indexed from",
      "@param {number} index - The upvalue index, starting from 0",
      "@returns {string} - The function returns nil if there is no upvalue with the given index, otherwise the name of the upvalue is returned"
    ],
    "type": "func",
    "context": "jit.util",
    "name": "funcuvname",
    "typings": [
      "(this: void, func: UnknownFunc, index: number): string"
    ]
  },
  {
    "comments": [
      "\nGets a constant at a certain index in a function.\n",
      "@name jit.util.funck",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.funck",
      "@note Numbers constants goes from 0 (included) to n-1, n being the value of nconsts in @jit.util.funcinfo in other words, the consts goes from (nconsts-1) to -n",
      "@note This function only works for Lua defined functions.",
      "@note This will return a @proto type for functions that are created inside the target function - see Example 2.",
      "@warning This function isn't officially documented on LuJIT wiki, use it at your own risk.",
      "@param {void} this - no description",
      "@param {function} func - Function to get constant from",
      "@param {number} index - Constant index (counting down from the top of the function at -1)",
      "@returns {any} - The constant found."
    ],
    "type": "func",
    "context": "jit.util",
    "name": "funck",
    "typings": [
      "(this: void, func: UnknownFunc, index: number): any"
    ]
  },
  {
    "comments": [
      "\nRetrieves LuaJIT information about a given function, similarly to @debug.getinfo. Possible table fields:\n* linedefined: as for @debug.getinfo\n* lastlinedefined: as for @debug.getinfo\n* params: the number of parameters the function takes\n* stackslots: the number of stack slots the function's local variable use\n* upvalues: the number of upvalues the function uses\n* bytecodes: the number of bytecodes it the compiled function\n* gcconsts: the number of garbage collectable constants\n* nconsts: the number of lua_Number (double) constants\n* children: Boolean representing whether the function creates closures\n* currentline: as for @debug.getinfo\n* isvararg: if the function is a vararg function\n* source: as for @debug.getinfo\n* loc: a string describing the source and currentline, like \":\"\n* ffid: the fast function id of the function (if it is one). In this case only upvalues above and addr below are valid\n* addr: the address of the function (if it is not a Lua function). If it's a C function rather than a fast function, only upvalues above is valid*\n",
      "@name jit.util.funcinfo",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.funcinfo",
      "@param {void} this - no description",
      "@param {function} func - Function or Proto to retrieve info about.",
      "@param {number} pos - no description",
      "@returns {table} - Information about the supplied function/proto."
    ],
    "type": "func",
    "context": "jit.util",
    "name": "funcinfo",
    "typings": [
      "(this: void, func: UnknownFunc, pos?: number): table"
    ]
  },
  {
    "comments": [
      "\nReturns bytecode of a function at a position.\n",
      "@name jit.util.funcbc",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/util.funcbc",
      "@param {void} this - no description",
      "@param {function} func - Function to retrieve bytecode from.",
      "@param {number} pos - Position of the bytecode to retrieve.",
      "@returns {number} - bytecode instruction",
      "@returns {number} - bytecode opcode",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "jit.util",
    "name": "funcbc",
    "typings": [
      "(this: void, func: UnknownFunc, pos: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the status of the JIT compiler and the current optimizations enabled.\n",
      "@name jit.status",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/status",
      "@param {void} this - no description",
      "@returns {boolean} - Is JIT enabled",
      "@returns {any} - Strings for CPU-specific features and enabled optimizations",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "jit",
    "name": "status",
    "typings": [
      "(this: void): [boolean, any]"
    ]
  },
  {
    "comments": [
      "\nJIT compiler optimization control. The opt sub-module provides the backend for the -O command line LuaJIT option.\nYou can also use it programmatically, e.g.:\n```\njit.opt.start(2) -- same as -O2\njit.opt.start(\"-dce\")\njit.opt.start(\"hotloop=10\", \"hotexit=2\")\n```\n",
      "@name jit.opt.start",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/opt.start",
      "@param {void} this - no description",
      "@param {any[]} ...args - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "jit.opt",
    "name": "start",
    "typings": [
      "(this: void, ...args: any[]): void"
    ]
  },
  {
    "comments": [
      "\nEnables LuaJIT Lua compilation.\n",
      "@name jit.on",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/on",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "jit",
    "name": "on",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nDisables LuaJIT Lua compilation.\n",
      "@name jit.off",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/off",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "jit",
    "name": "off",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nFlushes the whole cache of compiled code.\n",
      "@name jit.flush",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/flush",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "jit",
    "name": "flush",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nYou can attach callbacks to a number of compiler events with jit.attach. The callback can be called:\n*when a function has been compiled to bytecode (\"bc\");\n*when trace recording starts or stops (\"trace\");\n*as a trace is being recorded (\"record\");\n*or when a trace exits through a side exit (\"texit\").\nSet a callback with jit.attach(callback, \"event\") and clear the same callback with jit.attach(callback)\n",
      "@name jit.attach",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/jit/attach",
      "@warning This function isn't officially documented on LuJIT wiki, use it at your own risk.",
      "@param {void} this - no description",
      "@param {any} callback - The callback function.\nThe arguments passed to the callback depend on the event being reported:\n*\"bc\":\n*\"trace\":\n*\"record\":\n*\"texit\":",
      "@param {string} event - The event to hook into.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "jit",
    "name": "attach",
    "typings": [
      "(this: void, callback: any, event: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the width of the video stream.\n",
      "@name IVideoWriter:Width",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IVideoWriter/Width",
      "@param {IVideoWriter} this - no description",
      "@returns {number} - width"
    ],
    "type": "class",
    "context": "IVideoWriter",
    "name": "Width",
    "typings": [
      "(this: IVideoWriter): number"
    ]
  },
  {
    "comments": [
      "\nSets whether to record sound or not.\n",
      "@name IVideoWriter:SetRecordSound",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IVideoWriter/SetRecordSound",
      "@param {IVideoWriter} this - no description",
      "@param {boolean} record - Record.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IVideoWriter",
    "name": "SetRecordSound",
    "typings": [
      "(this: IVideoWriter, record: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns the height of the video stream.\n",
      "@name IVideoWriter:Height",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IVideoWriter/Height",
      "@param {IVideoWriter} this - no description",
      "@returns {number} - height"
    ],
    "type": "class",
    "context": "IVideoWriter",
    "name": "Height",
    "typings": [
      "(this: IVideoWriter): number"
    ]
  },
  {
    "comments": [
      "\nEnds the video recording and dumps it to disk.\n",
      "@name IVideoWriter:Finish",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IVideoWriter/Finish",
      "@param {IVideoWriter} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IVideoWriter",
    "name": "Finish",
    "typings": [
      "(this: IVideoWriter): void"
    ]
  },
  {
    "comments": [
      "\nAdds the current framebuffer to the video stream.\n",
      "@name IVideoWriter:AddFrame",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IVideoWriter/AddFrame",
      "@param {IVideoWriter} this - no description",
      "@param {number} frameTime - Usually set to what @FrameTime function is, or simply 1/fps.",
      "@param {boolean} downsample - If true it will downsample the whole screenspace to the videos width and height, otherwise it will just record from the top left corner to the given width and height and therefor not the whole screen.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IVideoWriter",
    "name": "AddFrame",
    "typings": [
      "(this: IVideoWriter, frameTime: number, downsample: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns the modified width of the texture, this value may be affected by mipmapping and other factors.\n",
      "@name ITexture:Width",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ITexture/Width",
      "@param {ITexture} this - no description",
      "@returns {number} - width"
    ],
    "type": "class",
    "context": "ITexture",
    "name": "Width",
    "typings": [
      "(this: ITexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the texture is the error texture (pink and black checkerboard pattern).\n",
      "@name ITexture:IsErrorTexture",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ITexture/IsErrorTexture",
      "@param {ITexture} this - no description",
      "@returns {boolean} - Whether the texture is the error texture or not."
    ],
    "type": "class",
    "context": "ITexture",
    "name": "IsErrorTexture",
    "typings": [
      "(this: ITexture): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the texture is valid. (i.e. was loaded successfully or not)\n",
      "@name ITexture:IsError",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ITexture/IsError",
      "@note The \"error\" texture is a valid texture, and therefore this function will return false when used on it. Use @ITexture:IsErrorTexture, instead.",
      "@param {ITexture} this - no description",
      "@returns {boolean} - Whether the texture was loaded successfully or not."
    ],
    "type": "class",
    "context": "ITexture",
    "name": "IsError",
    "typings": [
      "(this: ITexture): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the modified height of the texture, this value may be affected by mipmapping and other factors.\n",
      "@name ITexture:Height",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ITexture/Height",
      "@param {ITexture} this - no description",
      "@returns {number} - height"
    ],
    "type": "class",
    "context": "ITexture",
    "name": "Height",
    "typings": [
      "(this: ITexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the texture, in most cases the path.\n",
      "@name ITexture:GetName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ITexture/GetName",
      "@param {ITexture} this - no description",
      "@returns {string} - name"
    ],
    "type": "class",
    "context": "ITexture",
    "name": "GetName",
    "typings": [
      "(this: ITexture): string"
    ]
  },
  {
    "comments": [
      "\nReturns the true unmodified width of the texture.\n",
      "@name ITexture:GetMappingWidth",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ITexture/GetMappingWidth",
      "@param {ITexture} this - no description",
      "@returns {number} - width"
    ],
    "type": "class",
    "context": "ITexture",
    "name": "GetMappingWidth",
    "typings": [
      "(this: ITexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the true unmodified height of the texture.\n",
      "@name ITexture:GetMappingHeight",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ITexture/GetMappingHeight",
      "@param {ITexture} this - no description",
      "@returns {number} - height"
    ],
    "type": "class",
    "context": "ITexture",
    "name": "GetMappingHeight",
    "typings": [
      "(this: ITexture): number"
    ]
  },
  {
    "comments": [
      "\nReturns the color of the specified pixel, only works for textures created from PNG files.\n",
      "@name ITexture:GetColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ITexture/GetColor",
      "@bug #2407 The returned color will not have the color metatable.",
      "@param {ITexture} this - no description",
      "@param {number} x - The X coordinate.",
      "@param {number} y - The Y coordinate.",
      "@returns {IColor} - The color of the pixel as a @IColor structure."
    ],
    "type": "class",
    "context": "ITexture",
    "name": "GetColor",
    "typings": [
      "(this: ITexture, x: number, y: number): IColor"
    ]
  },
  {
    "comments": [
      "\nInvokes the generator of the texture. Reloads file based textures from disk and clears render target textures.\n",
      "@name ITexture:Download",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ITexture/Download",
      "@param {ITexture} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ITexture",
    "name": "Download",
    "typings": [
      "(this: ITexture): void"
    ]
  },
  {
    "comments": [
      "\nWrites a @Vector type to the save object.\n",
      "@name ISave:WriteVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ISave/WriteVector",
      "@param {ISave} this - no description",
      "@param {Vector} vec - The vector to write.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ISave",
    "name": "WriteVector",
    "typings": [
      "(this: ISave, vec: Vector): void"
    ]
  },
  {
    "comments": [
      "\nWrites a @string type to the save object.\n",
      "@name ISave:WriteString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ISave/WriteString",
      "@param {ISave} this - no description",
      "@param {string} str - The string to write. Maximum length is 1024.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ISave",
    "name": "WriteString",
    "typings": [
      "(this: ISave, str: string): void"
    ]
  },
  {
    "comments": [
      "\nWrites an integer @number type to the save object.\n",
      "@name ISave:WriteInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ISave/WriteInt",
      "@param {ISave} this - no description",
      "@param {number} int - The integer number to write.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ISave",
    "name": "WriteInt",
    "typings": [
      "(this: ISave, int: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites a floating point @number type to the save object.\n",
      "@name ISave:WriteFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ISave/WriteFloat",
      "@param {ISave} this - no description",
      "@param {number} float - The floating point number to write.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ISave",
    "name": "WriteFloat",
    "typings": [
      "(this: ISave, float: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites an @Entity type to the save object.\n",
      "@name ISave:WriteEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ISave/WriteEntity",
      "@param {ISave} this - no description",
      "@param {Entity} ent - The entity to write.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ISave",
    "name": "WriteEntity",
    "typings": [
      "(this: ISave, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nWrites a @boolean type to the save object.\n",
      "@name ISave:WriteBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ISave/WriteBool",
      "@param {ISave} this - no description",
      "@param {boolean} bool - The boolean to write.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ISave",
    "name": "WriteBool",
    "typings": [
      "(this: ISave, bool: boolean): void"
    ]
  },
  {
    "comments": [
      "\nWrites an @Angle type to the save object.\n",
      "@name ISave:WriteAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ISave/WriteAngle",
      "@param {ISave} this - no description",
      "@param {Angle} ang - The angle to write.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ISave",
    "name": "WriteAngle",
    "typings": [
      "(this: ISave, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nStarts a new block of data that you can write to inside current block. Blocks **must** be ended with @ISave:EndBlock.\n",
      "@name ISave:StartBlock",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ISave/StartBlock",
      "@param {ISave} this - no description",
      "@param {string} name - Name of the new block. Used for determining which block is which, returned by @IRestore:StartBlock during game load.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ISave",
    "name": "StartBlock",
    "typings": [
      "(this: ISave, name: string): void"
    ]
  },
  {
    "comments": [
      "\nLoads next block of data to be read inside current block. Blocks **must** be ended with @IRestore:EndBlock.\n",
      "@name IRestore:StartBlock",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IRestore/StartBlock",
      "@param {IRestore} this - no description",
      "@returns {string} - The name of the next data block to be read."
    ],
    "type": "class",
    "context": "IRestore",
    "name": "StartBlock",
    "typings": [
      "(this: IRestore): string"
    ]
  },
  {
    "comments": [
      "\nEnds current data block started with @ISave:StartBlock and returns to the parent block.\nTo avoid all sorts of errors, you **must** end all blocks you start.\n",
      "@name ISave:EndBlock",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ISave/EndBlock",
      "@param {ISave} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ISave",
    "name": "EndBlock",
    "typings": [
      "(this: ISave): void"
    ]
  },
  {
    "comments": [
      "\nReads next bytes from the restore object as a @Vector type.\n",
      "@name IRestore:ReadVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IRestore/ReadVector",
      "@param {IRestore} this - no description",
      "@returns {Vector} - The read vector."
    ],
    "type": "class",
    "context": "IRestore",
    "name": "ReadVector",
    "typings": [
      "(this: IRestore): Vector"
    ]
  },
  {
    "comments": [
      "\nReads next bytes from the restore object as a @string type.\n",
      "@name IRestore:ReadString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IRestore/ReadString",
      "@param {IRestore} this - no description",
      "@returns {string} - The read string. Maximum length is 1024."
    ],
    "type": "class",
    "context": "IRestore",
    "name": "ReadString",
    "typings": [
      "(this: IRestore): string"
    ]
  },
  {
    "comments": [
      "\nReads next bytes from the restore object as an integer @number type.\n",
      "@name IRestore:ReadInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IRestore/ReadInt",
      "@param {IRestore} this - no description",
      "@returns {number} - The read integer number."
    ],
    "type": "class",
    "context": "IRestore",
    "name": "ReadInt",
    "typings": [
      "(this: IRestore): number"
    ]
  },
  {
    "comments": [
      "\nReads next bytes from the restore object as a floating point @number type.\n",
      "@name IRestore:ReadFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IRestore/ReadFloat",
      "@param {IRestore} this - no description",
      "@returns {number} - The read floating point number."
    ],
    "type": "class",
    "context": "IRestore",
    "name": "ReadFloat",
    "typings": [
      "(this: IRestore): number"
    ]
  },
  {
    "comments": [
      "\nReads next bytes from the restore object as an @Entity type.\n",
      "@name IRestore:ReadEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IRestore/ReadEntity",
      "@param {IRestore} this - no description",
      "@returns {Entity} - The entity that has been read."
    ],
    "type": "class",
    "context": "IRestore",
    "name": "ReadEntity",
    "typings": [
      "(this: IRestore): Entity"
    ]
  },
  {
    "comments": [
      "\nReads next bytes from the restore object as a @boolean type.\n",
      "@name IRestore:ReadBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IRestore/ReadBool",
      "@param {IRestore} this - no description",
      "@returns {boolean} - The boolean that has been read"
    ],
    "type": "class",
    "context": "IRestore",
    "name": "ReadBool",
    "typings": [
      "(this: IRestore): boolean"
    ]
  },
  {
    "comments": [
      "\nEnds current data block started with @IRestore:StartBlock and returns to the parent block.\nTo avoid all sorts of errors, you **must** end all blocks you start.\n",
      "@name IRestore:EndBlock",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IRestore/EndBlock",
      "@param {IRestore} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IRestore",
    "name": "EndBlock",
    "typings": [
      "(this: IRestore): void"
    ]
  },
  {
    "comments": [
      "\nReads next bytes from the restore object as an @Angle type.\n",
      "@name IRestore:ReadAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IRestore/ReadAngle",
      "@param {IRestore} this - no description",
      "@returns {Angle} - The angle that has been read"
    ],
    "type": "class",
    "context": "IRestore",
    "name": "ReadAngle",
    "typings": [
      "(this: IRestore): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns whether a mouse key was released in the same frame this function was called.\nThis function only works in Move hooks, and will detect mouse events even in main menu or when a typing in a text field.\n",
      "@name input.WasMouseReleased",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/WasMouseReleased",
      "@param {void} this - no description",
      "@param {MOUSE} key - The key to test, see @MOUSE enum",
      "@returns {boolean} - True if the mouse key was released the same frame that this function was called, false otherwise."
    ],
    "type": "func",
    "context": "input",
    "name": "WasMouseReleased",
    "typings": [
      "(this: void, key: MOUSE): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether a mouse key was initially pressed in the same frame this function was called.\nIf @input.WasMouseDoublePressed returns true, this function will return false.\nThis function only works in Move hooks, and will detect mouse events even in main menu or when a typing in a text field.\n",
      "@name input.WasMousePressed",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/WasMousePressed",
      "@param {void} this - no description",
      "@param {MOUSE} key - The key, see @MOUSE enum",
      "@returns {boolean} - True if the mouse key was initially pressed the same frame that this function was called, false otherwise."
    ],
    "type": "func",
    "context": "input",
    "name": "WasMousePressed",
    "typings": [
      "(this: void, key: MOUSE): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the key is being held down or not.\nThis function only works in Move hooks, and will detect key events even in main menu or when a typing in a text field.\n",
      "@name input.WasKeyTyped",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/WasKeyTyped",
      "@param {void} this - no description",
      "@param {KEY} key - The key to test, see @KEY enum",
      "@returns {boolean} - Whether the key is being held down or not."
    ],
    "type": "func",
    "context": "input",
    "name": "WasKeyTyped",
    "typings": [
      "(this: void, key: KEY): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether a mouse key was double pressed in the same frame this function was called.\nIf this function returns true, @input.WasMousePressed will return false.\nThis function only works in Move hooks, and will detect mouse events even in main menu or when a typing in a text field.\n",
      "@name input.WasMouseDoublePressed",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/WasMouseDoublePressed",
      "@param {void} this - no description",
      "@param {MOUSE} button - The mouse button to test, see @MOUSE enum",
      "@returns {boolean} - Whether the mouse key was double pressed or not."
    ],
    "type": "func",
    "context": "input",
    "name": "WasMouseDoublePressed",
    "typings": [
      "(this: void, button: MOUSE): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether a key was released in the same frame this function was called.\nThis function only works in Move hooks, and will detect key releases even in main menu or when a typing in a text field.\n",
      "@name input.WasKeyReleased",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/WasKeyReleased",
      "@param {void} this - no description",
      "@param {KEY} key - The key, see @KEY enum.",
      "@returns {boolean} - True if the key was released the same frame that this function was called, false otherwise."
    ],
    "type": "func",
    "context": "input",
    "name": "WasKeyReleased",
    "typings": [
      "(this: void, key: KEY): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether a key was initially pressed in the same frame this function was called.\nThis function only works in Move hooks, and will detect key presses even in main menu or when a typing in a text field.\n",
      "@name input.WasKeyPressed",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/WasKeyPressed",
      "@param {void} this - no description",
      "@param {KEY} key - The key, see @KEY enum.",
      "@returns {boolean} - True if the key was initially pressed the same frame that this function was called, false otherwise."
    ],
    "type": "func",
    "context": "input",
    "name": "WasKeyPressed",
    "typings": [
      "(this: void, key: KEY): boolean"
    ]
  },
  {
    "comments": [
      "\nBegins waiting for a key to be pressed so we can save it for @input.CheckKeyTrapping. Used by the @DBinder type.\n",
      "@name input.StartKeyTrapping",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/StartKeyTrapping",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "input",
    "name": "StartKeyTrapping",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the cursor's position on the screen, relative to the topleft corner of the window\n",
      "@name input.SetCursorPos",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/SetCursorPos",
      "@param {void} this - no description",
      "@param {number} mouseX - X coordinate for mouse position",
      "@param {number} mouseY - Y coordinate for mouse position",
      "@returns {void}"
    ],
    "type": "func",
    "context": "input",
    "name": "SetCursorPos",
    "typings": [
      "(this: void, mouseX: number, mouseY: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the bind string that the given key is bound to.\n",
      "@name input.LookupKeyBinding",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/LookupKeyBinding",
      "@param {void} this - no description",
      "@param {BUTTON_CODE} key - Key from @BUTTON_CODE enum",
      "@returns {string} - The bind string of the given key."
    ],
    "type": "func",
    "context": "input",
    "name": "LookupKeyBinding",
    "typings": [
      "(this: void, key: BUTTON_CODE): string"
    ]
  },
  {
    "comments": [
      "\nSwitches to the provided weapon on the next CUserCmd generation/CreateMove call. Direct binding to [CInput::MakeWeaponSelection](https://github.com/LestaD/SourceEngine2007/blob/43a5c90a5ada1e69ca044595383be67f40b33c61/se2007/game/client/in_main.cpp#L929-L932).\n",
      "@name input.SelectWeapon",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/input/SelectWeapon",
      "@param {void} this - no description",
      "@param {Weapon} weapon - The weapon entity to switch to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "input",
    "name": "SelectWeapon",
    "typings": [
      "(this: void, weapon: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nGets the match uppercase key for the specified binding.\n",
      "@name input.LookupBinding",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/LookupBinding",
      "@param {void} this - no description",
      "@param {string} binding - The binding name",
      "@param {boolean} exact - True if the binding should match exactly",
      "@returns {string} - The first key found with that binding or no value if no key with given binding was found.\nSee also @input.GetKeyCode."
    ],
    "type": "func",
    "context": "input",
    "name": "LookupBinding",
    "typings": [
      "(this: void, binding: string, exact?: boolean): string"
    ]
  },
  {
    "comments": [
      "\nGets whether a shift key is being pressed\n",
      "@name input.IsShiftDown",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/IsShiftDown",
      "@param {void} this - no description",
      "@returns {boolean} - isDown"
    ],
    "type": "func",
    "context": "input",
    "name": "IsShiftDown",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether key trapping is activate and the next key press will be captured.\n",
      "@name input.IsKeyTrapping",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/IsKeyTrapping",
      "@param {void} this - no description",
      "@returns {boolean} - Whether key trapping active or not"
    ],
    "type": "func",
    "context": "input",
    "name": "IsKeyTrapping",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nGets whether a mouse button is down\n",
      "@name input.IsMouseDown",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/IsMouseDown",
      "@param {void} this - no description",
      "@param {MOUSE} mouseKey - The key, see @MOUSE enum",
      "@returns {boolean} - Is the key down"
    ],
    "type": "func",
    "context": "input",
    "name": "IsMouseDown",
    "typings": [
      "(this: void, mouseKey: MOUSE): boolean"
    ]
  },
  {
    "comments": [
      "\nGets whether a key is down\n",
      "@name input.IsKeyDown",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/IsKeyDown",
      "@param {void} this - no description",
      "@param {KEY} key - The key, see @KEY enum.",
      "@returns {boolean} - Is the key down"
    ],
    "type": "func",
    "context": "input",
    "name": "IsKeyDown",
    "typings": [
      "(this: void, key: KEY): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether a control key is being pressed\n",
      "@name input.IsControlDown",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/IsControlDown",
      "@param {void} this - no description",
      "@returns {boolean} - Is Ctrl key down or not"
    ],
    "type": "func",
    "context": "input",
    "name": "IsControlDown",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nGets whether the specified button code is down.\nUnlike @input.IsKeyDown this can also detect joystick presses from @JOYSTICK enum\n",
      "@name input.IsButtonDown",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/IsButtonDown",
      "@param {void} this - no description",
      "@param {BUTTON_CODE} button - The button, valid values are in the range of @BUTTON_CODE enum.",
      "@returns {boolean} - Is the button down"
    ],
    "type": "func",
    "context": "input",
    "name": "IsButtonDown",
    "typings": [
      "(this: void, button: BUTTON_CODE): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the button name from a numeric button code. The name needs to be translated with @language.GetPhrase before being displayed.\n",
      "@name input.GetKeyName",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/GetKeyName",
      "@note Despite the name of the function, this also works for the full range of keys in @BUTTON_CODE enum.",
      "@param {void} this - no description",
      "@param {BUTTON_CODE} button - The button, see @BUTTON_CODE enum.",
      "@returns {string} - Button name."
    ],
    "type": "func",
    "context": "input",
    "name": "GetKeyName",
    "typings": [
      "(this: void, button: BUTTON_CODE): string"
    ]
  },
  {
    "comments": [
      "\nGets the button code from a button name. This is opposite of @input.GetKeyName.\n",
      "@name input.GetKeyCode",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/GetKeyCode",
      "@param {void} this - no description",
      "@param {string} button - The internal button name, such as \"e\" or \"shift\".",
      "@returns {BUTTON_CODE} - The button code, see @BUTTON_CODE enum."
    ],
    "type": "func",
    "context": "input",
    "name": "GetKeyCode",
    "typings": [
      "(this: void, button: string): BUTTON_CODE"
    ]
  },
  {
    "comments": [
      "\nReturns the cursor's position on the screen\n",
      "@name input.GetCursorPos",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/GetCursorPos",
      "@param {void} this - no description",
      "@returns {number} - The cursors position on the X axis",
      "@returns {number} - The cursors position on the Y axis",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "input",
    "name": "GetCursorPos",
    "typings": [
      "(this: void): [number, number]"
    ]
  },
  {
    "comments": [
      "\nRenders the mesh with the active matrix.\n",
      "@name IMesh:Draw",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IMesh/Draw",
      "@param {IMesh} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMesh",
    "name": "Draw",
    "typings": [
      "(this: IMesh): void"
    ]
  },
  {
    "comments": [
      "\nDeletes the mesh and frees the memory used by it.\n",
      "@name IMesh:Destroy",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IMesh/Destroy",
      "@param {IMesh} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMesh",
    "name": "Destroy",
    "typings": [
      "(this: IMesh): void"
    ]
  },
  {
    "comments": [
      "\nBuilds the mesh from a table mesh vertexes.\nSee @Mesh function and @util.GetModelMeshes for examples.\n",
      "@name IMesh:BuildFromTriangles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IMesh/BuildFromTriangles",
      "@param {IMesh} this - no description",
      "@param {MeshVertex} vertexes - A table consisting of @MeshVertex structures.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMesh",
    "name": "BuildFromTriangles",
    "typings": [
      "(this: IMesh, vertexes: MeshVertex): void"
    ]
  },
  {
    "comments": [
      "\nReturns the width of the member texture set for $basetexture.\n",
      "@name IMaterial:Width",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/Width",
      "@param {IMaterial} this - no description",
      "@returns {number} - width"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "Width",
    "typings": [
      "(this: IMaterial): number"
    ]
  },
  {
    "comments": [
      "\nReturns the last key captured by key trapping.\n",
      "@name input.CheckKeyTrapping",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/input/CheckKeyTrapping",
      "@param {void} this - no description",
      "@returns {KEY} - The key, see @KEY enum"
    ],
    "type": "func",
    "context": "input",
    "name": "CheckKeyTrapping",
    "typings": [
      "(this: void): KEY"
    ]
  },
  {
    "comments": [
      "\nUnsets the value for the specified material value.\n",
      "@name IMaterial:SetUndefined",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/SetUndefined",
      "@param {IMaterial} this - no description",
      "@param {string} materialValueName - The name of the material value to be unset.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "SetUndefined",
    "typings": [
      "(this: IMaterial, materialValueName: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the specified material vector to the specified vector, does nothing on a type mismatch.\n",
      "@name IMaterial:SetVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/SetVector",
      "@param {IMaterial} this - no description",
      "@param {string} MaterialVector - The name of the material vector.",
      "@param {Vector} vec - The new vector.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "SetVector",
    "typings": [
      "(this: IMaterial, MaterialVector: string, vec: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the specified material texture to the specified texture, does nothing on a type mismatch.\n",
      "@name IMaterial:SetTexture",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/SetTexture",
      "@param {IMaterial} this - no description",
      "@param {string} materialTexture - The name of the keyvalue on the material to store the texture on.",
      "@param {ITexture} texture - The new texture. This can also be a string, the name of the new texture.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "SetTexture",
    "typings": [
      "(this: IMaterial, materialTexture: string, texture: ITexture): void"
    ]
  },
  {
    "comments": [
      "\nSets the specified material value to the specified string, does nothing on a type mismatch.\n",
      "@name IMaterial:SetString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/SetString",
      "@param {IMaterial} this - no description",
      "@param {string} materialString - The name of the material string.",
      "@param {string} str - The new string.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "SetString",
    "typings": [
      "(this: IMaterial, materialString: string, str: string): void"
    ]
  },
  {
    "comments": [
      "\nThe functionality of this function was removed due to the amount of crashes it caused.\n",
      "@name IMaterial:SetShader",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/SetShader",
      "@param {IMaterial} this - no description",
      "@param {string} shaderName - Name of the shader",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "SetShader",
    "typings": [
      "(this: IMaterial, shaderName: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the specified material value to the specified matrix, does nothing on a type mismatch.\n",
      "@name IMaterial:SetMatrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/SetMatrix",
      "@param {IMaterial} this - no description",
      "@param {string} materialMatrix - The name of the material int.",
      "@param {VMatrix} matrix - The new matrix.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "SetMatrix",
    "typings": [
      "(this: IMaterial, materialMatrix: string, matrix: VMatrix): void"
    ]
  },
  {
    "comments": [
      "\nSets the specified material value to the specified int, does nothing on a type mismatch.\n",
      "@name IMaterial:SetInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/SetInt",
      "@param {IMaterial} this - no description",
      "@param {string} materialInt - The name of the material int.",
      "@param {number} int - The new int value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "SetInt",
    "typings": [
      "(this: IMaterial, materialInt: string, int: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the specified material float to the specified float, does nothing on a type mismatch.\n",
      "@name IMaterial:SetFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/SetFloat",
      "@param {IMaterial} this - no description",
      "@param {string} materialFloat - The name of the material float.",
      "@param {number} float - The new float value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "SetFloat",
    "typings": [
      "(this: IMaterial, materialFloat: string, float: number): void"
    ]
  },
  {
    "comments": [
      "\nRecomputes the material's snapshot. This needs to be called if you have changed variables on your material and it isn't changing.\nBe careful though - this function is slow - so try to call it only when needed!\n",
      "@name IMaterial:Recompute",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/Recompute",
      "@param {IMaterial} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "Recompute",
    "typings": [
      "(this: IMaterial): void"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the material is valid, i.e. whether it was not loaded successfully from disk or not.\n",
      "@name IMaterial:IsError",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/IsError",
      "@param {IMaterial} this - no description",
      "@returns {boolean} - Is this material the error material? (___error)"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "IsError",
    "typings": [
      "(this: IMaterial): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the height of the member texture set for $basetexture.\n",
      "@name IMaterial:Height",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/Height",
      "@param {IMaterial} this - no description",
      "@returns {number} - height"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "Height",
    "typings": [
      "(this: IMaterial): number"
    ]
  },
  {
    "comments": [
      "\nReturns the specified material linear color vector, or nil if the value is not set.\nSee https://en.wikipedia.org/wiki/Gamma_correction\nSee also @IMaterial:GetVector\n",
      "@name IMaterial:GetVectorLinear",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetVectorLinear",
      "@param {IMaterial} this - no description",
      "@param {string} materialVector - The name of the material vector.",
      "@returns {Vector} - The linear color vector"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetVectorLinear",
    "typings": [
      "(this: IMaterial, materialVector: string): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the specified material vector, or nil if the value is not set.\nSee also @IMaterial:GetVectorLinear\n",
      "@name IMaterial:GetVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetVector",
      "@param {IMaterial} this - no description",
      "@param {string} materialVector - The name of the material vector.",
      "@returns {Vector} - The color vector"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetVector",
    "typings": [
      "(this: IMaterial, materialVector: string): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns an @ITexture type based on the passed shader parameter.\n",
      "@name IMaterial:GetTexture",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetTexture",
      "@param {IMaterial} this - no description",
      "@param {string} param - The [shader parameter](https://developer.valvesoftware.com/wiki/Category:List_of_Shader_Parameters) to retrieve. This should normally be *$basetexture*.",
      "@returns {ITexture} - The value of the shader parameter. Returns nothing if the param doesn't exist."
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetTexture",
    "typings": [
      "(this: IMaterial, param: string): ITexture"
    ]
  },
  {
    "comments": [
      "\nReturns the specified material string, or nil if the value is not set or if the value can not be converted to a string.\n",
      "@name IMaterial:GetString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetString",
      "@param {IMaterial} this - no description",
      "@param {string} materialString - The name of the material string.",
      "@returns {string} - The value as a string"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetString",
    "typings": [
      "(this: IMaterial, materialString: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the materials shader.\n",
      "@name IMaterial:GetShader",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetShader",
      "@bug #3256 This function does not work serverside on Linux SRCDS.",
      "@param {IMaterial} this - no description",
      "@returns {string} - shaderName"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetShader",
    "typings": [
      "(this: IMaterial): string"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the material, in most cases the path.\n",
      "@name IMaterial:GetName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetName",
      "@param {IMaterial} this - no description",
      "@returns {string} - Material name/path"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetName",
    "typings": [
      "(this: IMaterial): string"
    ]
  },
  {
    "comments": [
      "\nReturns the specified material matrix as a int, or nil if the value is not set or is not a matrix.\n",
      "@name IMaterial:GetMatrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetMatrix",
      "@param {IMaterial} this - no description",
      "@param {string} materialMatrix - The name of the material matrix.",
      "@returns {VMatrix} - matrix"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetMatrix",
    "typings": [
      "(this: IMaterial, materialMatrix: string): VMatrix"
    ]
  },
  {
    "comments": [
      "\nGets all the key values defined for the material.\n",
      "@name IMaterial:GetKeyValues",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetKeyValues",
      "@param {IMaterial} this - no description",
      "@returns {table} - The material's key values."
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetKeyValues",
    "typings": [
      "(this: IMaterial): table"
    ]
  },
  {
    "comments": [
      "\nReturns the specified material value as a int, rounds the value if its a float, or nil if the value is not set.\n",
      "@name IMaterial:GetInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetInt",
      "@param {IMaterial} this - no description",
      "@param {string} materialInt - The name of the material integer.",
      "@returns {number} - int"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetInt",
    "typings": [
      "(this: IMaterial, materialInt: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns the specified material value as a float, or nil if the value is not set.\n",
      "@name IMaterial:GetFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetFloat",
      "@param {IMaterial} this - no description",
      "@param {string} materialFloat - The name of the material value.",
      "@returns {number} - float"
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetFloat",
    "typings": [
      "(this: IMaterial, materialFloat: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns the color of the specified pixel of the $basetexture, only works for materials created from PNG files.\nBasically identical to @ITexture:GetColor used on @IMaterial:GetTexture( \"$basetexture\" ).\n",
      "@name IMaterial:GetColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/IMaterial/GetColor",
      "@bug #2407 The returned color will not have the color metatable.",
      "@param {IMaterial} this - no description",
      "@param {number} x - The X coordinate.",
      "@param {number} y - The Y coordinate.",
      "@returns {IColor} - The color of the pixel as a @IColor structure."
    ],
    "type": "class",
    "context": "IMaterial",
    "name": "GetColor",
    "typings": [
      "(this: IMaterial, x: number, y: number): IColor"
    ]
  },
  {
    "comments": [
      "\nSets the checked state of the checkbox.\nChecked state can be obtained via @ImageCheckBox:GetChecked\n",
      "@name ImageCheckBox:SetChecked",
      "@wiki https://wiki.garrysmod.com/page/ImageCheckBox/SetChecked",
      "@param {ImageCheckBox} this - no description",
      "@param {boolean} bOn - true for checked, false otherwise",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ImageCheckBox",
    "extends": [
      "Button"
    ],
    "name": "SetChecked",
    "typings": [
      "(this: ImageCheckBox, bOn: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the material that will be visible when the @ImageCheckBox type is checked.\nInternally calls @Material:SetMaterial.\n",
      "@name ImageCheckBox:SetMaterial",
      "@wiki https://wiki.garrysmod.com/page/ImageCheckBox/SetMaterial",
      "@note Will error if no material was set.",
      "@param {ImageCheckBox} this - no description",
      "@param {string} mat - The file path of the material to set (relative to \"garrysmod/materials/\").",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ImageCheckBox",
    "extends": [
      "Button"
    ],
    "name": "SetMaterial",
    "typings": [
      "(this: ImageCheckBox, mat: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the checked state of the checkbox.\nChecked state can be obtained by @ImageCheckBox type.State.\n",
      "@name ImageCheckBox:Set",
      "@wiki https://wiki.garrysmod.com/page/ImageCheckBox/Set",
      "@param {ImageCheckBox} this - no description",
      "@param {boolean} OnOff - true for checked, false otherwise",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ImageCheckBox",
    "extends": [
      "Button"
    ],
    "name": "Set",
    "typings": [
      "(this: ImageCheckBox, OnOff: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns the checked state of the @ImageCheckBox type\n",
      "@name ImageCheckBox:GetChecked",
      "@wiki https://wiki.garrysmod.com/page/ImageCheckBox/GetChecked",
      "@param {ImageCheckBox} this - no description",
      "@returns {boolean} - true for checked, false otherwise"
    ],
    "type": "class",
    "context": "ImageCheckBox",
    "extends": [
      "Button"
    ],
    "name": "GetChecked",
    "typings": [
      "(this: ImageCheckBox): boolean"
    ]
  },
  {
    "comments": [
      "\nStop the stream. It can be started again using @IGModAudioChannel:Play.\n",
      "@name IGModAudioChannel:Stop",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/Stop",
      "@bug #1497 Calling this invalidates the IGModAudioChannel object rendering it unusable for further functions.",
      "@param {IGModAudioChannel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "Stop",
    "typings": [
      "(this: IGModAudioChannel): void"
    ]
  },
  {
    "comments": [
      "\nSets the volume of a sound channel\n",
      "@name IGModAudioChannel:SetVolume",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/SetVolume",
      "@param {IGModAudioChannel} this - no description",
      "@param {number} volume - Volume to set. 1 meaning 100% volume, 0.5 is 50% and 3 is 300%, etc.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "SetVolume",
    "typings": [
      "(this: IGModAudioChannel, volume: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the sound channel to specified time ( Rewind to that position of the song ). Does not work on online radio streams.\nStreamed sounds must have \"noblock\" parameter for this to work.\n",
      "@name IGModAudioChannel:SetTime",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/SetTime",
      "@param {IGModAudioChannel} this - no description",
      "@param {number} secs - The time to set the stream to, in seconds.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "SetTime",
    "typings": [
      "(this: IGModAudioChannel, secs: number): void"
    ]
  },
  {
    "comments": [
      "\nSets position of sound channel in case the sound channel has a 3d option set.\n",
      "@name IGModAudioChannel:SetPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/SetPos",
      "@param {IGModAudioChannel} this - no description",
      "@param {Vector} pos - The position to put the sound into",
      "@param {Vector} dir - The direction of the sound",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "SetPos",
    "typings": [
      "(this: IGModAudioChannel, pos: Vector, dir?: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the playback rate of the sound channel. May not work with high values for radio streams.\n",
      "@name IGModAudioChannel:SetPlaybackRate",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/SetPlaybackRate",
      "@param {IGModAudioChannel} this - no description",
      "@param {number} rate - Playback rate to set to. 1 is normal speed, 0.5 is half the normal speed, etc.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "SetPlaybackRate",
    "typings": [
      "(this: IGModAudioChannel, rate: number): void"
    ]
  },
  {
    "comments": [
      "\nSets 3D fade distances of a sound channel.\n",
      "@name IGModAudioChannel:Set3DFadeDistance",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/Set3DFadeDistance",
      "@param {IGModAudioChannel} this - no description",
      "@param {number} min - The minimum distance. The channel's volume is at maximum when the listener is within this distance.\n0 or less = leave current.",
      "@param {number} max - The maximum distance. The channel's volume stops decreasing when the listener is beyond this distance.\n0 or less = leave current.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "Set3DFadeDistance",
    "typings": [
      "(this: IGModAudioChannel, min: number, max: number): void"
    ]
  },
  {
    "comments": [
      "\nSets 3D cone of the sound channel.\n",
      "@name IGModAudioChannel:Set3DCone",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/Set3DCone",
      "@param {IGModAudioChannel} this - no description",
      "@param {number} innerAngle - The angle of the inside projection cone in degrees.\nRange is from 0 (no cone) to 360 (sphere), -1 = leave current.",
      "@param {number} outerAngle - The angle of the outside projection cone in degrees.\nRange is from 0 (no cone) to 360 (sphere), -1 = leave current.",
      "@param {number} outerVolume - The delta-volume outside the outer projection cone.\nRange is from 0 (silent) to 1 (same as inside the cone), less than 0 = leave current.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "Set3DCone",
    "typings": [
      "(this: IGModAudioChannel, innerAngle: number, outerAngle: number, outerVolume: number): void"
    ]
  },
  {
    "comments": [
      "\nStarts playing the stream.\n",
      "@name IGModAudioChannel:Play",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/Play",
      "@param {IGModAudioChannel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "Play",
    "typings": [
      "(this: IGModAudioChannel): void"
    ]
  },
  {
    "comments": [
      "\nPauses the stream. It can be started again using @IGModAudioChannel:Play\n",
      "@name IGModAudioChannel:Pause",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/Pause",
      "@param {IGModAudioChannel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "Pause",
    "typings": [
      "(this: IGModAudioChannel): void"
    ]
  },
  {
    "comments": [
      "\nReturns if the sound channel is valid or not.\n",
      "@name IGModAudioChannel:IsValid",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/IsValid",
      "@param {IGModAudioChannel} this - no description",
      "@returns {boolean} - Is the sound channel valid or not"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "IsValid",
    "typings": [
      "(this: IGModAudioChannel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the sound channel is streamed from the Internet or not.\n",
      "@name IGModAudioChannel:IsOnline",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/IsOnline",
      "@param {IGModAudioChannel} this - no description",
      "@returns {boolean} - Is online or not."
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "IsOnline",
    "typings": [
      "(this: IGModAudioChannel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the sound channel is looping or not.\n",
      "@name IGModAudioChannel:IsLooping",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/IsLooping",
      "@param {IGModAudioChannel} this - no description",
      "@returns {boolean} - Is looping or not."
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "IsLooping",
    "typings": [
      "(this: IGModAudioChannel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the audio stream is block streamed or not.\n",
      "@name IGModAudioChannel:IsBlockStreamed",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/IsBlockStreamed",
      "@param {IGModAudioChannel} this - no description",
      "@returns {boolean} - Is the audio stream block streamed or not."
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "IsBlockStreamed",
    "typings": [
      "(this: IGModAudioChannel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the sound channel is in 3D mode or not.\n",
      "@name IGModAudioChannel:Is3D",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/Is3D",
      "@param {IGModAudioChannel} this - no description",
      "@returns {boolean} - Is 3D or not."
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "Is3D",
    "typings": [
      "(this: IGModAudioChannel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns volume of a sound channel\n",
      "@name IGModAudioChannel:GetVolume",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetVolume",
      "@param {IGModAudioChannel} this - no description",
      "@returns {number} - The volume of the sound channel"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetVolume",
    "typings": [
      "(this: IGModAudioChannel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the current time of the sound channel\n",
      "@name IGModAudioChannel:GetTime",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetTime",
      "@param {IGModAudioChannel} this - no description",
      "@returns {number} - The current time of the stream"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetTime",
    "typings": [
      "(this: IGModAudioChannel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the state of a sound channel\n",
      "@name IGModAudioChannel:GetState",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetState",
      "@param {IGModAudioChannel} this - no description",
      "@returns {GMOD_CHANNEL} - The state of the sound channel, see @GMOD_CHANNEL enum"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetState",
    "typings": [
      "(this: IGModAudioChannel): GMOD_CHANNEL"
    ]
  },
  {
    "comments": [
      "\nReturns the sample rate for currently playing sound.\n",
      "@name IGModAudioChannel:GetSamplingRate",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetSamplingRate",
      "@param {IGModAudioChannel} this - no description",
      "@returns {number} - The sample rate in Hz. This should always be 44100."
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetSamplingRate",
    "typings": [
      "(this: IGModAudioChannel): number"
    ]
  },
  {
    "comments": [
      "\nReturns position of the sound channel\n",
      "@name IGModAudioChannel:GetPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetPos",
      "@param {IGModAudioChannel} this - no description",
      "@returns {Vector} - The position of the sound channel, previously set by @IGModAudioChannel:SetPos"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetPos",
    "typings": [
      "(this: IGModAudioChannel): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the playback rate of the sound channel.\n",
      "@name IGModAudioChannel:GetPlaybackRate",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetPlaybackRate",
      "@param {IGModAudioChannel} this - no description",
      "@returns {number} - The current playback rate of the sound channel"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetPlaybackRate",
    "typings": [
      "(this: IGModAudioChannel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the right and left levels of sound played by the sound channel.\n",
      "@name IGModAudioChannel:GetLevel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetLevel",
      "@param {IGModAudioChannel} this - no description",
      "@returns {number} - The left sound level. The value is between 0 and 1.",
      "@returns {number} - The right sound level. The value is between 0 and 1.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetLevel",
    "typings": [
      "(this: IGModAudioChannel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the length of sound played by the sound channel.\n",
      "@name IGModAudioChannel:GetLength",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetLength",
      "@param {IGModAudioChannel} this - no description",
      "@returns {number} - The length of the sound. This value seems to be less then 0 for continuous radio streams."
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetLength",
    "typings": [
      "(this: IGModAudioChannel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the filename for the sound channel.\n",
      "@name IGModAudioChannel:GetFileName",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetFileName",
      "@param {IGModAudioChannel} this - no description",
      "@returns {string} - The file name. This will not be always what you have put into the @sound.PlayURL as first argument."
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetFileName",
    "typings": [
      "(this: IGModAudioChannel): string"
    ]
  },
  {
    "comments": [
      "\nRetrieves the number of bits per sample of the sound channel.\nDoesn't work for mp3 and ogg files.\n",
      "@name IGModAudioChannel:GetBitsPerSample",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetBitsPerSample",
      "@param {IGModAudioChannel} this - no description",
      "@returns {number} - Number of bits per sample, or 0 if unknown."
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetBitsPerSample",
    "typings": [
      "(this: IGModAudioChannel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the average bit rate of the sound channel.\n",
      "@name IGModAudioChannel:GetAverageBitRate",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/GetAverageBitRate",
      "@param {IGModAudioChannel} this - no description",
      "@returns {number} - The average bit rate of the sound channel."
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "GetAverageBitRate",
    "typings": [
      "(this: IGModAudioChannel): number"
    ]
  },
  {
    "comments": [
      "\nReturns 3D fade distances of a sound channel.\n",
      "@name IGModAudioChannel:Get3DFadeDistance",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/Get3DFadeDistance",
      "@param {IGModAudioChannel} this - no description",
      "@returns {number} - The minimum distance. The channel's volume is at maximum when the listener is within this distance",
      "@returns {number} - The maximum distance. The channel's volume stops decreasing when the listener is beyond this distance",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "Get3DFadeDistance",
    "typings": [
      "(this: IGModAudioChannel): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns 3D cone of the sound channel. See @IGModAudioChannel:Set3DCone.\n",
      "@name IGModAudioChannel:Get3DCone",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/Get3DCone",
      "@param {IGModAudioChannel} this - no description",
      "@returns {number} - The angle of the inside projection cone in degrees.",
      "@returns {number} - The angle of the outside projection cone in degrees.",
      "@returns {number} - The delta-volume outside the outer projection cone.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "Get3DCone",
    "typings": [
      "(this: IGModAudioChannel): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nComputes the [DFT (discrete Fourier transform)](https://en.wikipedia.org/wiki/Discrete_Fourier_transform) of the sound channel.\nThe size parameter specifies the number of consecutive audio samples to use as the input to the DFT and is restricted to a power of two. A [Hann window](https://en.wikipedia.org/wiki/Hann_function) is applied to the input data.\nThe computed DFT has the same number of frequency bins as the number of samples. Only half of this DFT is returned, since [the DFT magnitudes are symmetric for real input data](https://en.wikipedia.org/wiki/Discrete_Fourier_transform#The_real-input_DFT). The magnitudes of the DFT (values from 0 to 1) are used to fill the output table, starting at index 1.\n**Visualization protip:** For a size N DFT, bin k (1-indexed) corresponds to a frequency of (k - 1) / N * sampleRate.\n**Visualization protip:** Sound energy is proportional to the square of the magnitudes. Adding magnitudes together makes no sense physically, but adding energies does.\n**Visualization protip:** The human ear works on a logarithmic amplitude scale. You can convert to [decibels](https://en.wikipedia.org/wiki/Decibel) by taking 20 log10 of frequency magnitudes, or 10 log10 of energy. The decibel values will range from -infinity to 0.\n",
      "@name IGModAudioChannel:FFT",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/FFT",
      "@param {IGModAudioChannel} this - no description",
      "@param {table} tbl - The table to output the DFT magnitudes (numbers between 0 and 1) into. Indices start from 1.",
      "@param {FFT} size - The number of samples to use. See @FFT enum",
      "@returns {number} - The number of frequency bins that have been filled in the output table."
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "FFT",
    "typings": [
      "(this: IGModAudioChannel, tbl: table, size: FFT): number"
    ]
  },
  {
    "comments": [
      "\nEnables or disables looping of audio channel, requires noblock flag.\n",
      "@name IGModAudioChannel:EnableLooping",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/IGModAudioChannel/EnableLooping",
      "@param {IGModAudioChannel} this - no description",
      "@param {boolean} enable - Enable or disable looping of this audio channel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IGModAudioChannel",
    "name": "EnableLooping",
    "typings": [
      "(this: IGModAudioChannel, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUpdates the entity being rendered in the internal @DAdjustableModelPanel type. Called by the model panel's @DModelPanel:LayoutEntity method.\n",
      "@name IconEditor:UpdateEntity",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/UpdateEntity",
      "@internal",
      "@param {IconEditor} this - no description",
      "@param {Entity} ent - The entity being rendered within the model panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "UpdateEntity",
    "typings": [
      "(this: IconEditor, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the @SpawnIcon type to modify. You should call @Panel:Refresh immediately after this, as the user will not be able to make changes to the icon beforehand.\n",
      "@name IconEditor:SetIcon",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/SetIcon",
      "@param {IconEditor} this - no description",
      "@param {SpawnIcon} icon - The @SpawnIcon type object to be modified.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "SetIcon",
    "typings": [
      "(this: IconEditor, icon: SpawnIcon): void"
    ]
  },
  {
    "comments": [
      "\nSets the editor's model and icon from an entity. Alternative to @IconEditor:SetIcon, with uses a @SpawnIcon type.\nYou do not need to call @IconEditor:Refresh after this.\n",
      "@name IconEditor:SetFromEntity",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/SetFromEntity",
      "@param {IconEditor} this - no description",
      "@param {Entity} ent - The entity to retrieve the model and skin from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "SetFromEntity",
    "typings": [
      "(this: IconEditor, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets up the default ambient and directional lighting for the @DAdjustableModelPanel type. Called by @IconEditor:Refresh.\n",
      "@name IconEditor:SetDefaultLighting",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/SetDefaultLighting",
      "@internal",
      "@param {IconEditor} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "SetDefaultLighting",
    "typings": [
      "(this: IconEditor): void"
    ]
  },
  {
    "comments": [
      "\nApplies the right side view camera settings for the model in the @DAdjustableModelPanel type.\nCalled when a user clicks the *Right* (fourth) button (See the [example](https://wiki.garrysmod.com/page/Category:IconEditor)). (Note: The icon for this points left.)\n",
      "@name IconEditor:RightLayout",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/RightLayout",
      "@param {IconEditor} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "RightLayout",
    "typings": [
      "(this: IconEditor): void"
    ]
  },
  {
    "comments": [
      "\nRe-renders the @SpawnIcon type.\nCalled when a user clicks the *RENDER* button, this retrieves the render data from the internal @DAdjustableModelPanel type and passes it as a table to @Panel:RebuildSpawnIconEx.\n",
      "@name IconEditor:RenderIcon",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/RenderIcon",
      "@param {IconEditor} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "RenderIcon",
    "typings": [
      "(this: IconEditor): void"
    ]
  },
  {
    "comments": [
      "\nUpdates the internal @DAdjustableModelPanel type and @SpawnIcon type.\nThis should be called immediately after setting the SpawnIcon with @IconEditor:SetIcon.\n",
      "@name IconEditor:Refresh",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/Refresh",
      "@param {IconEditor} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "Refresh",
    "typings": [
      "(this: IconEditor): void"
    ]
  },
  {
    "comments": [
      "\nPlaces the camera at the origin (0,0,0), relative to the entity, in the @DAdjustableModelPanel type.\nCalled when a user clicks the *Center* (fifth) button (See the [example](https://wiki.garrysmod.com/page/Category:IconEditor)).\n",
      "@name IconEditor:OriginLayout",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/OriginLayout",
      "@param {IconEditor} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "OriginLayout",
    "typings": [
      "(this: IconEditor): void"
    ]
  },
  {
    "comments": [
      "\nApplies the front view camera settings for the model in the @DAdjustableModelPanel type.\nCalled when a user clicks the *Front* (second) button (See the [example](https://wiki.garrysmod.com/page/Category:IconEditor)).\n",
      "@name IconEditor:FullFrontalLayout",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/FullFrontalLayout",
      "@param {IconEditor} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "FullFrontalLayout",
    "typings": [
      "(this: IconEditor): void"
    ]
  },
  {
    "comments": [
      "\nFills the @DListView type on the left of the editor with the model entity's animation list. Called by @IconEditor:Refresh.\n",
      "@name IconEditor:FillAnimations",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/FillAnimations",
      "@internal",
      "@param {IconEditor} this - no description",
      "@param {Entity} ent - The entity being rendered within the model panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "FillAnimations",
    "typings": [
      "(this: IconEditor, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nApplies the best camera settings for the model in the @DAdjustableModelPanel type, using the values returned by @PositionSpawnIcon function.\nCalled when a user clicks the *wand* button (See the [example](https://wiki.garrysmod.com/page/Category:IconEditor)) and when @IconEditor:Refresh is called.\n",
      "@name IconEditor:BestGuessLayout",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/BestGuessLayout",
      "@param {IconEditor} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "BestGuessLayout",
    "typings": [
      "(this: IconEditor): void"
    ]
  },
  {
    "comments": [
      "\nApplies the top-down view camera settings for the model in the @DAdjustableModelPanel type.\nCalled when a user clicks the *Above* (third) button (See the [example](https://wiki.garrysmod.com/page/Category:IconEditor)).\n",
      "@name IconEditor:AboveLayout",
      "@wiki https://wiki.garrysmod.com/page/IconEditor/AboveLayout",
      "@param {IconEditor} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "IconEditor",
    "extends": [
      "DFrame"
    ],
    "name": "AboveLayout",
    "typings": [
      "(this: IconEditor): void"
    ]
  },
  {
    "comments": [
      "\nSends an asynchronous POST request to a HTTP server.\nHTTP requests returning a status code >= 400 are still considered a success and will call the onSuccess callback.\nThe onFailure callback is usually only called on DNS or TCP errors (e.g. the website is unavailable or the domain does not exist)\n",
      "@name http.Post",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/http/Post",
      "@param {void} this - no description",
      "@param {string} url - The url to of the website to fetch.",
      "@param {table} parameters - The post parameters to be send to the server. **Keys and values *must* be strings.",
      "@param {function} onSuccess - The function called on success: function( string responseText, number contentLength, table responseHeaders, number statusCode )",
      "@param {function} onFailure - The function called on failure: function( string errorMessage )",
      "@param {table} headers - KeyValue table for headers",
      "@returns {void}"
    ],
    "type": "func",
    "context": "http",
    "name": "Post",
    "typings": [
      "(this: void, url: string, parameters: table, onSuccess?: UnknownFunc, onFailure?: UnknownFunc, headers?: table): void"
    ]
  },
  {
    "comments": [
      "\nLaunches a GET request.\n",
      "@name http.Fetch",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/http/Fetch",
      "@param {void} this - no description",
      "@param {string} url - The URL of the website to fetch.",
      "@param {function} onSuccess - Function to be called on success. Arguments are",
      "@param {function} onFailure - Function to be called on failure. Arguments are",
      "@param {table} headers - KeyValue table for headers",
      "@returns {void}"
    ],
    "type": "func",
    "context": "http",
    "name": "Fetch",
    "typings": [
      "(this: void, url: string, onSuccess?: httpFetchOnSuccess, onFailure?: httpFetchOnFailure, headers?: table): void"
    ],
    "types": [
      {
        "comments": [
          "@type httpFetchOnSuccess",
          "@param {void} this - no description",
          "@param {string} body - no description",
          "@param {string} size - equal to @string.len(body)",
          "@param {table} headers - no description",
          "@param {number} code - The HTTP success code"
        ],
        "type": "type",
        "name": "httpFetchOnSuccess",
        "typing": "(this: void, body: string, size: string, headers: table, code: number) => unknown"
      },
      {
        "comments": [
          "@type httpFetchOnFailure",
          "@param {void} this - no description",
          "@param {string} error - The error message"
        ],
        "type": "type",
        "name": "httpFetchOnFailure",
        "typing": "(this: void, error: string) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nCalls hooks associated with the given event.\nCalls all hooks until one returns something other than nil and then returns that data.\nIf no hook returns any data, it will try to call the GAMEMODE: alternative, if one exists.\nThis function internally calls @hook.Call.\nSee also: @gamemode.Call - same as this, but does not call hooks if the gamemode hasn't defined the function.\n",
      "@name hook.Run",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/hook/Run",
      "@param {void} this - no description",
      "@param {string} eventName - The event to call hooks for",
      "@param {any[]} ...args - The arguments to be passed to the hooks",
      "@returns {any} - Returned data from called hooks"
    ],
    "type": "func",
    "context": "hook",
    "name": "Run",
    "typings": [
      "(this: void, eventName: string, ...args: any[]): any"
    ]
  },
  {
    "comments": [
      "\nRemoves the hook with the supplied identifier from the given event.\n",
      "@name hook.Remove",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/hook/Remove",
      "@param {void} this - no description",
      "@param {string} eventName - The event name.",
      "@param {any} identifier - The unique identifier of the hook to remove, usually a string.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "hook",
    "name": "Remove",
    "typings": [
      "(this: void, eventName: string, identifier: any): void"
    ]
  },
  {
    "comments": [
      "\nReturns a list of all the hooks registered with @hook.Add.\n",
      "@name hook.GetTable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/hook/GetTable",
      "@param {void} this - no description",
      "@returns {table[]} - A table of tables. See below for output example."
    ],
    "type": "func",
    "context": "hook",
    "name": "GetTable",
    "typings": [
      "(this: void): table[]"
    ]
  },
  {
    "comments": [
      "\nCalls all hooks associated with the given event until one returns something other than nil, and then returns that data.\nIn almost all cases, you should use @hook.Run instead - it calls hook.Call internally but supplies the gamemode table by itself, making your code neater.\n",
      "@name hook.Call",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/hook/Call",
      "@param {void} this - no description",
      "@param {string} eventName - The event to call hooks for",
      "@param {table} gamemodeTable - If the gamemode is specified, the gamemode hook within will be called, otherwise not",
      "@param {any[]} ...args - The arguments to be passed to the hooks",
      "@returns {any[]} - Return data from called hooks. Limited to 6 return values"
    ],
    "type": "func",
    "context": "hook",
    "name": "Call",
    "typings": [
      "(this: void, eventName: string, gamemodeTable: table, ...args: any[]): any[]"
    ]
  },
  {
    "comments": [
      "\nAdd a hook to be called upon the given event occurring.\n",
      "@name hook.Add",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/hook/Add",
      "@warning Returning any value besides nil from the hook's function will stop other hooks of the same event down the loop from being executed. Only return a value when absolutely necessary and when you know what you are doing.It WILL break other addons.",
      "@param {void} this - no description",
      "@param {string} eventName - The event to hook on to, see [GM Hooks](https://wiki.garrysmod.com/page/Category:GM%20Hooks) and [Sandbox Hooks](https://wiki.garrysmod.com/page/Category:SANDBOX%20Hooks)",
      "@param {string | table | Entity | Panel | number | boolean} identifier - The unique identifier, usually a string. This can be used elsewhere in the code to replace or remove the hook. The identifier **should** be unique so that you do not accidentally override some other mods hook, unless that's what you are trying to do.\nThe identifier can be either a @string type, or a @table type/object with an IsValid function defined such as an @Entity type or @Panel type. @number types and @boolean types, for example, are not allowed.\nIf the identifier is a table/object, it will be inserted in front of the other arguments in the callback and the hook will be called as long as it's valid. However, as soon as IsValid( identifier ) returns false, the hook will be removed.",
      "@param {function} func - The function to be called, arguments given to it depend on the [hook](https://wiki.garrysmod.com/page/Category:Hooks).",
      "@returns {void}"
    ],
    "type": "func",
    "context": "hook",
    "name": "Add",
    "typings": [
      "(this: void, eventName: string, identifier: string | table | Entity | Panel | number | boolean, func: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nSends command to Hammer, if Hammer is running with the current map loaded.\n",
      "@name hammer.SendCommand",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/hammer/SendCommand",
      "@param {void} this - no description",
      "@param {string} cmd - Command to send including arguments\nAll commands are in the format \"command var1 var2 etc\"\nAll commands that pick an entity with x y z , must use the exact position including decimals. i.e. -354.4523 123.4 -1224.325452\nList of commands\n**\"session_begin mapName mapVersion\"** - Starts a hammer edit, locking the editor. mapName is the current map without path or suffix, mapVersion is the current version in the .vmf file\n**\"session_end\"** - Ends a hammer edit, unlocking the editor.\n**\"map_check_version mapName mapVersion\"** - This only works after session_begin, so you'd know the right version already and this only returns ok, this function is apparently useless\n**\"entity_create entityClass x y z\"** - Creates an entity of entityClass at position x y z\n**\"entity_delete entityClass x y z\"** - Deletes an entity of entityClass at position x y z\n**\"entity_set_keyvalue entityClass x y z \"key\" \"value\"\"** - Set's the KeyValue pair of an entity of entityClass at x y z. The Key name and Value String must be in quotes.\n**\"entity_rotate_incremental entityClass x y z incX incY incZ\"** - Rotates an entity of entityClass at x y z by incX incY incZ\n**\"node_create nodeClass nodeID x y z\"** - Creates an AI node of nodeClass with nodeID at x y z you should keep nodeID unique or you will have issues\n**\"node_delete nodeID\"** - Deletes node(s) with nodeID, this will delete multiple nodes if they have the same nodeID\n**\"nodelink_create startNodeID endNodeID\"** - Creates a link between AI nodes startNodeID and endNodeID\n**\"nodelink_delete startNodeID endNodeID\"** - Removes a link between AI nodes startNodeID and endNodeID",
      "@returns {string} - Returns \"ok\" if command succeeded otherwise returns \"badcommand\".\n**All changes only happen in hammer, there is *NO* in game representation/feedback**"
    ],
    "type": "func",
    "context": "hammer",
    "name": "SendCommand",
    "typings": [
      "(this: void, cmd: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns the entity the halo library is currently rendering the halo for.\nThe main purpose of this function is to be used in @EntityHooks:Draw in order not to draw certain parts of the entity when the halo is being rendered, so there's no halo around unwanted entity parts, such as lasers, 3D2D displays, etc.\n",
      "@name halo.RenderedEntity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/halo/RenderedEntity",
      "@param {void} this - no description",
      "@returns {Entity} - If set, the currently rendered entity by the halo library."
    ],
    "type": "func",
    "context": "halo",
    "name": "RenderedEntity",
    "typings": [
      "(this: void): Entity"
    ]
  },
  {
    "comments": [
      "\nRenders a halo according to the specified table, only used internally, called from a PostDrawEffects hook added by the halo library\n",
      "@name halo.Render",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/halo/Render",
      "@internal",
      "@param {void} this - no description",
      "@param {table} entry - Table with info about the halo to draw.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "halo",
    "name": "Render",
    "typings": [
      "(this: void, entry: table): void"
    ]
  },
  {
    "comments": [
      "\nApplies a \"halo\" glow effect to one or multiple entities.\n",
      "@name halo.Add",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/halo/Add",
      "@warning Using this function outside of the PreDrawHalos hook can cause instability or crashes.",
      "@param {void} this - no description",
      "@param {table} entities - A table of entities to add the halo effect to",
      "@param {Color} color - The desired color of the halo. See @IColor structure",
      "@param {number} blurX - The strength of the halo's blur on the x axis.",
      "@param {number} blurY - The strength of the halo's blur on the y axis.",
      "@param {number} passes - The number of times the halo should be drawn per frame. Increasing this may hinder player FPS.",
      "@param {boolean} additive - Sets the render mode of the halo to additive.",
      "@param {boolean} ignoreZ - Renders the halo through anything when set to true.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "halo",
    "name": "Add",
    "typings": [
      "(this: void, entities: table, color: Color, blurX?: number, blurY?: number, passes?: number, additive?: boolean, ignoreZ?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nWhen used in a material skin, it returns a color value from a point in the skin image.\n",
      "@name GWEN.TextureColor",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/GWEN/TextureColor",
      "@param {void} this - no description",
      "@param {number} x - X position of the pixel to get the color from.",
      "@param {number} y - Y position of the pixel to get the color from.",
      "@returns {IColor} - The color of the point on the skin as a @IColor structure."
    ],
    "type": "func",
    "context": "GWEN",
    "name": "TextureColor",
    "typings": [
      "(this: void, x: number, y: number): IColor"
    ]
  },
  {
    "comments": [
      "\nUsed in derma skins to create a rectangle drawing function from an image. The texture of the rectangle will be scaled. The texture is taken from SKIN.GwenTexture\n",
      "@name GWEN.CreateTextureNormal",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/GWEN/CreateTextureNormal",
      "@param {void} this - no description",
      "@param {number} x - The X coordinate on the texture",
      "@param {number} y - The Y coordinate on the texture",
      "@param {number} w - Width of the area on texture",
      "@param {number} h - Height of the area on texture",
      "@returns {function} - The drawing function. Arguments are:"
    ],
    "type": "func",
    "context": "GWEN",
    "name": "CreateTextureNormal",
    "typings": [
      "(this: void, x: number, y: number, w: number, h: number): GWENCreateTextureNormalReturn"
    ],
    "types": [
      {
        "comments": [
          "@type GWENCreateTextureNormalReturn",
          "@param {void} this - no description",
          "@param {number} x - X coordinate for the box",
          "@param {number} y - Y coordinate for the box",
          "@param {number} w - Width of the box",
          "@param {number} h - Height of the box",
          "@param {IColor} clr - Optional color, default is white. Uses the @IColor structure"
        ],
        "type": "type",
        "name": "GWENCreateTextureNormalReturn",
        "typing": "(this: void, x: number, y: number, w: number, h: number, clr: IColor) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nUsed in derma skins to create a rectangle drawing function from an image. The rectangle will not be scaled, but instead it will be drawn in the center of the box. The texture is taken from SKIN.GwenTexture\n",
      "@name GWEN.CreateTextureCentered",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/GWEN/CreateTextureCentered",
      "@param {void} this - no description",
      "@param {number} x - The X coordinate on the texture",
      "@param {number} y - The Y coordinate on the texture",
      "@param {number} w - Width of the area on texture",
      "@param {number} h - Height of the area on texture",
      "@returns {function} - The drawing function. Arguments are:"
    ],
    "type": "func",
    "context": "GWEN",
    "name": "CreateTextureCentered",
    "typings": [
      "(this: void, x: number, y: number, w: number, h: number): GWENCreateTextureCenteredReturn"
    ],
    "types": [
      {
        "comments": [
          "@type GWENCreateTextureCenteredReturn",
          "@param {void} this - no description",
          "@param {number} x - X coordinate for the box",
          "@param {number} y - Y coordinate for the box",
          "@param {number} w - Width of the box",
          "@param {number} h - Height of the box",
          "@param {IColor} clr - Optional color, default is white. Uses the @IColor structure"
        ],
        "type": "type",
        "name": "GWENCreateTextureCenteredReturn",
        "typing": "(this: void, x: number, y: number, w: number, h: number, clr: IColor) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nUsed in derma skins to create a bordered rectangle drawing function from an image. The texture is taken either from last argument or from SKIN.GwenTexture\n",
      "@name GWEN.CreateTextureBorder",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/GWEN/CreateTextureBorder",
      "@param {void} this - no description",
      "@param {number} x - The X coordinate on the texture",
      "@param {number} y - The Y coordinate on the texture",
      "@param {number} w - Width of the area on texture",
      "@param {number} h - Height of the area on texture",
      "@param {number} left - Left width of border",
      "@param {number} top - Top width of border",
      "@param {number} right - Right width of border",
      "@param {number} bottom - Bottom width of border",
      "@param {IMaterial} source - Texture of source image to create a bordered rectangle from. Uses SKIN.GwenTexture if not set.",
      "@returns {function} - The drawing function. Arguments are:"
    ],
    "type": "func",
    "context": "GWEN",
    "name": "CreateTextureBorder",
    "typings": [
      "(this: void, x: number, y: number, w: number, h: number, left: number, top: number, right: number, bottom: number, source?: IMaterial): GWENCreateTextureBorderReturn"
    ],
    "types": [
      {
        "comments": [
          "@type GWENCreateTextureBorderReturn",
          "@param {void} this - no description",
          "@param {number} x - X coordinate for the box",
          "@param {number} y - Y coordinate for the box",
          "@param {number} w - Width of the box",
          "@param {number} h - Height of the box",
          "@param {IColor} clr - Optional color, default is white. Uses the @IColor structure"
        ],
        "type": "type",
        "name": "GWENCreateTextureBorderReturn",
        "typing": "(this: void, x: number, y: number, w: number, h: number, clr: IColor) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nShows console in the game UI.\n",
      "@name gui.ShowConsole",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/gui/ShowConsole",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "ShowConsole",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the cursor's position on the screen, relative to the topleft corner of the window\n",
      "@name gui.SetMousePos",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/SetMousePos",
      "@param {void} this - no description",
      "@param {number} mouseX - The X coordinate to move the cursor to.",
      "@param {number} mouseY - The Y coordinate to move the cursor to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "SetMousePos",
    "typings": [
      "(this: void, mouseX: number, mouseY: number): void"
    ]
  },
  {
    "comments": [
      "\nConverts the specified screen position to a **direction** vector local to the player's view. A related function is @VectorFuncs:ToScreen, which translates a 3D position to a screen coordinate.\n@util.AimVector is a more generic version of this, using a custom view instead of the player's current view.\n",
      "@name gui.ScreenToVector",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/gui/ScreenToVector",
      "@param {void} this - no description",
      "@param {number} x - X coordinate on the screen.",
      "@param {number} y - Y coordinate on the screen.",
      "@returns {Vector} - Direction"
    ],
    "type": "func",
    "context": "gui",
    "name": "ScreenToVector",
    "typings": [
      "(this: void, x: number, y: number): Vector"
    ]
  },
  {
    "comments": [
      "\nOpens specified URL in the steam overlay browser. The URL has to start with either http:// or https://\n",
      "@name gui.OpenURL",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/OpenURL",
      "@note User will be asked for confirmation before the website will open.",
      "@bug #3383 You can't click the confirmation if a modal panel has focus.",
      "@param {void} this - no description",
      "@param {string} url - URL to open",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "OpenURL",
    "typings": [
      "(this: void, url: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns y component of the mouse position.\n",
      "@name gui.MouseY",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/MouseY",
      "@param {void} this - no description",
      "@returns {number} - mouseY"
    ],
    "type": "func",
    "context": "gui",
    "name": "MouseY",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns x component of the mouse position.\n",
      "@name gui.MouseX",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/MouseX",
      "@param {void} this - no description",
      "@returns {number} - mouseX"
    ],
    "type": "func",
    "context": "gui",
    "name": "MouseX",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the cursor's position on the screen, or 0, 0 if cursor is not visible.\n",
      "@name gui.MousePos",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/MousePos",
      "@param {void} this - no description",
      "@returns {number} - mouseX",
      "@returns {number} - mouseY",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "gui",
    "name": "MousePos",
    "typings": [
      "(this: void): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the game menu overlay ( main menu ) is open or not.\n",
      "@name gui.IsGameUIVisible",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/IsGameUIVisible",
      "@param {void} this - no description",
      "@returns {boolean} - Whenever the game menu overlay ( main menu ) is open or not"
    ],
    "type": "func",
    "context": "gui",
    "name": "IsGameUIVisible",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the console is visible or not.\n",
      "@name gui.IsConsoleVisible",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/IsConsoleVisible",
      "@param {void} this - no description",
      "@returns {boolean} - Whether the console is visible or not."
    ],
    "type": "func",
    "context": "gui",
    "name": "IsConsoleVisible",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nSimulates a mouse wheel scroll with the given delta.\n",
      "@name gui.InternalMouseWheeled",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/InternalMouseWheeled",
      "@param {void} this - no description",
      "@param {number} delta - The amount of scrolling to simulate.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "InternalMouseWheeled",
    "typings": [
      "(this: void, delta: number): void"
    ]
  },
  {
    "comments": [
      "\nSimulates a mouse key release for the given mouse key.\n",
      "@name gui.InternalMouseReleased",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/InternalMouseReleased",
      "@param {void} this - no description",
      "@param {MOUSE} key - The key, see @MOUSE enum.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "InternalMouseReleased",
    "typings": [
      "(this: void, key: MOUSE): void"
    ]
  },
  {
    "comments": [
      "\nSimulates a mouse key press for the given mouse key.\n",
      "@name gui.InternalMousePressed",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/InternalMousePressed",
      "@param {void} this - no description",
      "@param {MOUSE} key - The key, see @MOUSE enum.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "InternalMousePressed",
    "typings": [
      "(this: void, key: MOUSE): void"
    ]
  },
  {
    "comments": [
      "\nSimulates a double mouse key press for the given mouse key.\n",
      "@name gui.InternalMouseDoublePressed",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/InternalMouseDoublePressed",
      "@param {void} this - no description",
      "@param {MOUSE} key - The key, see @MOUSE enum.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "InternalMouseDoublePressed",
    "typings": [
      "(this: void, key: MOUSE): void"
    ]
  },
  {
    "comments": [
      "\nSimulates an ASCII symbol writing.\nUse to write text in the chat or in VGUI.\nDoesn't work while the main menu is open!\n",
      "@name gui.InternalKeyTyped",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/InternalKeyTyped",
      "@param {void} this - no description",
      "@param {number} code - ASCII code of symbol, see http://www.mikroe.com/img/publication/spa/pic-books/programming-in-basic/chapter/04/fig4-24.gif",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "InternalKeyTyped",
    "typings": [
      "(this: void, code: number): void"
    ]
  },
  {
    "comments": [
      "\nSimulates a key type typing to the specified key.\n",
      "@name gui.InternalKeyCodeTyped",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/InternalKeyCodeTyped",
      "@param {void} this - no description",
      "@param {KEY} key - The key, see @KEY enum.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "InternalKeyCodeTyped",
    "typings": [
      "(this: void, key: KEY): void"
    ]
  },
  {
    "comments": [
      "\nSimulates a key release for the given key.\n",
      "@name gui.InternalKeyCodeReleased",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/InternalKeyCodeReleased",
      "@param {void} this - no description",
      "@param {KEY} key - The key, see @KEY enum.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "InternalKeyCodeReleased",
    "typings": [
      "(this: void, key: KEY): void"
    ]
  },
  {
    "comments": [
      "\nSimulates a key press for the given key.\n",
      "@name gui.InternalKeyCodePressed",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/InternalKeyCodePressed",
      "@param {void} this - no description",
      "@param {KEY} key - The key, see @KEY enum.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "InternalKeyCodePressed",
    "typings": [
      "(this: void, key: KEY): void"
    ]
  },
  {
    "comments": [
      "\nSimulates a mouse move with the given deltas.\n",
      "@name gui.InternalCursorMoved",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/InternalCursorMoved",
      "@param {void} this - no description",
      "@param {number} deltaX - The movement delta on the x axis.",
      "@param {number} deltaY - The movement delta on the y axis.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "InternalCursorMoved",
    "typings": [
      "(this: void, deltaX: number, deltaY: number): void"
    ]
  },
  {
    "comments": [
      "\nHides the game menu overlay.\n",
      "@name gui.HideGameUI",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/HideGameUI",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "HideGameUI",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nOpens the game menu overlay.\n",
      "@name gui.ActivateGameUI",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/gui/ActivateGameUI",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "ActivateGameUI",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nEnables the mouse cursor without restricting player movement, like using Sandbox's context menu.\n",
      "@name gui.EnableScreenClicker",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/gui/EnableScreenClicker",
      "@bug #982 Some @CUserCmd type functions to return incorrect values will return incorrect values when this function is active.",
      "@param {void} this - no description",
      "@param {boolean} enabled - Whether the cursor should be enabled or not. (true = enable, false = disable)",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gui",
    "name": "EnableScreenClicker",
    "typings": [
      "(this: void, enabled: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns if we should save this entity in a duplication or a map save or not.\n",
      "@name gmsave.ShouldSaveEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/gmsave/ShouldSaveEntity",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity",
      "@param {table} t - A table containing classname key with entities classname.",
      "@returns {boolean} - Should save entity or not"
    ],
    "type": "func",
    "context": "gmsave",
    "name": "ShouldSaveEntity",
    "typings": [
      "(this: void, ent: Entity, t: table): boolean"
    ]
  },
  {
    "comments": [
      "\nSaves the map\n",
      "@name gmsave.SaveMap",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/gmsave/SaveMap",
      "@param {void} this - no description",
      "@param {Player} ply - The player, whose position should be saved for loading the save",
      "@returns {string} - The encoded to JSON string containing save data"
    ],
    "type": "func",
    "context": "gmsave",
    "name": "SaveMap",
    "typings": [
      "(this: void, ply: Player): string"
    ]
  },
  {
    "comments": [
      "\nSets player position and angles from supplied table\n",
      "@name gmsave.PlayerLoad",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/gmsave/PlayerLoad",
      "@param {void} this - no description",
      "@param {Player} ply - The player to \"load\" values for",
      "@param {table} data - A table containing Origin and Angle keys for position and angles to set.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gmsave",
    "name": "PlayerLoad",
    "typings": [
      "(this: void, ply: Player, data: table): void"
    ]
  },
  {
    "comments": [
      "\nReturns a table containing player position and angles. Used by @gmsave.SaveMap.\n",
      "@name gmsave.PlayerSave",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/gmsave/PlayerSave",
      "@param {void} this - no description",
      "@param {Player} ply - The player to \"save\"",
      "@returns {table} - A table containing player position ( Origin ) and angles ( Angle )"
    ],
    "type": "func",
    "context": "gmsave",
    "name": "PlayerSave",
    "typings": [
      "(this: void, ply: Player): table"
    ]
  },
  {
    "comments": [
      "\nLoads a saved map.\n",
      "@name gmsave.LoadMap",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/gmsave/LoadMap",
      "@param {void} this - no description",
      "@param {string} mapData - The JSON encoded string containing all the map data.",
      "@param {Player} ply - The player to load positions for",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gmsave",
    "name": "LoadMap",
    "typings": [
      "(this: void, mapData: string, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns @GAMEMODE global.\n",
      "@name gmod.GetGamemode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/gmod/GetGamemode",
      "@param {void} this - no description",
      "@returns {table} - GAMEMODE"
    ],
    "type": "func",
    "context": "gmod",
    "name": "GetGamemode",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine when the game initially fetches subscriptions to be displayed on the bottom of the main menu screen.\n",
      "@name GamemodeHooks:WorkshopSubscriptionsProgress",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/WorkshopSubscriptionsProgress",
      "@internal",
      "@param {Gamemode} this - no description",
      "@param {number} num - Amount of subscribed addons that have info retrieved.",
      "@param {number} max - Total amount of subscribed addons that need their info retrieved.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "WorkshopSubscriptionsProgress",
    "typings": [
      "(this: Gamemode, num: number, max: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when downloading content from Steam workshop begins. Used by default to show fancy workshop downloading panel.\nThe order of Workshop hooks is this:\n* WorkshopStart\n* WorkshopDownloadTotals\n** These are called for each new item:\n*** WorkshopDownloadFile\n*** WorkshopDownloadProgress - This is called until the file is finished\n*** WorkshopDownloadedFile\n* WorkshopEnd\n",
      "@name GamemodeHooks:WorkshopStart",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/WorkshopStart",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "WorkshopStart",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when downloading content from Steam workshop ends. Used by default to hide fancy workshop downloading panel.\n",
      "@name GamemodeHooks:WorkshopEnd",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/WorkshopEnd",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "WorkshopEnd",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled after @GamemodeHooks:WorkshopStart.\n",
      "@name GamemodeHooks:WorkshopDownloadTotals",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/WorkshopDownloadTotals",
      "@param {Gamemode} this - no description",
      "@param {number} remain - Remaining addons to download",
      "@param {number} total - Total addons needing to be downloaded",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "WorkshopDownloadTotals",
    "typings": [
      "(this: Gamemode, remain: number, total: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled while an addon from the Steam workshop is downloading. Used by default to update details on the fancy workshop download panel.\n",
      "@name GamemodeHooks:WorkshopDownloadProgress",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/WorkshopDownloadProgress",
      "@param {Gamemode} this - no description",
      "@param {number} id - Workshop ID of addon.",
      "@param {number} imageID - ID of addon's preview image.\nFor example, for **Extended Spawnmenu** addon, the image URL is\nhttp://cloud-4.steamusercontent.com/ugc/702859018846106764/9E7E1946296240314751192DA0AD15B6567FF92D/\nSo, the value of this argument would be **702859018846106764**.",
      "@param {string} title - Name of addon.",
      "@param {number} downloaded - Current bytes of addon downloaded.",
      "@param {number} expected - Expected file size of addon in bytes.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "WorkshopDownloadProgress",
    "typings": [
      "(this: Gamemode, id: number, imageID: number, title: string, downloaded: number, expected: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when an addon from the Steam workshop begins downloading. Used by default to place details on the workshop downloading panel.\n",
      "@name GamemodeHooks:WorkshopDownloadFile",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/WorkshopDownloadFile",
      "@param {Gamemode} this - no description",
      "@param {number} id - Workshop ID of addon.",
      "@param {number} imageID - ID of addon's preview image.\nFor example, for **Extended Spawnmenu** addon, the image URL is\nhttp://cloud-4.steamusercontent.com/ugc/702859018846106764/9E7E1946296240314751192DA0AD15B6567FF92D/\nSo, the value of this argument would be **702859018846106764**.",
      "@param {string} title - Name of addon.",
      "@param {number} size - File size of addon in bytes.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "WorkshopDownloadFile",
    "typings": [
      "(this: Gamemode, id: number, imageID: number, title: string, size: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when an addon from the Steam workshop finishes downloading. Used by default to update details on the workshop downloading panel.\n",
      "@name GamemodeHooks:WorkshopDownloadedFile",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/WorkshopDownloadedFile",
      "@param {Gamemode} this - no description",
      "@param {number} id - Workshop ID of addon.",
      "@param {string} title - Name of addon.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "WorkshopDownloadedFile",
    "typings": [
      "(this: Gamemode, id: number, title: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled as a weapon entity is picked up by a player.\nSee also @GamemodeHooks:PlayerDroppedWeapon.\n",
      "@name GamemodeHooks:WeaponEquip",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/WeaponEquip",
      "@note At the time when this hook is called @EntityFuncs:GetOwner will return NULL. The owner is set on the next frame",
      "@note This will not be called when picking up a weapon you already have as the weapon will be removed and @WeaponHooks:EquipAmmo will be called instead",
      "@param {Gamemode} this - no description",
      "@param {Weapon} weapon - The equipped weapon.",
      "@param {Player} owner - The player that is picking up the weapon.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "WeaponEquip",
    "typings": [
      "(this: Gamemode, weapon: Weapon, owner: Player): void"
    ]
  },
  {
    "comments": [
      "\n[Category:Menu_Hooks](https://wiki.garrysmod.com/page/Category:Menu_Hooks) Called when a mouse button is pressed on a VGUI element or menu.\n",
      "@name GamemodeHooks:VGUIMousePressed",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/VGUIMousePressed",
      "@param {Gamemode} this - no description",
      "@param {Panel} pnl - Panel that currently has focus.",
      "@param {MOUSE} mouseCode - The key that the player pressed using @MOUSE enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "VGUIMousePressed",
    "typings": [
      "(this: Gamemode, pnl: Panel, mouseCode: MOUSE): void"
    ]
  },
  {
    "comments": [
      "\n[Category:Menu_Hooks](https://wiki.garrysmod.com/page/Category:Menu_Hooks) Called when user clicks on a VGUI panel.\n",
      "@name GamemodeHooks:VGUIMousePressAllowed",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/VGUIMousePressAllowed",
      "@param {Gamemode} this - no description",
      "@param {MOUSE} button - The button that was pressed, see @MOUSE enum",
      "@returns {boolean} - Return true if the mouse click should be ignored or not."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "VGUIMousePressAllowed",
    "typings": [
      "(this: Gamemode, button: MOUSE): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when you are driving a vehicle. This hook works just like @GamemodeHooks:Move.\nThis hook is called before @GamemodeHooks:Move and will be called when @GamemodeHooks:PlayerTick is not.\n",
      "@name GamemodeHooks:VehicleMove",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/VehicleMove",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who is driving the vehicle",
      "@param {Vehicle} veh - The vehicle being driven",
      "@param {CMoveData} mv - Move data",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "VehicleMove",
    "typings": [
      "(this: Gamemode, ply: Player, veh: Vehicle, mv: CMoveData): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a variable is edited on an Entity (called by Edit Properties... menu)\n",
      "@name GamemodeHooks:VariableEdited",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/VariableEdited",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - The entity being edited",
      "@param {Player} ply - The player doing the editing",
      "@param {string} key - The name of the variable",
      "@param {string} val - The new value, as a string which will later be converted to its appropriate type",
      "@param {table} editor - The edit table defined in @EntityFuncs:NetworkVar",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "VariableEdited",
    "typings": [
      "(this: Gamemode, ent: Entity, ply: Player, key: string, val: string, editor: table): void"
    ]
  },
  {
    "comments": [
      "\nAnimation updates (pose params etc) should be done here.\n",
      "@name GamemodeHooks:UpdateAnimation",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/UpdateAnimation",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player to update the animation info for.",
      "@param {Vector} velocity - The player's velocity.",
      "@param {number} maxSeqGroundSpeed - Speed of the animation - used for playback rate scaling.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "UpdateAnimation",
    "typings": [
      "(this: Gamemode, ply: Player, velocity: Vector, maxSeqGroundSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nAllows you to translate player activities.\n",
      "@name GamemodeHooks:TranslateActivity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/TranslateActivity",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {ACT} act - The activity. See @ACT enum",
      "@returns {number} - The new, translated activity"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "TranslateActivity",
    "typings": [
      "(this: Gamemode, ply: Player, act: ACT): number"
    ]
  },
  {
    "comments": [
      "\nCalled every server tick. Serverside, this is similar to @GamemodeHooks:Think.\n",
      "@name GamemodeHooks:Tick",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/Tick",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "Tick",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled every frame on client and every tick on server.\nSee @GamemodeHooks:Tick for a hook that runs every tick on both the client and server.\n",
      "@name GamemodeHooks:Think",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/Think",
      "@note This hook **WILL NOT** run if the server is empty, unless you set the @ConVar type *sv_hibernate_think* to 1",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "Think",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when you start a new game via the menu.\n",
      "@name GamemodeHooks:StartGame",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/StartGame",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "StartGame",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled right before an entity starts driving. Overriding this hook will cause it to not call @drive.Start and the player will not begin driving the entity.\n",
      "@name GamemodeHooks:StartEntityDriving",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/StartEntityDriving",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - The entity that is going to be driven",
      "@param {Player} ply - The player that is going to drive the entity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "StartEntityDriving",
    "typings": [
      "(this: Gamemode, ent: Entity, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nRuns when the user tries to open the chat box.\n",
      "@name GamemodeHooks:StartChat",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/StartChat",
      "@bug #855 Returning true won't stop the chatbox from taking VGUI focus.",
      "@param {Gamemode} this - no description",
      "@param {boolean} isTeamChat - Whether the message was sent through team chat.",
      "@returns {boolean} - Return true to hide the default chat box."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "StartChat",
    "typings": [
      "(this: Gamemode, isTeamChat: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows you to change the players inputs before they are processed by the server.\nThis is basically a shared version of @GamemodeHooks:CreateMove.\n",
      "@name GamemodeHooks:StartCommand",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/StartCommand",
      "@note This function is also called for bots, making it the best solution to control them so far",
      "@note This hook is predicted, but not by usual means, this hook is called when a @CUserCmd type is generated on the client, and on the server when it is received, so it is necessary for this hook to be called clientside even on singleplayer",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {CUserCmd} ucmd - The usercommand",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "StartCommand",
    "typings": [
      "(this: Gamemode, ply: Player, ucmd: CUserCmd): void"
    ]
  },
  {
    "comments": [
      "\nCalled when spawn icon is generated.\n",
      "@name GamemodeHooks:SpawniconGenerated",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/SpawniconGenerated",
      "@param {Gamemode} this - no description",
      "@param {string} lastmodel - File path of previously generated model.",
      "@param {string} imagename - File path of the generated icon.",
      "@param {number} modelsleft - Amount of models left to generate.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "SpawniconGenerated",
    "typings": [
      "(this: Gamemode, lastmodel: string, imagename: string, modelsleft: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the Lua environment is about to be shut down, for example on map change, or when the server is going to shut down.\n",
      "@name GamemodeHooks:ShutDown",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/ShutDown",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ShutDown",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player executes gm_showteam console command. ( Default bind is F2 )\n",
      "@name GamemodeHooks:ShowTeam",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/ShowTeam",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who executed the command",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ShowTeam",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player executes gm_showspare2 console command. ( Default bind is F4 )\n",
      "@name GamemodeHooks:ShowSpare2",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/ShowSpare2",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who executed the command",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ShowSpare2",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player executes gm_showspare1 console command. ( Default bind is F3 )\n",
      "@name GamemodeHooks:ShowSpare1",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/ShowSpare1",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who executed the command",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ShowSpare1",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player executes gm_showhelp console command. ( Default bind is F1 )\n",
      "@name GamemodeHooks:ShowHelp",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/ShowHelp",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who executed the command",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ShowHelp",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled to determine if the @LocalPlayer function should be drawn.\nDue to an [optimization](https://garry.tv/2012/10/30/optimising-gmod/), this hook is only called once per frame ([github issue](https://github.com/Facepunch/garrysmod-issues/issues/3092)). This is problematic if you need to have the player drawn only in certain contexts, such as within @render.RenderView or based on the render target. As a workaround, you can call @cam.Start3D() @cam.End3D() within this hook to force the engine to call it every time.\n",
      "@name GamemodeHooks:ShouldDrawLocalPlayer",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/ShouldDrawLocalPlayer",
      "@note If you're using this hook to draw a player for a @GamemodeHooks:CalcView hook, then you may want to consider using the drawviewer variable you can use in your @CamData structure table instead.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@returns {boolean} - True to draw the player, false to hide."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ShouldDrawLocalPlayer",
    "typings": [
      "(this: Gamemode, ply: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled to decide whether a pair of entities should collide with each other. This is only called if @EntityFuncs:SetCustomCollisionCheck was used on one or both entities.\nWhere applicable, consider using @constraint.NoCollide instead - it is considerably easier to use.\n",
      "@name GamemodeHooks:ShouldCollide",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/ShouldCollide",
      "@warning This hook **must** return the same value consistently for the same pair of entities. If an entity changed in such a way that its collision rules change, you **must** call @EntityFuncs:CollisionRulesChanged on that entity immediately - **not in this hook.**",
      "@bug #642 This hook can cause all physics to break under certain conditions.",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent1 - The first entity in the collision poll.",
      "@param {Entity} ent2 - The second entity in the collision poll.",
      "@returns {boolean} - Whether the entities should collide."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ShouldCollide",
    "typings": [
      "(this: Gamemode, ent1: Entity, ent2: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows you to use render.Fog* functions to manipulate world fog.\n",
      "@name GamemodeHooks:SetupWorldFog",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/SetupWorldFog",
      "@param {Gamemode} this - no description",
      "@returns {boolean} - Return true to tell the engine that fog is set up"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "SetupWorldFog",
    "typings": [
      "(this: Gamemode): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows you to use render.Fog* functions to manipulate skybox fog.\n",
      "@name GamemodeHooks:SetupSkyboxFog",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/SetupSkyboxFog",
      "@param {Gamemode} this - no description",
      "@param {number} scale - The scale of 3D skybox",
      "@returns {boolean} - Return true to tell the engine that fog is set up"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "SetupSkyboxFog",
    "typings": [
      "(this: Gamemode, scale: number): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows you to add extra positions to the player's PVS. This is the place to call @AddOriginToPVS function.\n",
      "@name GamemodeHooks:SetupPlayerVisibility",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/SetupPlayerVisibility",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {Entity} viewEntity - Players @Player:GetViewEntity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "SetupPlayerVisibility",
    "typings": [
      "(this: Gamemode, ply: Player, viewEntity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSetupMove is called before the engine process movements. This allows us to override the players movement.\nSee [Game Movement](https://wiki.garrysmod.com/page/Game%20Movement) for an explanation on the move system.\n",
      "@name GamemodeHooks:SetupMove",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/SetupMove",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player whose movement we are about to process",
      "@param {CMoveData} mv - The move data to override/use",
      "@param {CUserCmd} cmd - The command data",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "SetupMove",
    "typings": [
      "(this: Gamemode, ply: Player, mv: CMoveData, cmd: CUserCmd): void"
    ]
  },
  {
    "comments": [
      "\nSets player run and sprint speeds.\n",
      "@name GamemodeHooks:SetPlayerSpeed",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/SetPlayerSpeed",
      "@warning This is not a hook. Treat this as a utility function to set the player's speed.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player to set the speed of.",
      "@param {number} walkSpeed - The walk speed.",
      "@param {number} runSpeed - The run speed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "SetPlayerSpeed",
    "typings": [
      "(this: Gamemode, ply: Player, walkSpeed: number, runSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when player presses the scoreboard button. ( TAB by default )\n",
      "@name GamemodeHooks:ScoreboardShow",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/ScoreboardShow",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ScoreboardShow",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nThis hook allows you to change how much damage a player receives when one takes damage to a specific body part.\n",
      "@name GamemodeHooks:ScalePlayerDamage",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/ScalePlayerDamage",
      "@note This is not called for all damage a player receives ( For example fall damage or NPC melee damage ), so you should use @GamemodeHooks:EntityTakeDamage instead if you need to detect ALL damage.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player taking damage.",
      "@param {HITGROUP} hitgroup - The hitgroup where the player took damage. See @HITGROUP enum",
      "@param {CTakeDamageInfo} dmginfo - The damage info.",
      "@returns {boolean} - Return true to prevent damage that this hook is called for, stop blood particle effects and blood decals.\nIt is possible to return true only on client ( This will work **only in multiplayer** ) to stop the effects but still take damage."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ScalePlayerDamage",
    "typings": [
      "(this: Gamemode, ply: Player, hitgroup: HITGROUP, dmginfo: CTakeDamageInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when player released the scoreboard button. ( TAB by default )\n",
      "@name GamemodeHooks:ScoreboardHide",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/ScoreboardHide",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ScoreboardHide",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when an NPC takes damage.\n",
      "@name GamemodeHooks:ScaleNPCDamage",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/ScaleNPCDamage",
      "@note This hook is called only when a specific hit group of the NPC is hit. In cases where the hitgroup doesn't matter, you should use @GamemodeHooks:EntityTakeDamage instead!",
      "@param {Gamemode} this - no description",
      "@param {NPC} npc - The NPC that takes damage",
      "@param {HITGROUP} hitgroup - The hitgroup (hitbox) enum where the NPC took damage. See @HITGROUP enum",
      "@param {CTakeDamageInfo} dmginfo - Damage info",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ScaleNPCDamage",
    "typings": [
      "(this: Gamemode, npc: NPC, hitgroup: HITGROUP, dmginfo: CTakeDamageInfo): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the game is saved using the Source Engine save system (not the Sandbox saves or dupes).\nSee @GamemodeHooks:Restored for a hook that is called when such a save file is loaded.\nSee also the @saverestore library for relevant functions.\n",
      "@name GamemodeHooks:Saved",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/Saved",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "Saved",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the game is reloaded from a Source Engine save system ( not the Sandbox saves or dupes ).\nSee @GamemodeHooks:Saved for a hook that is called when such a save file is created.\n",
      "@name GamemodeHooks:Restored",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/Restored",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "Restored",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nUsed to render post processing effects.\n",
      "@name GamemodeHooks:RenderScreenspaceEffects",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/RenderScreenspaceEffects",
      "@rendering hook:2d",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "RenderScreenspaceEffects",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nRender the scene. Used by the \"Stereoscopy\" Post-processing effect.\n[Category:Render Hooks](https://wiki.garrysmod.com/page/Category:Render%20Hooks)\n",
      "@name GamemodeHooks:RenderScene",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/RenderScene",
      "@note Materials rendered in this hook require $ignorez parameter to draw properly.",
      "@param {Gamemode} this - no description",
      "@param {Vector} origin - View origin",
      "@param {Angle} angles - View angles",
      "@param {number} fov - View FOV",
      "@returns {boolean} - Return true to override drawing the scene"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "RenderScene",
    "typings": [
      "(this: Gamemode, origin: Vector, angles: Angle, fov: number): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a prop has been destroyed.\n",
      "@name GamemodeHooks:PropBreak",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PropBreak",
      "@param {Gamemode} this - no description",
      "@param {Player} attacker - The person who broke the prop.",
      "@param {Entity} prop - The entity that has been broken by the attacker.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PropBreak",
    "typings": [
      "(this: Gamemode, attacker: Player, prop: Entity): void"
    ]
  },
  {
    "comments": [
      "\nThis will prevent IN_ATTACK from sending to server when player tries to shoot from C menu.\n",
      "@name GamemodeHooks:PreventScreenClicks",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PreventScreenClicks",
      "@param {Gamemode} this - no description",
      "@returns {boolean} - Return true to prevent screen clicks"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreventScreenClicks",
    "typings": [
      "(this: Gamemode): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled before the renderer is about to start rendering the next frame.\n[Category:Render Hooks](https://wiki.garrysmod.com/page/Category:Render%20Hooks)\n",
      "@name GamemodeHooks:PreRender",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PreRender",
      "@param {Gamemode} this - no description",
      "@returns {boolean} - Return true to prevent all rendering. This can make the whole game stop rendering anything."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreRender",
    "typings": [
      "(this: Gamemode): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled before the player is drawn.\n",
      "@name GamemodeHooks:PrePlayerDraw",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PrePlayerDraw",
      "@param {Gamemode} this - no description",
      "@param {Player} player - The player that is about to be drawn.",
      "@returns {boolean} - Prevent default player rendering. Return true to hide the player."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PrePlayerDraw",
    "typings": [
      "(this: Gamemode, player: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled before the gamemode is loaded.\n",
      "@name GamemodeHooks:PreGamemodeLoaded",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PreGamemodeLoaded",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreGamemodeLoaded",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled before the view model has been drawn. This hook by default also calls this on weapons, so you can use @WeaponHooks:PreDrawViewModel.\n",
      "@name GamemodeHooks:PreDrawViewModel",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PreDrawViewModel",
      "@rendering hook:3d",
      "@bug #3024 This is also called once a frame with no arguments.",
      "@param {Gamemode} this - no description",
      "@param {Entity} vm - This is the view model entity before it is drawn. On server-side, this entity is the predicted view model.",
      "@param {Player} ply - The the owner of the view model.",
      "@param {Weapon} weapon - This is the weapon that is from the view model.",
      "@returns {boolean} - Return true to prevent the default view model rendering. This also affects @GamemodeHooks:PostDrawViewModel."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreDrawViewModel",
    "typings": [
      "(this: Gamemode, vm: Entity, ply: Player, weapon: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled before all the translucent entities are drawn.\nSee also @GamemodeHooks:PreDrawOpaqueRenderables and  @GamemodeHooks:PostDrawTranslucentRenderables.\n",
      "@name GamemodeHooks:PreDrawTranslucentRenderables",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PreDrawTranslucentRenderables",
      "@rendering hook:3d",
      "@bug #3295 This is still called when r_drawentities or r_drawopaquerenderables is disabled.",
      "@bug #3296 This is not called when r_drawtranslucentworld is disabled.",
      "@param {Gamemode} this - no description",
      "@param {boolean} isDrawingDepth - Whether the current draw is writing depth.",
      "@param {boolean} isDrawSkybox - Whether the current draw is drawing the skybox.",
      "@returns {boolean} - Return true to prevent translucent renderables from drawing."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreDrawTranslucentRenderables",
    "typings": [
      "(this: Gamemode, isDrawingDepth: boolean, isDrawSkybox: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled before the sky box is drawn.\n",
      "@name GamemodeHooks:PreDrawSkyBox",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PreDrawSkyBox",
      "@rendering hook:3d",
      "@param {Gamemode} this - no description",
      "@returns {boolean} - Return true to disable skybox drawing (both 2D and 3D skybox)"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreDrawSkyBox",
    "typings": [
      "(this: Gamemode): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled before the player hands are drawn.\n",
      "@name GamemodeHooks:PreDrawPlayerHands",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PreDrawPlayerHands",
      "@param {Gamemode} this - no description",
      "@param {Entity} hands - This is the gmod_hands entity before it is drawn.",
      "@param {Entity} vm - This is the view model entity before it is drawn.",
      "@param {Player} ply - The the owner of the view model.",
      "@param {Weapon} weapon - This is the weapon that is from the view model.",
      "@returns {boolean} - Return true to prevent the viewmodel hands from rendering"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreDrawPlayerHands",
    "typings": [
      "(this: Gamemode, hands: Entity, vm: Entity, ply: Player, weapon: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled before all opaque entities are drawn.\nSee also @GamemodeHooks:PreDrawTranslucentRenderables and  @GamemodeHooks:PostDrawOpaqueRenderables.\n",
      "@name GamemodeHooks:PreDrawOpaqueRenderables",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PreDrawOpaqueRenderables",
      "@rendering hook:3d",
      "@param {Gamemode} this - no description",
      "@param {boolean} isDrawingDepth - Whether the current draw is writing depth.",
      "@param {boolean} isDrawSkybox - Whether the current draw is drawing the skybox.",
      "@returns {boolean} - Return true to prevent opaque renderables from drawing."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreDrawOpaqueRenderables",
    "typings": [
      "(this: Gamemode, isDrawingDepth: boolean, isDrawSkybox: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled before any of 2D drawing functions. Drawing anything in it seems to work incorrectly.\n",
      "@name GamemodeHooks:PreDrawHUD",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PreDrawHUD",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreDrawHUD",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled before rendering the halos. This is the place to call @halo.Add. This hook is actually running inside of @GamemodeHooks:PostDrawEffects.\n",
      "@name GamemodeHooks:PreDrawHalos",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PreDrawHalos",
      "@rendering hook:3d",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreDrawHalos",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled just after @GamemodeHooks:PreDrawViewModel and can technically be considered \"PostDrawAllViewModels\".\n",
      "@name GamemodeHooks:PreDrawEffects",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PreDrawEffects",
      "@rendering hook:3d",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreDrawEffects",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled right before the map cleans up (usually because @game.CleanUpMap was called)\nSee also @GamemodeHooks:PostCleanupMap.\n",
      "@name GamemodeHooks:PreCleanupMap",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PreCleanupMap",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PreCleanupMap",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the VGUI has been drawn.\n",
      "@name GamemodeHooks:PostRenderVGUI",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostRenderVGUI",
      "@rendering hook:2d",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostRenderVGUI",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the frame has been rendered.\n[Category:Render Hooks](https://wiki.garrysmod.com/page/Category:Render%20Hooks)\n",
      "@name GamemodeHooks:PostRender",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostRender",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostRender",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nAllows you to suppress post processing effect drawing.\n",
      "@name GamemodeHooks:PostProcessPermitted",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostProcessPermitted",
      "@param {Gamemode} this - no description",
      "@param {string} ppeffect - The classname of Post Processing effect",
      "@returns {boolean} - Return true/false depending on whether this post process should be allowed"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostProcessPermitted",
    "typings": [
      "(this: Gamemode, ppeffect: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled after the player was drawn.\n",
      "@name GamemodeHooks:PostPlayerDraw",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostPlayerDraw",
      "@rendering hook:3d",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player that was drawn.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostPlayerDraw",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the gamemode has loaded.\n",
      "@name GamemodeHooks:PostGamemodeLoaded",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PostGamemodeLoaded",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostGamemodeLoaded",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled right after @GamemodeHooks:DoPlayerDeath, @GamemodeHooks:PlayerDeath and @GamemodeHooks:PlayerSilentDeath.\nThis hook will be called for all deaths, including @Player:KillSilent\n",
      "@name GamemodeHooks:PostPlayerDeath",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PostPlayerDeath",
      "@note The player is considered dead when this is hook is called, @Player:Alive will return false.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostPlayerDeath",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled after view model is drawn.\n",
      "@name GamemodeHooks:PostDrawViewModel",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostDrawViewModel",
      "@rendering hook:3d",
      "@note The 3D rendering context in this event is different from the main view. Every render operation will only be accurate with the view model entity.",
      "@param {Gamemode} this - no description",
      "@param {Entity} viewmodel - Players view model",
      "@param {Player} player - The owner of the weapon/view model",
      "@param {Weapon} weapon - The weapon the player is currently holding",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostDrawViewModel",
    "typings": [
      "(this: Gamemode, viewmodel: Entity, player: Player, weapon: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled after all translucent entities are drawn.\nSee also @GamemodeHooks:PostDrawOpaqueRenderables and  @GamemodeHooks:PreDrawTranslucentRenderables.\n",
      "@name GamemodeHooks:PostDrawTranslucentRenderables",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostDrawTranslucentRenderables",
      "@rendering hook:3d",
      "@bug #3295 This is still called when r_drawentities or r_drawopaquerenderables is disabled.",
      "@bug #3296 This is not called when r_drawtranslucentworld is disabled.",
      "@param {Gamemode} this - no description",
      "@param {boolean} bDrawingDepth - Whether the current call is writing depth.",
      "@param {boolean} bDrawingSkybox - Whether the current call is drawing skybox.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostDrawTranslucentRenderables",
    "typings": [
      "(this: Gamemode, bDrawingDepth: boolean, bDrawingSkybox: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled after drawing the skybox.\n",
      "@name GamemodeHooks:PostDrawSkyBox",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostDrawSkyBox",
      "@rendering hook:3d",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostDrawSkyBox",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the player hands are drawn.\n",
      "@name GamemodeHooks:PostDrawPlayerHands",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostDrawPlayerHands",
      "@param {Gamemode} this - no description",
      "@param {Entity} hands - This is the gmod_hands entity.",
      "@param {Entity} vm - This is the view model entity.",
      "@param {Player} ply - The the owner of the view model.",
      "@param {Weapon} weapon - This is the weapon that is from the view model.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostDrawPlayerHands",
    "typings": [
      "(this: Gamemode, hands: Entity, vm: Entity, ply: Player, weapon: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled after drawing opaque entities.\nSee also @GamemodeHooks:PostDrawTranslucentRenderables and  @GamemodeHooks:PreDrawOpaqueRenderables.\n",
      "@name GamemodeHooks:PostDrawOpaqueRenderables",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostDrawOpaqueRenderables",
      "@rendering hook:3d",
      "@param {Gamemode} this - no description",
      "@param {boolean} bDrawingDepth - Whether the current draw is writing depth.",
      "@param {boolean} bDrawingSkybox - Whether the current draw is drawing the skybox.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostDrawOpaqueRenderables",
    "typings": [
      "(this: Gamemode, bDrawingDepth: boolean, bDrawingSkybox: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled after @GamemodeHooks:PreDrawHUD,  @GamemodeHooks:HUDPaintBackground and @GamemodeHooks:HUDPaint but before  @GamemodeHooks:DrawOverlay.\n",
      "@name GamemodeHooks:PostDrawHUD",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostDrawHUD",
      "@rendering hook:2d",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostDrawHUD",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled after rendering effects. This is where halos are drawn. Called just before @GamemodeHooks:PreDrawHUD.\n",
      "@name GamemodeHooks:PostDrawEffects",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostDrawEffects",
      "@rendering hook:2d",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostDrawEffects",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled right after the 2D skybox has been drawn - allowing you to draw over it.\n",
      "@name GamemodeHooks:PostDraw2DSkyBox",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PostDraw2DSkyBox",
      "@rendering hook:3d",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostDraw2DSkyBox",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled right after the map has cleaned up (usually because @game.CleanUpMap was called)\nSee also @GamemodeHooks:PreCleanupMap.\n",
      "@name GamemodeHooks:PostCleanupMap",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PostCleanupMap",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PostCleanupMap",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nTriggered when the player presses use on an object. Continuously runs until USE is released but will not activate other Entities until the USE key is released; dependent on activation type of the Entity.\n",
      "@name GamemodeHooks:PlayerUse",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerUse",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player pressing the \"use\" key.",
      "@param {Entity} ent - The entity which the player is looking at / activating USE on.",
      "@returns {boolean} - Return false if the player is not allowed to USE the entity.\nDo not return true if using a hook, otherwise other mods may not get a chance to block a player's use."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerUse",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when it's time to populate the context menu menu bar at the top.\n",
      "@name GamemodeHooks:PopulateMenuBar",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PopulateMenuBar",
      "@param {Gamemode} this - no description",
      "@param {DMenuBar} menubar - The @DMenuBar type itself.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PopulateMenuBar",
    "typings": [
      "(this: Gamemode, menubar: DMenuBar): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player unfreezes an object.\n",
      "@name GamemodeHooks:PlayerUnfrozeObject",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerUnfrozeObject",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who has unfrozen an object",
      "@param {Entity} ent - The unfrozen object",
      "@param {PhysObj} physobj - The frozen physics object of the unfrozen entity ( For ragdolls )",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerUnfrozeObject",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity, physobj: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player has been hit by a trace and damaged (such as from a bullet). Returning true overrides the damage handling and prevents @GamemodeHooks:ScalePlayerDamage from being called.\n",
      "@name GamemodeHooks:PlayerTraceAttack",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerTraceAttack",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player that has been hit",
      "@param {CTakeDamageInfo} dmginfo - The damage info of the bullet",
      "@param {Vector} dir - Normalized vector direction of the bullet's path",
      "@param {TraceResult} trace - The trace of the bullet's path, see @TraceResult structure",
      "@returns {boolean} - Override engine handling"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerTraceAttack",
    "typings": [
      "(this: Gamemode, ply: Player, dmginfo: CTakeDamageInfo, dir: Vector, trace: TraceResult): boolean"
    ]
  },
  {
    "comments": [
      "\nThe Move hook is called for you to manipulate the player's @CMoveData type. This hook is called moments before @GamemodeHooks:Move and @GamemodeHooks:PlayerNoClip.\n",
      "@name GamemodeHooks:PlayerTick",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerTick",
      "@warning This hook will not run when inside a vehicle. @GamemodeHooks:VehicleMove will be called instead.",
      "@param {Gamemode} this - no description",
      "@param {Player} player - The player",
      "@param {CMoveData} mv - The current movedata for the player.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerTick",
    "typings": [
      "(this: Gamemode, player: Player, mv: CMoveData): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player switches their weapon.\n",
      "@name GamemodeHooks:PlayerSwitchWeapon",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSwitchWeapon",
      "@bug #2922 This can be NULL on the client if the weapon hasn't been created over the network yet.",
      "@param {Gamemode} this - no description",
      "@param {Player} player - The player switching weapons.",
      "@param {Weapon} oldWeapon - The previous weapon. Will be NULL if the previous weapon was removed or the player is switching from nothing.",
      "@param {Weapon} newWeapon - The weapon the player switched to. Will be NULL if the player is switching to nothing.",
      "@returns {boolean} - Return true to prevent weapon switch"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSwitchWeapon",
    "typings": [
      "(this: Gamemode, player: Player, oldWeapon: Weapon, newWeapon: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a player attempts to either turn on or off their flashlight, returning false will deny the change.\n",
      "@name GamemodeHooks:PlayerSwitchFlashlight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSwitchFlashlight",
      "@note Also gets called when using @Player:Flashlight.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player who attempts to change their flashlight state.",
      "@param {boolean} enabled - The new state the player requested, true for on, false for off.",
      "@returns {boolean} - Can toggle the flashlight or not"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSwitchFlashlight",
    "typings": [
      "(this: Gamemode, ply: Player, enabled: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows you to override the time between footsteps.\n",
      "@name GamemodeHooks:PlayerStepSoundTime",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerStepSoundTime",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who is walking",
      "@param {STEPSOUNDTIME} type - The type of footsteps, see @STEPSOUNDTIME enum",
      "@param {boolean} walking - Is the player walking or not ( +walk? )",
      "@returns {number} - Time between footsteps, in ms"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerStepSoundTime",
    "typings": [
      "(this: Gamemode, ply: Player, type: STEPSOUNDTIME, walking: boolean): number"
    ]
  },
  {
    "comments": [
      "\nCalled when a player starts using voice chat.\n",
      "@name GamemodeHooks:PlayerStartVoice",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerStartVoice",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who started using voice chat",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerStartVoice",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled when player starts taunting.\n",
      "@name GamemodeHooks:PlayerStartTaunt",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerStartTaunt",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player who is taunting",
      "@param {number} act - The sequence ID of the taunt",
      "@param {number} length - Length of the taunt",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerStartTaunt",
    "typings": [
      "(this: Gamemode, ply: Player, act: number, length: number): void"
    ]
  },
  {
    "comments": [
      "\nDetermines if the player can spray using the \"impulse 201\" console command.\n",
      "@name GamemodeHooks:PlayerSpray",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSpray",
      "@param {Gamemode} this - no description",
      "@param {Player} sprayer - The player",
      "@returns {boolean} - Return false to allow spraying, return true to prevent spraying."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSpray",
    "typings": [
      "(this: Gamemode, sprayer: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled to spawn the player as a spectator.\n",
      "@name GamemodeHooks:PlayerSpawnAsSpectator",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSpawnAsSpectator",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player to spawn as a spectator",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSpawnAsSpectator",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a player spawns, including respawns.\nSee @GamemodeHooks:PlayerInitialSpawn for a hook called only the first time a player spawns.\nSee the [player_spawn gameevent](https://wiki.garrysmod.com/page/Game_Events) for a shared version of this hook.\n",
      "@name GamemodeHooks:PlayerSpawn",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSpawn",
      "@warning By default, in \"base\" derived gamemodes, this hook will also call @GamemodeHooks:PlayerLoadout and @GamemodeHooks:PlayerSetModel, which may override your @EntityFuncs:SetModel and @Player:Give calls. Consider using the other hooks or a 0-second timer.",
      "@param {Gamemode} this - no description",
      "@param {Player} player - The player who spawned.",
      "@param {boolean} transition - If true, the player just spawned from a map transition. You probably want to not touch player's weapons if this is set to true from this hook.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSpawn",
    "typings": [
      "(this: Gamemode, player: Player, transition: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player is killed by @Player:KillSilent.\nThe player is already considered dead when this hook is called.\n* See @GamemodeHooks:PlayerDeath for a hook which handles all other death causes.\n* @GamemodeHooks:PostPlayerDeath is called **after** this hook.\n",
      "@name GamemodeHooks:PlayerSilentDeath",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSilentDeath",
      "@note @Player:Alive will return true in this hook.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player who was killed",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSilentDeath",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nAllows to suppress player taunts.\n",
      "@name GamemodeHooks:PlayerShouldTaunt",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerShouldTaunt",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who tried to taunt",
      "@param {ACT} act - Act ID of the taunt player tries to do, see @ACT enum",
      "@returns {boolean} - Return false to disallow player taunting"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerShouldTaunt",
    "typings": [
      "(this: Gamemode, ply: Player, act: ACT): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the player should take damage from the given attacker.\n",
      "@name GamemodeHooks:PlayerShouldTakeDamage",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerShouldTakeDamage",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {Entity} attacker - The attacker",
      "@returns {boolean} - Allow damage"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerShouldTakeDamage",
    "typings": [
      "(this: Gamemode, ply: Player, attacker: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a player spawns and must choose a model. A good place to assign a model to a player.\n",
      "@name GamemodeHooks:PlayerSetModel",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSetModel",
      "@note This function may not work in your custom gamemode if you have overridden your @GamemodeHooks:PlayerSpawn and you do not use self.BaseClass.PlayerSpawn or @hook.Call.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player being chosen",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSetModel",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever view model hands needs setting a model. By default this calls @PlayerHooks:GetHandsModel and if that fails, sets the hands model according to his player model.\n",
      "@name GamemodeHooks:PlayerSetHandsModel",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSetHandsModel",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player whose hands needs a model set",
      "@param {Entity} ent - The hands to set model of",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSetHandsModel",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nFind a team spawn point entity for this player.\n",
      "@name GamemodeHooks:PlayerSelectTeamSpawn",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSelectTeamSpawn",
      "@param {Gamemode} this - no description",
      "@param {number} team - Players team",
      "@param {Player} ply - The player",
      "@returns {Entity} - The entity to use as a spawn point."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSelectTeamSpawn",
    "typings": [
      "(this: Gamemode, team: number, ply: Player): Entity"
    ]
  },
  {
    "comments": [
      "\nCalled to determine a spawn point for a player to spawn at.\n",
      "@name GamemodeHooks:PlayerSelectSpawn",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSelectSpawn",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player who needs a spawn point",
      "@param {boolean} transition - If true, the player just spawned from a map transition. You probably want to not return an entity for that case to not override player's position.",
      "@returns {Entity} - The spawnpoint entity to spawn the player at"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSelectSpawn",
    "typings": [
      "(this: Gamemode, ply: Player, transition: boolean): Entity"
    ]
  },
  {
    "comments": [
      "\nCalled when a player dispatched a chat message. For the clientside equivalent, see @GamemodeHooks:OnPlayerChat.\n",
      "@name GamemodeHooks:PlayerSay",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerSay",
      "@param {Gamemode} this - no description",
      "@param {Player} sender - The player which sent the message.",
      "@param {string} text - The message's content",
      "@param {boolean} teamChat - Is team chat?",
      "@returns {string} - What to show instead of original text.\nSet to \"\" to stop the message from displaying."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerSay",
    "typings": [
      "(this: Gamemode, sender: Player, text: string, teamChat: boolean): string"
    ]
  },
  {
    "comments": [
      "\nCalled after the player's think.\n",
      "@name GamemodeHooks:PlayerPostThink",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerPostThink",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerPostThink",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nRequest a player to join the team. This function will check if the team is available to join or not.\nThis hook is called when the player runs \"changeteam\" in the console.\nTo prevent the player from changing teams, see @GamemodeHooks:PlayerCanJoinTeam\n",
      "@name GamemodeHooks:PlayerRequestTeam",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerRequestTeam",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player to try to put into a team",
      "@param {number} team - Team to put the player into if the checks succeeded",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerRequestTeam",
    "typings": [
      "(this: Gamemode, ply: Player, team: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player tries to switch noclip mode.\n",
      "@name GamemodeHooks:PlayerNoClip",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerNoClip",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The person who entered/exited noclip",
      "@param {boolean} desiredState - Represents the noclip state (on/off) the user will enter if this hook allows them to.",
      "@returns {boolean} - Return false to disallow the switch."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerNoClip",
    "typings": [
      "(this: Gamemode, ply: Player, desiredState: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled to give players the default set of weapons.\n",
      "@name GamemodeHooks:PlayerLoadout",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerLoadout",
      "@note This function may not work in your custom gamemode if you have overridden your @GamemodeHooks:PlayerSpawn and you do not use self.BaseClass.PlayerSpawn or @hook.Call.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player to give weapons to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerLoadout",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player leaves a vehicle.\n",
      "@name GamemodeHooks:PlayerLeaveVehicle",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerLeaveVehicle",
      "@note For vehicles with exit animations, this will be called **at the end** of the animation, **not at the start**!",
      "@bug #2619 This is not called when a different vehicle is immediately entered with @Player:EnterVehicle.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who left a vehicle.",
      "@param {Vehicle} veh - Vehicle the player left.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerLeaveVehicle",
    "typings": [
      "(this: Gamemode, ply: Player, veh: Vehicle): void"
    ]
  },
  {
    "comments": [
      "\nMakes the player join a specified team. This is a convenience function that calls @Player:SetTeam and runs the @GamemodeHooks:OnPlayerChangedTeam hook.\n",
      "@name GamemodeHooks:PlayerJoinTeam",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerJoinTeam",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player to force",
      "@param {number} team - The team to put player into",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerJoinTeam",
    "typings": [
      "(this: Gamemode, ply: Player, team: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player spawns for the first time.\nSee @GamemodeHooks:PlayerSpawn for a hook called every player spawn.\n",
      "@name GamemodeHooks:PlayerInitialSpawn",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerInitialSpawn",
      "@note This hook is called before the player has fully loaded, when the player is still in seeing the \"Starting Lua\" screen. For example, trying to use the @EntityFuncs:GetModel function will return the default model (\"player/default.mdl\")",
      "@warning Due to the above note, sending @net library messages to the spawned player in this hook is highly unreliable, and they most likely won't be received. See https://github.com/Facepunch/garrysmod-requests/issues/718. A quick and dirty work-around is to delay any sending using @timer.Simple with at least 5 seconds delay.",
      "@param {Gamemode} this - no description",
      "@param {Player} player - The player who spawned.",
      "@param {boolean} transition - If true, the player just spawned from a map transition.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerInitialSpawn",
    "typings": [
      "(this: Gamemode, player: Player, transition: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player gets hurt.\n",
      "@name GamemodeHooks:PlayerHurt",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerHurt",
      "@param {Gamemode} this - no description",
      "@param {Player} victim - Victim",
      "@param {Entity} attacker - Attacker Entity",
      "@param {number} healthRemaining - Remaining Health",
      "@param {number} damageTaken - Damage Taken",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerHurt",
    "typings": [
      "(this: Gamemode, victim: Player, attacker: Entity, healthRemaining: number, damageTaken: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player freezes an object.\n",
      "@name GamemodeHooks:PlayerFrozeObject",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerFrozeObject",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who has frozen an object",
      "@param {Entity} ent - The frozen object",
      "@param {PhysObj} physobj - The frozen physics object of the frozen entity ( For ragdolls )",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerFrozeObject",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity, physobj: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a player steps. Return true to mute the normal sound.\n",
      "@name GamemodeHooks:PlayerFootstep",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerFootstep",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The stepping player",
      "@param {Vector} pos - The position of the step",
      "@param {number} foot - Foot that is stepped. 0 for left, 1 for right",
      "@param {string} sound - Sound that is going to play",
      "@param {number} volume - Volume of the footstep",
      "@param {CRecipientFilter} filter - The Recipient filter of players who can hear the footstep",
      "@returns {boolean} - Prevent default step sound"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerFootstep",
    "typings": [
      "(this: Gamemode, ply: Player, pos: Vector, foot: number, sound: string, volume: number, filter: CRecipientFilter): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player enters a vehicle.\nCalled just after @GamemodeHooks:CanPlayerEnterVehicle.\nSee also @GamemodeHooks:PlayerLeaveVehicle.\n",
      "@name GamemodeHooks:PlayerEnteredVehicle",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerEnteredVehicle",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who entered vehicle",
      "@param {Vehicle} veh - Vehicle the player entered",
      "@param {number} role - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerEnteredVehicle",
    "typings": [
      "(this: Gamemode, ply: Player, veh: Vehicle, role: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a weapon is dropped by a player via @Player:DropWeapon.\nSee also @GamemodeHooks:WeaponEquip for a hook when a player picks up a weapon.\nThe weapon's @EntityFuncs:GetOwner will be NULL at the time this hook is called.\n@WeaponHooks:OnDrop will be called before this hook is.\n",
      "@name GamemodeHooks:PlayerDroppedWeapon",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerDroppedWeapon",
      "@param {Gamemode} this - no description",
      "@param {Player} owner - The player who owned this weapon before it was dropped",
      "@param {Weapon} wep - The weapon that was dropped",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerDroppedWeapon",
    "typings": [
      "(this: Gamemode, owner: Player, wep: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled when player stops using voice chat.\n",
      "@name GamemodeHooks:PlayerEndVoice",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerEndVoice",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who stopped talking",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerEndVoice",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled to update the player's animation during a drive.\n",
      "@name GamemodeHooks:PlayerDriveAnimate",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerDriveAnimate",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The driving player",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerDriveAnimate",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player leaves the server. See the [player_disconnect gameevent](https://wiki.garrysmod.com/page/Game_Events) for a shared version of this hook.\n",
      "@name GamemodeHooks:PlayerDisconnected",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerDisconnected",
      "@bug #3523 This is not called in single-player or listen servers for the host.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - the player",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerDisconnected",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the default death sound should be muted.\n",
      "@name GamemodeHooks:PlayerDeathSound",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerDeathSound",
      "@param {Gamemode} this - no description",
      "@returns {boolean} - Mute death sound"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerDeathSound",
    "typings": [
      "(this: Gamemode): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled every think while the player is dead. The return value will determine if the player respawns.\nOverwriting this function will prevent players from respawning by pressing space or clicking.\n",
      "@name GamemodeHooks:PlayerDeathThink",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerDeathThink",
      "@bug #1577 This hook is not called for players with the [FL_FROZEN](https://wiki.garrysmod.com/page/Enums/FL) flag applied.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player affected in the hook.",
      "@returns {boolean} - Allow spawn"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerDeathThink",
    "typings": [
      "(this: Gamemode, ply: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player is killed by @Player:Kill or any other normal means.\nThis hook is **not** called if the player is killed by @Player:KillSilent. See @GamemodeHooks:PlayerSilentDeath for that.\n* @GamemodeHooks:DoPlayerDeath is called **before** this hook.\n* @GamemodeHooks:PostPlayerDeath is called **after** this hook.\nSee @Player:LastHitGroup if you need to get the last hit hitgroup of the player.\n",
      "@name GamemodeHooks:PlayerDeath",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerDeath",
      "@note @Player:Alive will return true in this hook.",
      "@param {Gamemode} this - no description",
      "@param {Player} victim - The player who died",
      "@param {Entity} inflictor - Item used to kill the victim",
      "@param {Entity} attacker - Player or entity that killed the victim",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerDeath",
    "typings": [
      "(this: Gamemode, victim: Player, inflictor: Entity, attacker: Entity): void"
    ]
  },
  {
    "comments": [
      "\nExecutes when a player connects to the server. Called before the player has been assigned a [UserID](https://wiki.garrysmod.com/page/Player/UserID) and entity. See the [player_connect gameevent](https://wiki.garrysmod.com/page/Game_Events) for a version of this hook called after the player entity has been created.\n",
      "@name GamemodeHooks:PlayerConnect",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerConnect",
      "@note This is only called clientside for listen server hosts.",
      "@note This is not called clientside for the local player.",
      "@note This argument will only be passed serverside.",
      "@param {Gamemode} this - no description",
      "@param {string} name - The player's name.",
      "@param {string} ip - The player's IP address. Will be \"none\" for bots.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerConnect",
    "typings": [
      "(this: Gamemode, name: string, ip: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a player's class is changed on the server-side with @player_manager.SetPlayerClass.\n",
      "@name GamemodeHooks:PlayerClassChanged",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerClassChanged",
      "@internal",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player whose class has been changed.",
      "@param {number} newID - The network ID of the player class's name string, or 0 if we are clearing a player class from the player.\nPass this into @util.NetworkIDToString to retrieve the proper name of the player class.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerClassChanged",
    "typings": [
      "(this: Gamemode, ply: Player, newID: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not a player is allowed to pick up a weapon.\n",
      "@name GamemodeHooks:PlayerCanPickupWeapon",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerCanPickupWeapon",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player attempting to pick up the weapon",
      "@param {Weapon} wep - The weapon entity in question",
      "@returns {boolean} - Allowed pick up or not"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerCanPickupWeapon",
    "typings": [
      "(this: Gamemode, ply: Player, wep: Weapon): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the player can see the other player's chat.\n",
      "@name GamemodeHooks:PlayerCanSeePlayersChat",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerCanSeePlayersChat",
      "@param {Gamemode} this - no description",
      "@param {string} text - The chat text",
      "@param {boolean} teamOnly - If the message is team-only",
      "@param {Player} listener - The player receiving the message",
      "@param {Player} speaker - The player sending the message",
      "@returns {boolean} - Can see other player's chat"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerCanSeePlayersChat",
    "typings": [
      "(this: Gamemode, text: string, teamOnly: boolean, listener: Player, speaker: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not a player is allowed to pick an item up.\n",
      "@name GamemodeHooks:PlayerCanPickupItem",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerCanPickupItem",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player attempting to pick up",
      "@param {Entity} item - The item the player is attempting to pick up",
      "@returns {boolean} - Allow pick up"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerCanPickupItem",
    "typings": [
      "(this: Gamemode, ply: Player, item: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not a player is allowed to join a team\n",
      "@name GamemodeHooks:PlayerCanJoinTeam",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerCanJoinTeam",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player attempting to switch teams",
      "@param {number} team - Index of the team",
      "@returns {boolean} - Allowed to switch"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerCanJoinTeam",
    "typings": [
      "(this: Gamemode, ply: Player, team: number): boolean"
    ]
  },
  {
    "comments": [
      "\nDecides whether a player can hear another player using voice chat.\n",
      "@name GamemodeHooks:PlayerCanHearPlayersVoice",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerCanHearPlayersVoice",
      "@note This hook is called several times a tick, so ensure your code is efficient.",
      "@param {Gamemode} this - no description",
      "@param {Player} listener - The listening player.",
      "@param {Player} talker - The talking player.",
      "@returns {boolean} - Return true if the listener should hear the talker, false if they shouldn't.",
      "@returns {boolean} - 3D sound. If set to true, will fade out the sound the further away listener is from the  talker, the voice will also be in stereo, and not mono.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerCanHearPlayersVoice",
    "typings": [
      "(this: Gamemode, listener: Player, talker: Player): [boolean, boolean]"
    ]
  },
  {
    "comments": [
      "\nCalled when a player releases a button.\n",
      "@name GamemodeHooks:PlayerButtonUp",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerButtonUp",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who released the button",
      "@param {BUTTON_CODE} button - The button, see @BUTTON_CODE enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerButtonUp",
    "typings": [
      "(this: Gamemode, ply: Player, button: BUTTON_CODE): void"
    ]
  },
  {
    "comments": [
      "\nRuns when a bind has been pressed. Allows to block commands.\n",
      "@name GamemodeHooks:PlayerBindPress",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerBindPress",
      "@note By using the \"alias\" console command, this hook can be effectively circumvented",
      "@note To stop the user from using +attack, +left and any other movement commands of the sort, please look into using @GamemodeHooks:StartCommand instead",
      "@bug #1176 The third argument will always be true.",
      "@bug #2888 This does not run for function keys binds (F1-F12).",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player who used the command; this will always be equal to @LocalPlayer function",
      "@param {string} bind - The bind command",
      "@param {boolean} pressed - If the bind was activated or deactivated",
      "@returns {boolean} - Return true to prevent the bind"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerBindPress",
    "typings": [
      "(this: Gamemode, ply: Player, bind: string, pressed: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player presses a button.\n",
      "@name GamemodeHooks:PlayerButtonDown",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerButtonDown",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who pressed the button",
      "@param {BUTTON_CODE} button - The button, see @BUTTON_CODE enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerButtonDown",
    "typings": [
      "(this: Gamemode, ply: Player, button: BUTTON_CODE): void"
    ]
  },
  {
    "comments": [
      "\nCalled once when the player is authenticated.\n",
      "@name GamemodeHooks:PlayerAuthed",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/PlayerAuthed",
      "@bug #3026 @CurTime function returns 0 in this hook.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {string} steamid - The player's SteamID",
      "@param {string} uniqueid - The player's UniqueID",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PlayerAuthed",
    "typings": [
      "(this: Gamemode, ply: Player, steamid: string, uniqueid: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled to determine if a player should be able to pick up an entity with the Physics Gun.\nSee @GamemodeHooks:OnPhysgunPickup for a hook which is called when a player has successfully picked up an entity.\n",
      "@name GamemodeHooks:PhysgunPickup",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PhysgunPickup",
      "@param {Gamemode} this - no description",
      "@param {Player} player - The player that is picking up using the Physics Gun.",
      "@param {Entity} entity - The entity that is being picked up.",
      "@returns {boolean} - Returns whether the player can pick up the entity or not."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PhysgunPickup",
    "typings": [
      "(this: Gamemode, player: Player, entity: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player drops an entity with the Physgun.\n",
      "@name GamemodeHooks:PhysgunDrop",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/PhysgunDrop",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player who dropped an entitiy",
      "@param {Entity} ent - The dropped entity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "PhysgunDrop",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player changes their weapon to another one - and their viewmodel model changes.\n",
      "@name GamemodeHooks:OnViewModelChanged",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnViewModelChanged",
      "@bug #2473 This is not always called clientside.",
      "@param {Gamemode} this - no description",
      "@param {Entity} viewmodel - The viewmodel that is changing",
      "@param {string} oldModel - The old model",
      "@param {string} newModel - The new model",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnViewModelChanged",
    "typings": [
      "(this: Gamemode, viewmodel: Entity, oldModel: string, newModel: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player undoes something.\n",
      "@name GamemodeHooks:OnUndo",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/OnUndo",
      "@param {Gamemode} this - no description",
      "@param {string} name - The name of the undo action",
      "@param {string} customText - The custom text for the undo, set by @undo.SetCustomUndoText",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnUndo",
    "typings": [
      "(this: Gamemode, name: string, customText: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled when DTextEntry loses focus.\n",
      "@name GamemodeHooks:OnTextEntryLoseFocus",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/OnTextEntryLoseFocus",
      "@param {Gamemode} this - no description",
      "@param {Panel} panel - The panel that lost focus",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnTextEntryLoseFocus",
    "typings": [
      "(this: Gamemode, panel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a @DTextEntry type gets focus.\nThis hook is run from @DTextEntry:OnGetFocus and @PanelHooks:OnMousePressed of @DTextEntry type.\n",
      "@name GamemodeHooks:OnTextEntryGetFocus",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/OnTextEntryGetFocus",
      "@param {Gamemode} this - no description",
      "@param {Panel} panel - The panel that got focus",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnTextEntryGetFocus",
    "typings": [
      "(this: Gamemode, panel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player presses the \"+menu\" bind on their keyboard, which is bound to Q by default.\n",
      "@name GamemodeHooks:OnSpawnMenuOpen",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/OnSpawnMenuOpen",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnSpawnMenuOpen",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player releases the \"+menu\" bind on their keyboard, which is bound to Q by default.\n",
      "@name GamemodeHooks:OnSpawnMenuClose",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/OnSpawnMenuClose",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnSpawnMenuClose",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when gamemode has been reloaded by auto refresh.\n",
      "@name GamemodeHooks:OnReloaded",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnReloaded",
      "@note It seems that this event can be triggered more than once for a single refresh event.",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnReloaded",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player makes contact with the ground.\n",
      "@name GamemodeHooks:OnPlayerHitGround",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnPlayerHitGround",
      "@param {Gamemode} this - no description",
      "@param {Entity} player - Player",
      "@param {boolean} inWater - Did the player land in water?",
      "@param {boolean} onFloater - Did the player land on an object floating in the water?",
      "@param {number} speed - The speed at which the player hit the ground",
      "@returns {boolean} - Return true to suppress default action"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnPlayerHitGround",
    "typings": [
      "(this: Gamemode, player: Entity, inWater: boolean, onFloater: boolean, speed: number): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a player sends a chat message. For the serverside equivalent, see @GamemodeHooks:PlayerSay.\n",
      "@name GamemodeHooks:OnPlayerChat",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/OnPlayerChat",
      "@note The text input of this hook depends on @GamemodeHooks:PlayerSay. If it is suppressed on the server, it will be suppressed on the client.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {string} text - The message's text",
      "@param {boolean} teamChat - Is the player typing in team chat?",
      "@param {boolean} isDead - Is the player dead?",
      "@returns {boolean} - Should the message be suppressed?"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnPlayerChat",
    "typings": [
      "(this: Gamemode, ply: Player, text: string, teamChat: boolean, isDead: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a player has changed team using @GamemodeHooks:PlayerJoinTeam.\n",
      "@name GamemodeHooks:OnPlayerChangedTeam",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnPlayerChangedTeam",
      "@warning This hook will not work with @hook.Add and it is only called manually from @GamemodeHooks:PlayerJoinTeam by the base gamemode",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who has changed team",
      "@param {number} oldTeam - Index of the team the player was originally in",
      "@param {number} newTeam - Index of the team the player has changed to",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnPlayerChangedTeam",
    "typings": [
      "(this: Gamemode, ply: Player, oldTeam: number, newTeam: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player reloads with the physgun. Override this to disable default unfreezing behavior.\n",
      "@name GamemodeHooks:OnPhysgunReload",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnPhysgunReload",
      "@param {Gamemode} this - no description",
      "@param {Weapon} physgun - The physgun in question",
      "@param {Player} ply - The player wielding the physgun",
      "@returns {boolean} - Whether the player can reload with the physgun or not"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnPhysgunReload",
    "typings": [
      "(this: Gamemode, physgun: Weapon, ply: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled to when a player has successfully picked up an entity with their Physics Gun.\nNot to be confused with @GamemodeHooks:PhysgunPickup which is called multiple times to ask if the player should be able to pick up an entity.\n",
      "@name GamemodeHooks:OnPhysgunPickup",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnPhysgunPickup",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player that has picked up something using the physics gun.",
      "@param {Entity} ent - The entity that was picked up.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnPhysgunPickup",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player freezes an entity with the physgun.\n",
      "@name GamemodeHooks:OnPhysgunFreeze",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnPhysgunFreeze",
      "@bug #723 This is not called for players or NPCs being held with the physgun.",
      "@param {Gamemode} this - no description",
      "@param {Entity} weapon - The weapon that was used to freeze the entity.",
      "@param {PhysObj} physobj - Physics object of the entity.",
      "@param {Entity} ent - The target entity.",
      "@param {Player} ply - The player who tried to freeze the entity.",
      "@returns {boolean} - Allows you to override whether the player can freeze the entity"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnPhysgunFreeze",
    "typings": [
      "(this: Gamemode, weapon: Entity, physobj: PhysObj, ent: Entity, ply: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever an NPC is killed.\n",
      "@name GamemodeHooks:OnNPCKilled",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnNPCKilled",
      "@param {Gamemode} this - no description",
      "@param {NPC} npc - The killed NPC",
      "@param {Entity} attacker - The NPCs attacker, the entity that gets the kill credit, for example a player or an NPC.",
      "@param {Entity} inflictor - Death inflictor. The entity that did the killing. Not necessarily a weapon.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnNPCKilled",
    "typings": [
      "(this: Gamemode, npc: NPC, attacker: Entity, inflictor: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a Lua error occurs, only works in the Menu realm.\n",
      "@name GamemodeHooks:OnLuaError",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/OnLuaError",
      "@warning Modify menu state Lua code at your own risk!",
      "@param {Gamemode} this - no description",
      "@param {string} error - The error that occurred.",
      "@param {number} realm - Where the Lua error took place",
      "@param {string} name - Title of the addon that is creating the Lua errors",
      "@param {number} id - Steam Workshop ID of the addon creating Lua errors, if it is an addon.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnLuaError",
    "typings": [
      "(this: Gamemode, error: string, realm: number, name: string, id: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the gamemode is loaded.\n@LocalPlayer function() returns NULL at the time this is run.\n",
      "@name GamemodeHooks:OnGamemodeLoaded",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnGamemodeLoaded",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnGamemodeLoaded",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity is created.\n",
      "@name GamemodeHooks:OnEntityCreated",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnEntityCreated",
      "@note Some entities on initial map spawn are passed through this hook, and then removed in the same frame. This is used by the engine to precache things like models and sounds, so always check their validity with @IsValid function.",
      "@warning Removing the created entity during this event can lead to unexpected problems. Use @timer.Simple( 0, .... ) to safely remove the entity.",
      "@param {Gamemode} this - no description",
      "@param {Entity} entity - The entity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnEntityCreated",
    "typings": [
      "(this: Gamemode, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the context menu keybind (+menu_context) is pressed, which by default is C.\nSee also @GamemodeHooks:OnContextMenuClose.\n",
      "@name GamemodeHooks:OnContextMenuOpen",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/OnContextMenuOpen",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnContextMenuOpen",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the context menu keybind (+menu_context) is released, which by default is C.\nThis hook will not run if @input.IsKeyTrapping returns true.\nSee also @GamemodeHooks:OnContextMenuOpen.\n",
      "@name GamemodeHooks:OnContextMenuClose",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/OnContextMenuClose",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnContextMenuClose",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player has been hurt by an explosion. Override to disable default sound effect.\n",
      "@name GamemodeHooks:OnDamagedByExplosion",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/OnDamagedByExplosion",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who has been hurt",
      "@param {CTakeDamageInfo} dmginfo - Damage info from explsion",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnDamagedByExplosion",
    "typings": [
      "(this: Gamemode, ply: Player, dmginfo: CTakeDamageInfo): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player has achieved an achievement. You can get the name and other information from an achievement ID with the @achievements type library.\n",
      "@name GamemodeHooks:OnAchievementAchieved",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/OnAchievementAchieved",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player that earned the achievement",
      "@param {number} achievement - The index of the achievement",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnAchievementAchieved",
    "typings": [
      "(this: Gamemode, ply: Player, achievement: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the local player presses TAB while having their chatbox opened.\n",
      "@name GamemodeHooks:OnChatTab",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/OnChatTab",
      "@param {Gamemode} this - no description",
      "@param {string} text - The currently typed into chatbox text",
      "@returns {string} - What should be placed into the chatbox instead of what currently is when player presses tab"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "OnChatTab",
    "typings": [
      "(this: Gamemode, text: string): string"
    ]
  },
  {
    "comments": [
      "\nCalled whenever this entity changes its transmission state for this @LocalPlayer function, such as exiting or re entering the PVS.\n",
      "@name GamemodeHooks:NotifyShouldTransmit",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/NotifyShouldTransmit",
      "@note This is the best place to handle the reset of @EntityFuncs:SetPredictable, as this would be usually called when the player lags and requests a full packet update",
      "@note When the entity stops transmitting, @EntityFuncs:IsDormant will only return true **after** this hook",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - The entity that changed its transmission state.",
      "@param {boolean} shouldtransmit - True if we started transmitting to this client and false if we stopped.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "NotifyShouldTransmit",
    "typings": [
      "(this: Gamemode, ent: Entity, shouldtransmit: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player has been validated by Steam.\n",
      "@name GamemodeHooks:NetworkIDValidated",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/NetworkIDValidated",
      "@param {Gamemode} this - no description",
      "@param {string} name - Player name",
      "@param {string} steamID - Player SteamID",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "NetworkIDValidated",
    "typings": [
      "(this: Gamemode, name: string, steamID: string): void"
    ]
  },
  {
    "comments": [
      "\nReturning true in this hook will cause it to render depth buffers defined with @render.GetResolvedFullFrameDepth.\n",
      "@name GamemodeHooks:NeedsDepthPass",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/NeedsDepthPass",
      "@param {Gamemode} this - no description",
      "@returns {boolean} - Render depth buffer"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "NeedsDepthPass",
    "typings": [
      "(this: Gamemode): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when an entity has been created over the network.\n",
      "@name GamemodeHooks:NetworkEntityCreated",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/NetworkEntityCreated",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - Created entity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "NetworkEntityCreated",
    "typings": [
      "(this: Gamemode, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nThe Move hook is called for you to manipulate the player's MoveData.\nYou shouldn't adjust the player's position in any way in the move hook. This is because due to prediction errors, the netcode might run the move hook multiple times as packets arrive late. Therefore you should only adjust the movedata construct in this hook.\nGenerally you shouldn't have to use this hook - if you want to make a custom move type you should look at the drive system.\nThis hook is called after @GamemodeHooks:PlayerTick.\nSee [Game Movement](https://wiki.garrysmod.com/page/Game%20Movement) for an explanation on the move system.\n",
      "@name GamemodeHooks:Move",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/Move",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player",
      "@param {CMoveData} mv - Movement information",
      "@returns {boolean} - Return true to suppress default engine action"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "Move",
    "typings": [
      "(this: Gamemode, ply: Player, mv: CMoveData): boolean"
    ]
  },
  {
    "comments": [
      "\nOverride this gamemode function to disable mouth movement when talking on voice chat.\n",
      "@name GamemodeHooks:MouthMoveAnimation",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/MouthMoveAnimation",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player in question",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "MouthMoveAnimation",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nCalled when *menu.lua* has finished loading.\n",
      "@name GamemodeHooks:MenuStart",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/MenuStart",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "MenuStart",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled from gm_load when the game should load a map.\n",
      "@name GamemodeHooks:LoadGModSave",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/LoadGModSave",
      "@param {Gamemode} this - no description",
      "@param {string} data - no description",
      "@param {string} map - no description",
      "@param {number} timestamp - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "LoadGModSave",
    "typings": [
      "(this: Gamemode, data: string, map: string, timestamp: number): void"
    ]
  },
  {
    "comments": [
      "\nRuns when a IN key was released by a player.\nFor a more general purpose function that handles all kinds of input, see @GamemodeHooks:PlayerButtonUp\n",
      "@name GamemodeHooks:KeyRelease",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/KeyRelease",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player releasing the key. If running client-side, this will always be @LocalPlayer function",
      "@param {IN} key - The key that the player released using @IN enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "KeyRelease",
    "typings": [
      "(this: Gamemode, ply: Player, key: IN): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a player pressed a key included within the IN keys.\nFor a more general purpose function that handles all kinds of input, see @GamemodeHooks:PlayerButtonDown\n",
      "@name GamemodeHooks:KeyPress",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/KeyPress",
      "@warning Due to this being a predicted hook, @ParticleEffect functions created only serverside from this hook will not be networked to the client, so make sure to do that on both realms",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player pressing the key. If running client-side, this will always be @LocalPlayer function",
      "@param {IN} key - The key that the player pressed using @IN enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "KeyPress",
    "typings": [
      "(this: Gamemode, ply: Player, key: IN): void"
    ]
  },
  {
    "comments": [
      "\nCheck if a player can spawn at a certain spawnpoint.\n",
      "@name GamemodeHooks:IsSpawnpointSuitable",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/IsSpawnpointSuitable",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player who is spawned",
      "@param {Entity} spawnpoint - The spawnpoint entity (on the map)",
      "@param {boolean} makeSuitable - If this is true, it'll kill any players blocking the spawnpoint",
      "@returns {boolean} - Return true to indicate that the spawnpoint is suitable (Allow for the player to spawn here), false to prevent spawning"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "IsSpawnpointSuitable",
    "typings": [
      "(this: Gamemode, ply: Player, spawnpoint: Entity, makeSuitable: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows you to modify the supplied User Command with mouse input. This could be used to make moving the mouse do funky things to view angles.\n",
      "@name GamemodeHooks:InputMouseApply",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/InputMouseApply",
      "@param {Gamemode} this - no description",
      "@param {CUserCmd} cmd - User command",
      "@param {number} x - The amount of mouse movement across the X axis this frame",
      "@param {number} y - The amount of mouse movement across the Y axis this frame",
      "@param {Angle} ang - The current view angle",
      "@returns {boolean} - Return true if we modified something"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "InputMouseApply",
    "typings": [
      "(this: Gamemode, cmd: CUserCmd, x: number, y: number, ang: Angle): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled after all the entities are initialized.\n",
      "@name GamemodeHooks:InitPostEntity",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/InitPostEntity",
      "@note At this point the client only knows about the entities that are within the spawnpoints' [PVS](https://en.wikipedia.org/wiki/Potentially_visible_set). For instance, if the server sends an entity that is not within this PVS, the client will receive it as NULL entity.",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "InitPostEntity",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the gamemode loads and starts.\n",
      "@name GamemodeHooks:Initialize",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/Initialize",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "Initialize",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a weapon has been picked up. Override to disable the default HUD notification.\n",
      "@name GamemodeHooks:HUDWeaponPickedUp",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/HUDWeaponPickedUp",
      "@param {Gamemode} this - no description",
      "@param {Weapon} weapon - The picked up weapon",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HUDWeaponPickedUp",
    "typings": [
      "(this: Gamemode, weapon: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the Gamemode is about to draw a given element on the client's HUD (heads-up display).\n",
      "@name GamemodeHooks:HUDShouldDraw",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/HUDShouldDraw",
      "@note This hook is called HUNDREDS of times per second (more than 5 times per frame on average). You shouldn't be performing any computationally intensive operations.",
      "@param {Gamemode} this - no description",
      "@param {string} name - The name of the HUD element. You can find a full list of HUD elements for this hook [here](https://wiki.garrysmod.com/page/HUD_Element_List).",
      "@returns {boolean} - Return false to prevent the given element from being drawn on the client's screen."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HUDShouldDraw",
    "typings": [
      "(this: Gamemode, name: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled before @GamemodeHooks:HUDPaint when the HUD background is being drawn.\nThings rendered in this hook will **always** appear behind things rendered in @GamemodeHooks:HUDPaint.\n",
      "@name GamemodeHooks:HUDPaintBackground",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/HUDPaintBackground",
      "@rendering hook:2d",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HUDPaintBackground",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the HUD should be drawn. Called right before @GamemodeHooks:HUDDrawScoreBoard and after @GamemodeHooks:HUDPaintBackground.\nNot called when the Camera SWEP is equipped. See also @GamemodeHooks:DrawOverlay.\n",
      "@name GamemodeHooks:HUDPaint",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/HUDPaint",
      "@rendering hook:2d",
      "@note Only be called when r_drawvgui is enabled and the game is not paused",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HUDPaint",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when an item has been picked up. Override to disable the default HUD notification.\n",
      "@name GamemodeHooks:HUDItemPickedUp",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/HUDItemPickedUp",
      "@param {Gamemode} this - no description",
      "@param {string} itemName - Name of the picked up item",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HUDItemPickedUp",
    "typings": [
      "(this: Gamemode, itemName: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled from @GamemodeHooks:HUDPaint to draw player info when you hover over a player with your crosshair or mouse.\n",
      "@name GamemodeHooks:HUDDrawTargetID",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/HUDDrawTargetID",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HUDDrawTargetID",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled every frame to render the scoreboard.\nIt is recommended to use Derma and VGUI for this job instead of this hook. Called right after @GamemodeHooks:HUDPaint.\n",
      "@name GamemodeHooks:HUDDrawScoreBoard",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/HUDDrawScoreBoard",
      "@rendering hook:2d",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HUDDrawScoreBoard",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nRenders the HUD pick-up history. Override to hide default or draw your own HUD.\n",
      "@name GamemodeHooks:HUDDrawPickupHistory",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/HUDDrawPickupHistory",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HUDDrawPickupHistory",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the client has picked up ammo. Override to disable default HUD notification.\n",
      "@name GamemodeHooks:HUDAmmoPickedUp",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/HUDAmmoPickedUp",
      "@param {Gamemode} this - no description",
      "@param {string} itemName - Name of the item (ammo) picked up",
      "@param {number} amount - Amount of the item (ammo) picked up",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HUDAmmoPickedUp",
    "typings": [
      "(this: Gamemode, itemName: string, amount: number): void"
    ]
  },
  {
    "comments": [
      "\nHides the team selection panel.\n",
      "@name GamemodeHooks:HideTeam",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/HideTeam",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HideTeam",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nAllows to override player flying ( in mid-air, not noclipping ) animations.\n",
      "@name GamemodeHooks:HandlePlayerVaulting",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/HandlePlayerVaulting",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {number} velocity - Players velocity",
      "@returns {boolean} - Return true if we've changed/set the animation, false otherwise"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HandlePlayerVaulting",
    "typings": [
      "(this: Gamemode, ply: Player, velocity: number): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows to override player swimming animations.\n",
      "@name GamemodeHooks:HandlePlayerSwimming",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/HandlePlayerSwimming",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {number} velocity - Players velocity",
      "@returns {boolean} - Return true if we've changed/set the animation, false otherwise"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HandlePlayerSwimming",
    "typings": [
      "(this: Gamemode, ply: Player, velocity: number): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows to override player noclip animations.\n",
      "@name GamemodeHooks:HandlePlayerNoClipping",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/HandlePlayerNoClipping",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {number} velocity - Players velocity",
      "@returns {boolean} - Return true if we've changed/set the animation, false otherwise"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HandlePlayerNoClipping",
    "typings": [
      "(this: Gamemode, ply: Player, velocity: number): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows to override player jumping animations.\n",
      "@name GamemodeHooks:HandlePlayerJumping",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/HandlePlayerJumping",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {number} velocity - Players velocity",
      "@returns {boolean} - Return true if we've changed/set the animation, false otherwise"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HandlePlayerJumping",
    "typings": [
      "(this: Gamemode, ply: Player, velocity: number): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows to override player crouch animations.\n",
      "@name GamemodeHooks:HandlePlayerDucking",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/HandlePlayerDucking",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {number} velocity - Players velocity",
      "@returns {boolean} - Return true if we've changed/set the animation, false otherwise"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HandlePlayerDucking",
    "typings": [
      "(this: Gamemode, ply: Player, velocity: number): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows to override player landing animations.\n",
      "@name GamemodeHooks:HandlePlayerLanding",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/HandlePlayerLanding",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {number} velocity - Players velocity",
      "@param {boolean} onGround - Was the player on ground?",
      "@returns {boolean} - Return true if we've changed/set the animation, false otherwise"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HandlePlayerLanding",
    "typings": [
      "(this: Gamemode, ply: Player, velocity: number, onGround: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows to override player driving animations.\n",
      "@name GamemodeHooks:HandlePlayerDriving",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/HandlePlayerDriving",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player to process",
      "@returns {boolean} - Return true if we've changed/set the animation, false otherwise"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "HandlePlayerDriving",
    "typings": [
      "(this: Gamemode, ply: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a players releases a mouse key on the context menu in Sandbox or on any panel derived from CGModBase, such as the panel used by @gui.EnableScreenClicker and the panel used by @Panel:ParentToHUD.\n",
      "@name GamemodeHooks:GUIMouseReleased",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/GUIMouseReleased",
      "@param {Gamemode} this - no description",
      "@param {MOUSE} mouseCode - The key the player released, see @MOUSE enum",
      "@param {Vector} aimVector - A normalized direction vector local to the camera. Internally this is  @gui.ScreenToVector( @gui.MousePos() ).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GUIMouseReleased",
    "typings": [
      "(this: Gamemode, mouseCode: MOUSE, aimVector: Vector): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a players presses a mouse key on the context menu in Sandbox or on any panel derived from CGModBase, such as the panel used by @gui.EnableScreenClicker and the panel used by @Panel:ParentToHUD.\nSee @GamemodeHooks:VGUIMousePressed for a hook that is called on all VGUI elements.\n",
      "@name GamemodeHooks:GUIMousePressed",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/GUIMousePressed",
      "@param {Gamemode} this - no description",
      "@param {MOUSE} mouseCode - The key that the player pressed using @MOUSE enum.",
      "@param {Vector} aimVector - A normalized direction vector local to the camera. Internally, this is  @gui.ScreenToVector( @gui.MousePos() ).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GUIMousePressed",
    "typings": [
      "(this: Gamemode, mouseCode: MOUSE, aimVector: Vector): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the mouse has been double clicked on any panel derived from CGModBase, such as the panel used by @gui.EnableScreenClicker and the panel used by @Panel:ParentToHUD.\nBy default this hook calls @GamemodeHooks:GUIMousePressed.\n",
      "@name GamemodeHooks:GUIMouseDoublePressed",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/GUIMouseDoublePressed",
      "@param {Gamemode} this - no description",
      "@param {MOUSE} mouseCode - The code of the mouse button pressed, see @MOUSE enum",
      "@param {Vector} aimVector - A normalized vector pointing in the direction the client has clicked",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GUIMouseDoublePressed",
    "typings": [
      "(this: Gamemode, mouseCode: MOUSE, aimVector: Vector): void"
    ]
  },
  {
    "comments": [
      "\nCalled when an entity is about to be punted with the gravity gun (primary fire).\nBy default this function makes @EntityHooks:GravGunPunt work in Sandbox derived gamemodes.\n",
      "@name GamemodeHooks:GravGunPunt",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/GravGunPunt",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player wielding the gravity gun",
      "@param {Entity} ent - The entity the player is attempting to punt",
      "@returns {boolean} - Return true to allow and false to disallow."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GravGunPunt",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled every tick to poll whether a player is allowed to pick up an entity with the gravity gun or not.\nSee @GamemodeHooks:AllowPlayerPickup for the +USE pickup variant.\nCalls @EntityHooks:GravGunPickupAllowed on the entity being hovered every frame in Sandbox-derived gamemodes.\n",
      "@name GamemodeHooks:GravGunPickupAllowed",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/GravGunPickupAllowed",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player wielding the gravity gun",
      "@param {Entity} ent - The entity the player is attempting to pick up",
      "@returns {boolean} - Return true to allow entity pick up"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GravGunPickupAllowed",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when an entity is picked up by a gravity gun.\n",
      "@name GamemodeHooks:GravGunOnPickedUp",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/GravGunOnPickedUp",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player wielding the gravity gun",
      "@param {Entity} ent - The entity that has been picked up by the gravity gun",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GravGunOnPickedUp",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when an entity is released by a gravity gun.\n",
      "@name GamemodeHooks:GravGunOnDropped",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/GravGunOnDropped",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who is wielding the gravity gun",
      "@param {Entity} ent - The entity that has been dropped",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GravGunOnDropped",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nOverride this hook to disable/change ear-grabbing in your gamemode.\n",
      "@name GamemodeHooks:GrabEarAnimation",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/GrabEarAnimation",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GrabEarAnimation",
    "typings": [
      "(this: Gamemode, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns the team color for the given team index.\n",
      "@name GamemodeHooks:GetTeamNumColor",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/GetTeamNumColor",
      "@param {Gamemode} this - no description",
      "@param {number} team - Team index",
      "@returns {table} - Team @Color function"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GetTeamNumColor",
    "typings": [
      "(this: Gamemode, team: number): table"
    ]
  },
  {
    "comments": [
      "\nReturns the color for the given entity's team. This is used in chat and deathnotice text.\n",
      "@name GamemodeHooks:GetTeamColor",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/GetTeamColor",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - Entity",
      "@returns {table} - Team @Color function"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GetTeamColor",
    "typings": [
      "(this: Gamemode, ent: Entity): table"
    ]
  },
  {
    "comments": [
      "\nAllows you to modify the Source Engine's motion blur shaders.\n",
      "@name GamemodeHooks:GetMotionBlurValues",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/GetMotionBlurValues",
      "@param {Gamemode} this - no description",
      "@param {number} horizontal - The amount of horizontal blur.",
      "@param {number} vertical - The amount of vertical  blur.",
      "@param {number} forward - The amount of forward/radial blur.",
      "@param {number} rotational - The amount of rotational blur.",
      "@returns {number} - New amount of horizontal blur.",
      "@returns {number} - New amount of vertical blur.",
      "@returns {number} - New amount of forward/radial blur.",
      "@returns {number} - New amount of rotational blur.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GetMotionBlurValues",
    "typings": [
      "(this: Gamemode, horizontal: number, vertical: number, forward: number, rotational: number): [number, number, number, number]"
    ]
  },
  {
    "comments": [
      "\nCalled to determine preferred carry angles for the entity. It works for both, +use pickup and gravity gun pickup.\n",
      "@name GamemodeHooks:GetPreferredCarryAngles",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/GetPreferredCarryAngles",
      "@note This hook can **not** override preferred carry angles of props such as the sawblade and the harpoon.",
      "@warning Due to nature of the gravity gun coding in multiplayer, this hook **MAY** seem to not work ( but rest assured it does ), due to clientside prediction not knowing the carry angles. The +use pickup doesn't present this issue as it doesn't predict the player carrying the object clientside ( as you may notice by the prop lagging behind in multiplayer )",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - The entity to generate carry angles for",
      "@returns {Angle} - The preferred carry angles for the entity."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GetPreferredCarryAngles",
    "typings": [
      "(this: Gamemode, ent: Entity): Angle"
    ]
  },
  {
    "comments": [
      "\nCalled when the game(server) needs to update the text shown in the server browser as the gamemode.\n",
      "@name GamemodeHooks:GetGameDescription",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/GetGameDescription",
      "@param {Gamemode} this - no description",
      "@returns {string} - The text to be shown in the server browser as the gamemode"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GetGameDescription",
    "typings": [
      "(this: Gamemode): string"
    ]
  },
  {
    "comments": [
      "\nCalled when a player takes damage from falling, allows to override the damage.\n",
      "@name GamemodeHooks:GetFallDamage",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/GetFallDamage",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {number} speed - The fall speed",
      "@returns {number} - New fall damage"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GetFallDamage",
    "typings": [
      "(this: Gamemode, ply: Player, speed: number): number"
    ]
  },
  {
    "comments": [
      "\nCalled to refresh menu content once it has initialized or something has been mounted.\n",
      "@name GamemodeHooks:GameContentChanged",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/GameContentChanged",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "GameContentChanged",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nRuns when user cancels/finishes typing.\n",
      "@name GamemodeHooks:FinishChat",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/FinishChat",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "FinishChat",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled after @GamemodeHooks:Move, applies all the changes from the @CMoveData type to the player.\nSee [Game Movement](https://wiki.garrysmod.com/page/Game%20Movement) for an explanation on the move system.\n",
      "@name GamemodeHooks:FinishMove",
      "@predicted true",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/FinishMove",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player",
      "@param {CMoveData} mv - Movement data",
      "@returns {boolean} - Return true to suppress default engine behavior, i.e. declare that you have already moved the player according to the move data in a custom way."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "FinishMove",
    "typings": [
      "(this: Gamemode, ply: Player, mv: CMoveData): boolean"
    ]
  },
  {
    "comments": [
      "\nThis hook polls the entity the player use action should be applied to.\n",
      "@name GamemodeHooks:FindUseEntity",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/FindUseEntity",
      "@note The default behavior of this hook is in [CBasePlayer::FindUseEntity](https://github.com/ValveSoftware/source-sdk-2013/blob/0d8dceea4310fde5706b3ce1c70609d72a38efdf/mp/src/game/shared/baseplayer_shared.cpp#L1068-L1270). Despite CBasePlayer::FindUseEntity being defined shared, it is only called serverside in practice, so this hook will be only called serverside, as well. It is possible for modules to call it clientside, so the Lua code should still be treated as shared.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player who initiated the use action.",
      "@param {Entity} defaultEnt - The entity that was chosen by the engine.",
      "@returns {Entity} - The entity to use instead of default entity"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "FindUseEntity",
    "typings": [
      "(this: Gamemode, ply: Player, defaultEnt: Entity): Entity"
    ]
  },
  {
    "comments": [
      "\nCalled to allow override of the default Derma skin for all panels.\n",
      "@name GamemodeHooks:ForceDermaSkin",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/ForceDermaSkin",
      "@note This hook is only called on Lua start up, changing its value (or adding new hooks) after it has been already called will not have any effect.",
      "@param {Gamemode} this - no description",
      "@returns {string} - A **case sensitive** Derma skin name to be used as default, registered previously via @derma.DefineSkin.\nReturning nothing, nil or invalid name will make it fallback to the \"Default\" skin."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ForceDermaSkin",
    "typings": [
      "(this: Gamemode): string"
    ]
  },
  {
    "comments": [
      "\nCalled when an entity takes damage. You can modify all parts of the damage info in this hook.\n",
      "@name GamemodeHooks:EntityTakeDamage",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/EntityTakeDamage",
      "@param {Gamemode} this - no description",
      "@param {Entity} target - The entity taking damage",
      "@param {CTakeDamageInfo} dmg - Damage info",
      "@returns {boolean} - Return true to completely block the damage event"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "EntityTakeDamage",
    "typings": [
      "(this: Gamemode, target: Entity, dmg: CTakeDamageInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when an NWVar is changed.\n",
      "@name GamemodeHooks:EntityNetworkedVarChanged",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/EntityNetworkedVarChanged",
      "@note Currently this hook only works for the NW2Var system (accessed by adding a 2 in between NW and Var for most NWVar functions), which will replace the original one at some point in the future",
      "@note This hook is fired before the client value is actually changed. Calling the GetNW function for the specified variable name within this hook will return the old value, not the current/updated one.",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - The owner entity of changed NWVar",
      "@param {string} name - The name if changed NWVar",
      "@param {any} oldval - The old value of the NWVar",
      "@param {any} newval - The new value of the NWVar",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "EntityNetworkedVarChanged",
    "typings": [
      "(this: Gamemode, ent: Entity, name: string, oldval: any, newval: any): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a key-value pair is set on an entity, either by the engine (for example when map spawns) or @EntityFuncs:SetKeyValue.\nSee @EntityHooks:KeyValue for a hook that works for scripted entities.\nSee @WeaponHooks:KeyValue for a hook that works for scripted weapons.\n",
      "@name GamemodeHooks:EntityKeyValue",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/EntityKeyValue",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - Entity that the keyvalue is being set on",
      "@param {string} key - Key of the key/value pair",
      "@param {string} value - Value of the key/value pair",
      "@returns {string} - If set, the value of the key-value pair will be overridden by this string."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "EntityKeyValue",
    "typings": [
      "(this: Gamemode, ent: Entity, key: string, value: string): string"
    ]
  },
  {
    "comments": [
      "\nCalled right before the removal of an entity.\n",
      "@name GamemodeHooks:EntityRemoved",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/EntityRemoved",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - Entity being removed",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "EntityRemoved",
    "typings": [
      "(this: Gamemode, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled every time a bullet is fired from an entity.\n",
      "@name GamemodeHooks:EntityFireBullets",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/EntityFireBullets",
      "@warning This hook is called directly from @EntityFuncs:FireBullets. Due to this, you cannot call @EntityFuncs:FireBullets inside this hook or an infinite loop will occur crashing the game.",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - The entity that fired the bullet",
      "@param {Bullet} data - The bullet data. See @Bullet structure",
      "@returns {boolean} - Return true to apply all changes done to the bullet table.Return false to suppress the bullet."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "EntityFireBullets",
    "typings": [
      "(this: Gamemode, ent: Entity, data: Bullet): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a sound has been played. This will not be called clientside if the server played the sound without the client also calling @EntityFuncs:EmitSound.\n",
      "@name GamemodeHooks:EntityEmitSound",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/EntityEmitSound",
      "@bug #1021 This is not called for scripted sequences.",
      "@param {Gamemode} this - no description",
      "@param {EmitSoundInfo} data - Information about the played sound. Changes done to this table can be applied by returning true from this hook.See @EmitSoundInfo structure.",
      "@returns {boolean} - Return true to apply all changes done to the data table.Return false to prevent the sound from playing.Return nil or nothing to play the sound without altering it."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "EntityEmitSound",
    "typings": [
      "(this: Gamemode, data: EmitSoundInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled right before an entity stops driving. Overriding this hook will cause it to not call @drive.End and the player will not stop driving.\n",
      "@name GamemodeHooks:EndEntityDriving",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/EndEntityDriving",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - The entity being driven",
      "@param {Player} ply - The player driving the entity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "EndEntityDriving",
    "typings": [
      "(this: Gamemode, ent: Entity, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nAllows you to override physgun beam drawing.\n",
      "@name GamemodeHooks:DrawPhysgunBeam",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/DrawPhysgunBeam",
      "@bug #3294 This is still called when physgun_drawbeams is disabled.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Physgun owner",
      "@param {Weapon} physgun - The physgun",
      "@param {boolean} enabled - Is the beam enabled",
      "@param {Entity} target - Entity we are grabbing. This will be NULL if nothing is being held",
      "@param {number} physBone - ID of the physics bone (@PhysObj type) we are grabbing at. Use @EntityFuncs:TranslatePhysBoneToBone to translate to an actual bone.",
      "@param {PhysObj} hitPos - Beam hit position relative to the physics bone (@PhysObj type) we are grabbing.",
      "@returns {boolean} - Return false to hide default beam"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "DrawPhysgunBeam",
    "typings": [
      "(this: Gamemode, ply: Player, physgun: Weapon, enabled: boolean, target: Entity, physBone: number, hitPos: PhysObj): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled after all other 2D draw hooks are called. Draws over all VGUI Panels and HUDs.\nUnlike @GamemodeHooks:HUDPaint, this hook is called with the game paused and while the Camera SWEP is equipped.\n",
      "@name GamemodeHooks:DrawOverlay",
      "@predicted false",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/GM/DrawOverlay",
      "@rendering hook:2d",
      "@note Only be called when r_drawvgui is enabled",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "DrawOverlay",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nThis hook is called every frame to draw all of the current death notices.\n",
      "@name GamemodeHooks:DrawDeathNotice",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/DrawDeathNotice",
      "@param {Gamemode} this - no description",
      "@param {number} x - X position to draw death notices as a ratio",
      "@param {number} y - Y position to draw death notices as a ratio",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "DrawDeathNotice",
    "typings": [
      "(this: Gamemode, x: number, y: number): void"
    ]
  },
  {
    "comments": [
      "\nHandles the player's death.\nThis hook is **not** called if the player is killed by @Player:KillSilent. See @GamemodeHooks:PlayerSilentDeath for that.\n* @GamemodeHooks:PlayerDeath is called after this hook\n* @GamemodeHooks:PostPlayerDeath is called after that\n",
      "@name GamemodeHooks:DoPlayerDeath",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/DoPlayerDeath",
      "@note @Player:Alive returns true when this is called",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player",
      "@param {Entity} attacker - The entity that killed the player",
      "@param {CTakeDamageInfo} dmg - Damage info",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "DoPlayerDeath",
    "typings": [
      "(this: Gamemode, ply: Player, attacker: Entity, dmg: CTakeDamageInfo): void"
    ]
  },
  {
    "comments": [
      "\nCalled every frame before drawing the in-game monitors ( Breencast, in-game TVs, etc ), but doesn't seem to be doing anything, trying to render 2D or 3D elements fail.\n[Category:Render Hooks](https://wiki.garrysmod.com/page/Category:Render%20Hooks)\n",
      "@name GamemodeHooks:DrawMonitors",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/DrawMonitors",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "DrawMonitors",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled upon an animation event, this is the ideal place to call player animation functions such as @Player:AddVCDSequenceToGestureSlot, @Player:AnimRestartGesture and so on.\n",
      "@name GamemodeHooks:DoAnimationEvent",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/DoAnimationEvent",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - Player who is being animated",
      "@param {PLAYERANIMEVENT} event - Animation event. See @PLAYERANIMEVENT enum",
      "@param {ACT} data - The data for the event. This is interpreted as an @ACT enum by PLAYERANIMEVENT_CUSTOM and PLAYERANIMEVENT_CUSTOM_GESTURE, or a sequence by PLAYERANIMEVENT_CUSTOM_SEQUENCE.",
      "@returns {ACT} - The translated activity to send to the weapon. See @ACT enum. Return ACT_INVALID if you don't want to send an activity."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "DoAnimationEvent",
    "typings": [
      "(this: Gamemode, ply: Player, event: PLAYERANIMEVENT, data?: ACT): ACT"
    ]
  },
  {
    "comments": [
      "\nTeams are created within this hook using @team.SetUp.\n",
      "@name GamemodeHooks:CreateTeams",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/CreateTeams",
      "@note This hook is called before @GamemodeHooks:PreGamemodeLoaded.",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CreateTeams",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nAllows you to change the players movements before they're sent to the server.\nSee [Game Movement](https://wiki.garrysmod.com/page/Game%20Movement) for an explanation on the move system.\n",
      "@name GamemodeHooks:CreateMove",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/CreateMove",
      "@note Due to this hook being clientside only, it could be overridden by the user allowing them to completely skip your logic, it is recommended to use @GamemodeHooks:StartCommand in a shared file instead.",
      "@param {Gamemode} this - no description",
      "@param {CUserCmd} cmd - The User Command data",
      "@returns {boolean} - Return true to:\n* Disable Sandbox C menu \"screen clicking\"\n* Disable Teammate nocollide (verification required)\n* Prevent calling of C_BaseHLPlayer::CreateMove & subsequently C_BasePlayer::CreateMove"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CreateMove",
    "typings": [
      "(this: Gamemode, cmd: CUserCmd): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a serverside ragdoll of an entity has been created.\nSee @GamemodeHooks:CreateClientsideRagdoll for clientside ragdolls.\n",
      "@name GamemodeHooks:CreateEntityRagdoll",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/CreateEntityRagdoll",
      "@param {Gamemode} this - no description",
      "@param {Entity} owner - Entity that owns the ragdoll",
      "@param {Entity} ragdoll - The ragdoll entity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CreateEntityRagdoll",
    "typings": [
      "(this: Gamemode, owner: Entity, ragdoll: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever an entity becomes a clientside ragdoll.\nSee @GamemodeHooks:CreateEntityRagdoll for serverside ragdolls.\n",
      "@name GamemodeHooks:CreateClientsideRagdoll",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/CreateClientsideRagdoll",
      "@param {Gamemode} this - no description",
      "@param {Entity} entity - The Entity that created the ragdoll",
      "@param {Entity} ragdoll - The ragdoll being created.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CreateClientsideRagdoll",
    "typings": [
      "(this: Gamemode, entity: Entity, ragdoll: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when derma menus are closed with @CloseDermaMenus function.\n",
      "@name GamemodeHooks:CloseDermaMenus",
      "@predicted false",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/GM/CloseDermaMenus",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CloseDermaMenus",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a non local player connects to allow the Lua system to check the password.\nThe default behaviour in the base gamemodes emulates what would normally happen. If sv_password is set and its value matches the password passed in by the client - then they are allowed to join. If it isn't set it lets them in too.\n",
      "@name GamemodeHooks:CheckPassword",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/CheckPassword",
      "@param {Gamemode} this - no description",
      "@param {string} steamID64 - The 64bit Steam ID of the joining player, use @util.SteamIDFrom64 to convert it to a \"STEAM_0:\" one.",
      "@param {string} ipAddress - The IP of the connecting client",
      "@param {string} svPassword - The current value of sv_password (the password set by the server)",
      "@param {string} clPassword - The password provided by the client",
      "@param {string} name - The name of the joining player",
      "@returns {boolean} - If the hook returns false then the player is disconnected",
      "@returns {string} - If returning false in the first argument, then this should be the disconnect message. This will default to \"#GameUI_ServerRejectBadPassword\", which is \"Bad Password.\" translated to the client's language.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CheckPassword",
    "typings": [
      "(this: Gamemode, steamID64: string, ipAddress: string, svPassword: string, clPassword: string, name: string): [boolean, string]"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the content of the user's chat input box is changed.\n",
      "@name GamemodeHooks:ChatTextChanged",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/ChatTextChanged",
      "@param {Gamemode} this - no description",
      "@param {string} text - The new contents of the input box",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ChatTextChanged",
    "typings": [
      "(this: Gamemode, text: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled each frame to record demos to video using @IVideoWriter type.\n",
      "@name GamemodeHooks:CaptureVideo",
      "@predicted false",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/GM/CaptureVideo",
      "@note This hook is called every frame regardless of whether or not a demo is being recorded",
      "@param {Gamemode} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CaptureVideo",
    "typings": [
      "(this: Gamemode): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a message is printed to the chat box. Note, that this isn't working with player messages even though there are arguments for it.\nFor player messages see @GamemodeHooks:PlayerSay and @GamemodeHooks:OnPlayerChat\n",
      "@name GamemodeHooks:ChatText",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/ChatText",
      "@param {Gamemode} this - no description",
      "@param {number} index - The index of the player.",
      "@param {string} name - The name of the player.",
      "@param {string} text - The text that is being sent.",
      "@param {string} type - Chat filter type. Possible values are:\n* joinleave - Player join and leave messages\n* namechange - Player name change messages\n* servermsg - Server messages such as convar changes\n* teamchange - Team changes?\n* chat - (Obsolete?) Player chat?\n* none - A fallback value",
      "@returns {boolean} - Return true to suppress the chat message"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "ChatText",
    "typings": [
      "(this: Gamemode, index: number, name: string, text: string, type: string): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines if the player can unfreeze the entity.\n",
      "@name GamemodeHooks:CanPlayerUnfreeze",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/CanPlayerUnfreeze",
      "@param {Gamemode} this - no description",
      "@param {Player} player - The player",
      "@param {Entity} entity - The entity",
      "@param {PhysObj} phys - The physics object of the entity",
      "@returns {boolean} - True if they can unfreeze."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CanPlayerUnfreeze",
    "typings": [
      "(this: Gamemode, player: Player, entity: Entity, phys: PhysObj): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines if the player can kill themselves using the concommands \"kill\" or \"explode\".\n",
      "@name GamemodeHooks:CanPlayerSuicide",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/CanPlayerSuicide",
      "@param {Gamemode} this - no description",
      "@param {Player} player - The player",
      "@returns {boolean} - True if they can suicide."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CanPlayerSuicide",
    "typings": [
      "(this: Gamemode, player: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines if the player can exit the vehicle.\n",
      "@name GamemodeHooks:CanExitVehicle",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/CanExitVehicle",
      "@param {Gamemode} this - no description",
      "@param {Vehicle} veh - The vehicle entity",
      "@param {Player} ply - The player",
      "@returns {boolean} - True if the player can exit the vehicle."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CanExitVehicle",
    "typings": [
      "(this: Gamemode, veh: Vehicle, ply: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines whether or not the player can enter the vehicle.\nCalled just before @GamemodeHooks:PlayerEnteredVehicle.\n",
      "@name GamemodeHooks:CanPlayerEnterVehicle",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/CanPlayerEnterVehicle",
      "@param {Gamemode} this - no description",
      "@param {Player} player - The player",
      "@param {Vehicle} vehicle - The vehicle",
      "@param {number} role - no description",
      "@returns {boolean} - False if the player is not allowed to enter the vehicle."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CanPlayerEnterVehicle",
    "typings": [
      "(this: Gamemode, player: Player, vehicle: Vehicle, role: number): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when a variable is edited on an Entity (called by Edit Properties... menu), to determine if the edit should be permitted.\nSee [Editable entities](https://wiki.garrysmod.com/page/Editable_Entities) for more details about the system.\n",
      "@name GamemodeHooks:CanEditVariable",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/CanEditVariable",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - The entity being edited",
      "@param {Player} ply - The player doing the editing",
      "@param {string} key - The name of the variable",
      "@param {string} val - The new value, as a string which will later be converted to its appropriate type",
      "@param {table} editor - The edit table defined in @EntityFuncs:NetworkVar",
      "@returns {boolean} - Return true to allow editing"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CanEditVariable",
    "typings": [
      "(this: Gamemode, ent: Entity, ply: Player, key: string, val: string, editor: table): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows overriding the position and angle of the viewmodel.\n",
      "@name GamemodeHooks:CalcViewModelView",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/CalcViewModelView",
      "@param {Gamemode} this - no description",
      "@param {Weapon} wep - The weapon entity",
      "@param {Entity} vm - The viewmodel entity",
      "@param {Vector} oldPos - Original position (before viewmodel bobbing and swaying)",
      "@param {Angle} oldAng - Original angle (before viewmodel bobbing and swaying)",
      "@param {Vector} pos - Current position",
      "@param {Angle} ang - Current angle",
      "@returns {Vector} - New position",
      "@returns {Angle} - New angle",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CalcViewModelView",
    "typings": [
      "(this: Gamemode, wep: Weapon, vm: Entity, oldPos: Vector, oldAng: Angle, pos: Vector, ang: Angle): [Vector, Angle]"
    ]
  },
  {
    "comments": [
      "\nAllows override of the default view.\n",
      "@name GamemodeHooks:CalcView",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/CalcView",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The local player.",
      "@param {Vector} origin - The player's view position.",
      "@param {Angle} angles - The player's view angles.",
      "@param {number} fov - Field of view.",
      "@param {number} znear - Distance to near clipping plane.",
      "@param {number} zfar - Distance to far clipping plane.",
      "@returns {CamData} - View data table. See @CamData structure"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CalcView",
    "typings": [
      "(this: Gamemode, ply: Player, origin: Vector, angles: Angle, fov: number, znear: number, zfar: number): CamData"
    ]
  },
  {
    "comments": [
      "\nCalled from @GamemodeHooks:CalcView when player is in driving a vehicle.\nThis hook may not be called in gamemodes that override @GamemodeHooks:CalcView.\n",
      "@name GamemodeHooks:CalcVehicleView",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/CalcVehicleView",
      "@param {Gamemode} this - no description",
      "@param {Vehicle} veh - The vehicle the player is driving",
      "@param {Player} ply - The vehicle driver",
      "@param {CamData} view - The view data containing players FOV, view position and angles, see @CamData structure",
      "@returns {CamData} - The modified view table containing new values, see @CamData structure"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CalcVehicleView",
    "typings": [
      "(this: Gamemode, veh: Vehicle, ply: Player, view: CamData): CamData"
    ]
  },
  {
    "comments": [
      "\nThis hook is used to calculate animations for a player.\n",
      "@name GamemodeHooks:CalcMainActivity",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/GM/CalcMainActivity",
      "@warning This hook must return the same values at the same time on both, client **and** server. On client for players to see the animations, on server for hit detection to work properly.",
      "@bug #3322 This can return the incorrect velocity when on a moving object.",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player to apply the animation.",
      "@param {Vector} vel - The velocity of the player.",
      "@returns {ACT} - @ACT enum for the activity the player should use. A nil return will be treated as ACT_INVALID.",
      "@returns {number} - Sequence for the player to use. This takes precedence over the activity (the activity is still used for layering). Return -1 or nil to let the activity determine the sequence.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "CalcMainActivity",
    "typings": [
      "(this: Gamemode, ply: Player, vel: Vector): [ACT, number]"
    ]
  },
  {
    "comments": [
      "\nCalled when a player tries to pick up something using the \"use\" key, return to override.\nSee @GamemodeHooks:GravGunPickupAllowed for the Gravity Gun pickup variant.\n",
      "@name GamemodeHooks:AllowPlayerPickup",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/AllowPlayerPickup",
      "@param {Gamemode} this - no description",
      "@param {Player} ply - The player trying to pick up something.",
      "@param {Entity} ent - The Entity the player attempted to pick up.",
      "@returns {boolean} - Allow the player to pick up the entity or not."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "AllowPlayerPickup",
    "typings": [
      "(this: Gamemode, ply: Player, ent: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows you to adjust the mouse sensitivity.\n",
      "@name GamemodeHooks:AdjustMouseSensitivity",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/AdjustMouseSensitivity",
      "@param {Gamemode} this - no description",
      "@param {number} defaultSensitivity - The old sensitivity\nIn general it will be 0, which is equivalent to a sensitivity of 1.",
      "@returns {number} - A fraction of the normal sensitivity (0.5 would be half as sensitive), return -1 to not override."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "AdjustMouseSensitivity",
    "typings": [
      "(this: Gamemode, defaultSensitivity: number): number"
    ]
  },
  {
    "comments": [
      "\nAdds a death notice entry.\n",
      "@name GamemodeHooks:AddDeathNotice",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/GM/AddDeathNotice",
      "@bug #2611 You cannot use @hook.Add on this hook yet.",
      "@param {Gamemode} this - no description",
      "@param {string} attacker - The name of the attacker",
      "@param {number} attackerTeam - The team of the attacker",
      "@param {string} inflictor - Class name of the entity inflicting the damage",
      "@param {string} victim - Name of the victim",
      "@param {number} victimTeam - Team of the victim",
      "@returns {void}"
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "AddDeathNotice",
    "typings": [
      "(this: Gamemode, attacker: string, attackerTeam: number, inflictor: string, victim: string, victimTeam: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a map I/O event occurs.\nSee also @EntityFuncs:Fire and @EntityFuncs:Input for functions to fire Inputs on entities.\n",
      "@name GamemodeHooks:AcceptInput",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/GM/AcceptInput",
      "@param {Gamemode} this - no description",
      "@param {Entity} ent - Entity that receives the input",
      "@param {string} input - The input name. Is not guaranteed to be a valid input on the entity.",
      "@param {Entity} activator - Activator of the input",
      "@param {Entity} caller - Caller of the input",
      "@param {string | number | boolean} value - Data provided with the input. Will be either a @string type, a @number type, a @boolean type or a @nil type.",
      "@returns {boolean} - Return true to prevent this input from being processed."
    ],
    "type": "class",
    "context": "GamemodeHooks",
    "name": "AcceptInput",
    "typings": [
      "(this: Gamemode, ent: Entity, input: string, activator: Entity, caller: Entity, value?: string | number | boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nAttempts to call the first function. If the execution succeeds, this returns *true* followed by the returns of the function. If execution fails, this returns *false* and the second function is called with the error message.\nUnlike in @pcall function, the stack is not unwound and can therefore be used for stack analyses with the @debug library.\n",
      "@name xpcall",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/xpcall",
      "@bug #1976 Using this function with @include function will break autorefresh.",
      "@bug #2036 This cannot stop errors from hooks called from the engine.",
      "@bug #2498 This does not stop @Error function and @ErrorNoHalt function from sending error messages to the server (if called clientside) or calling the @GamemodeHooks:OnLuaError hook. The success boolean returned will always return true and thus you will not get the error message returned. @error function does not exhibit these behaviours.",
      "@bug #3112 This does not stop errors incurred by @include function.",
      "@param {void} this - no description",
      "@param {function} func - The function to call initially.",
      "@param {function} errorCallback - The function to be called if execution of the first fails; the error message is passed as a string.\nYou cannot throw an @error function() from this callback: it will have no effect (not even stopping the callback).",
      "@param {any[]} ...arguments - Arguments to pass to the initial function.",
      "@returns {boolean} - Status of the execution; *true* for success, *false* for failure.",
      "@returns {any[]} - The returns of the first function if execution succeeded, otherwise the **first** return value of the error callback.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "xpcall",
    "typings": [
      "(this: void, func: UnknownFunc, errorCallback: UnknownFunc, ...arguments: any[]): [boolean, any[]]"
    ]
  },
  {
    "comments": [
      "\nTranslates the specified position and angle into the specified coordinate system.\n",
      "@name WorldToLocal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/WorldToLocal",
      "@param {void} this - no description",
      "@param {Vector} position - The position that should be translated from the current to the new system.",
      "@param {Angle} angle - The angles that should be translated from the current to the new system.",
      "@param {Vector} newSystemOrigin - The origin of the system to translate to.",
      "@param {Angle} newSystemAngles - The angles of the system to translate to.",
      "@returns {Vector} - Local position",
      "@returns {Angle} - Local angles",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "WorldToLocal",
    "typings": [
      "(this: void, position: Vector, angle: Angle, newSystemOrigin: Vector, newSystemAngles: Angle): [Vector, Angle]"
    ]
  },
  {
    "comments": [
      "\nReturns a new WorkshopFileBase element\n",
      "@name WorkshopFileBase",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/WorkshopFileBase",
      "@internal",
      "@param {void} this - no description",
      "@param {string} namespace - Namespace for the file base",
      "@param {table} requiredTags - Tags required for a Workshop submission to be interacted with by the filebase",
      "@returns {table} - WorkshopFileBase element"
    ],
    "type": "func",
    "context": "Global",
    "name": "WorkshopFileBase",
    "typings": [
      "(this: void, namespace: string, requiredTags: table): table"
    ]
  },
  {
    "comments": [
      "\nCreates and returns a @DShape type rectangle GUI element with the given dimensions.\n",
      "@name VGUIRect",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/VGUIRect",
      "@param {void} this - no description",
      "@param {number} x - X position of the created element",
      "@param {number} y - Y position of the created element",
      "@param {number} w - Width of the created element",
      "@param {number} h - Height of the created element",
      "@returns {DShape} - @DShape type element"
    ],
    "type": "func",
    "context": "Global",
    "name": "VGUIRect",
    "typings": [
      "(this: void, x: number, y: number, w: number, h: number): DShape"
    ]
  },
  {
    "comments": [
      "\nReturns the time in seconds it took to render the VGUI.\n",
      "@name VGUIFrameTime",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/VGUIFrameTime",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "VGUIFrameTime",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nBriefly displays layout details of the given panel on-screen\n",
      "@name VisualizeLayout",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/VisualizeLayout",
      "@param {void} this - no description",
      "@param {Panel} panel - Panel to display layout details of",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "VisualizeLayout",
    "typings": [
      "(this: void, panel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns a random vector whose components are each between min(inclusive), max(exclusive).\n",
      "@name VectorRand",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/VectorRand",
      "@param {void} this - no description",
      "@param {number} min - Min bound inclusive.",
      "@param {number} max - Max bound exclusive.",
      "@returns {Vector} - The random direction vector."
    ],
    "type": "func",
    "context": "Global",
    "name": "VectorRand",
    "typings": [
      "(this: void, min?: number, max?: number): Vector"
    ]
  },
  {
    "comments": [
      "\nCreates a @Vector type object.\n",
      "@name Vector",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Vector",
      "@note This function creates a new unique object. It's a good practice to localize your vectors.",
      "@param {void} this - no description",
      "@param {number} x - The x component of the vector.\nIf this is a @Vector type, this function will return a copy of the given vector.\nIf this is a @string type, this function will try to parse the string as a vector. If it fails, it returns a 0 vector.\n(See examples)",
      "@param {number} y - The y component of the vector.",
      "@param {number} z - The z component of the vector.",
      "@returns {Vector} - The created vector object."
    ],
    "type": "func",
    "context": "Global",
    "name": "Vector",
    "typings": [
      "(this: void, x?: number, y?: number, z?: number): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns if a panel is safe to use.\n",
      "@name ValidPanel",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ValidPanel",
      "@param {void} this - no description",
      "@param {Panel} panel - The panel to validate.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "ValidPanel",
    "typings": [
      "(this: void, panel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not a model is useless by checking that the file path is that of a proper model.\nIf the string \".mdl\" is not found in the model name, the function will return true.\nThe function will also return true if any of the following strings are found in the given model name:\n* \"_gesture\"\n* \"_anim\"\n* \"_gst\"\n* \"_pst\"\n* \"_shd\"\n* \"_ss\"\n* \"_posture\"\n* \"_anm\"\n* \"ghostanim\"\n* \"_paths\"\n* \"_shared\"\n* \"anim_\"\n* \"gestures_\"\n* \"shared_ragdoll_\"\n",
      "@name UTIL_IsUselessModel",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/UTIL IsUselessModel",
      "@param {void} this - no description",
      "@param {string} modelName - The model name to be checked",
      "@returns {boolean} - Whether or not the model is useless"
    ],
    "type": "func",
    "context": "Global",
    "name": "UTIL_IsUselessModel",
    "typings": [
      "(this: void, modelName: string): boolean"
    ]
  },
  {
    "comments": [
      "\nRuns JavaScript on the loading screen panel (@GetLoadPanel function).\n",
      "@name UpdateLoadPanel",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/UpdateLoadPanel",
      "@param {void} this - no description",
      "@param {string} javascript - JavaScript to run on the loading panel.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "UpdateLoadPanel",
    "typings": [
      "(this: void, javascript: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the current asynchronous in-game time.\n",
      "@name UnPredictedCurTime",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/UnPredictedCurTime",
      "@param {void} this - no description",
      "@returns {number} - The asynchronous in-game time."
    ],
    "type": "func",
    "context": "Global",
    "name": "UnPredictedCurTime",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nThis function takes a numeric indexed table and return all the members as a vararg. If specified, it will start at the given index and end at end index.\n",
      "@name unpack",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/unpack",
      "@param {void} this - no description",
      "@param {table} tbl - The table to generate the vararg from.",
      "@param {number} startIndex - Which index to start from. Optional.",
      "@param {number} endIndex - Which index to end at. Optional, even if you set StartIndex.",
      "@returns {any[]} - Output values"
    ],
    "type": "func",
    "context": "Global",
    "name": "unpack",
    "typings": [
      "(this: void, tbl: table, startIndex?: number, endIndex?: number): any[]"
    ]
  },
  {
    "comments": [
      "\nGets the associated type ID of the variable. Unlike @type function, this does not work with @no value type - an argument must be provided.\n",
      "@name TypeID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/TypeID",
      "@bug  This returns garbage for _LOADLIB objects.",
      "@bug  This returns TYPE_NIL for @proto types.",
      "@param {void} this - no description",
      "@param {any} variable - The variable to get the type ID of.",
      "@returns {TYPE} - The type ID of the variable. See the @TYPE enum."
    ],
    "type": "func",
    "context": "Global",
    "name": "TypeID",
    "typings": [
      "(this: void, variable: any): TYPE"
    ]
  },
  {
    "comments": [
      "\nReturns a string representing the name of the type of the passed object.\n",
      "@name type",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/type",
      "@param {void} this - no description",
      "@param {any} obj - The object to get the type of.",
      "@returns {string} - The name of the object's type."
    ],
    "type": "func",
    "context": "Global",
    "name": "type",
    "typings": [
      "(this: void, obj: any): string"
    ]
  },
  {
    "comments": [
      "\nAttempts to convert the value to a string. If the value is an object and its metatable has defined the __tostring metamethod, this will call that function.\n@print function also uses this functionality.\n",
      "@name tostring",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/tostring",
      "@param {void} this - no description",
      "@param {any} value - The object to be converted to a string.",
      "@returns {string} - The string representation of the value."
    ],
    "type": "func",
    "context": "Global",
    "name": "tostring",
    "typings": [
      "(this: void, value: any): string"
    ]
  },
  {
    "comments": [
      "\nReturns \"Lua Cache File\" if the given file name is in a certain string table, nothing otherwise.\n",
      "@name TranslateDownloadableName",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/TranslateDownloadableName",
      "@internal",
      "@param {void} this - no description",
      "@param {string} filename - File name to test",
      "@returns {string} - \"Lua Cache File\" if the given file name is in a certain string table, nothing otherwise."
    ],
    "type": "func",
    "context": "Global",
    "name": "TranslateDownloadableName",
    "typings": [
      "(this: void, filename: string): string"
    ]
  },
  {
    "comments": [
      "\nAttempts to convert the value to a number.\nReturns nil on failure.\n",
      "@name tonumber",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/tonumber",
      "@param {void} this - no description",
      "@param {any} value - The value to convert. Can be a number or string.",
      "@param {number} base - The [numeric base](https://en.wikipedia.org/wiki/Radix) used in the string. Can be any integer between 2 and 36, inclusive.",
      "@returns {number} - The numeric representation of the value with the given base, or nil if the conversion failed."
    ],
    "type": "func",
    "context": "Global",
    "name": "tonumber",
    "typings": [
      "(this: void, value: any, base?: number): number"
    ]
  },
  {
    "comments": [
      "\nToggles whether or not the named map is favorited in the new game list.\n",
      "@name ToggleFavourite",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ToggleFavourite",
      "@param {void} this - no description",
      "@param {string} map - Map to toggle favorite.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "ToggleFavourite",
    "typings": [
      "(this: void, map: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns a sine value that fluctuates based on @CurTime function. The value returned will be between the start value plus/minus the range value.\n",
      "@name TimedSin",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/TimedSin",
      "@bug  The range arguments don't work as intended. The existing (bugged) behavior is documented below.",
      "@param {void} this - no description",
      "@param {number} frequency - The frequency of fluctuation, in [hertz](https://en.wikipedia.org/wiki/hertz)",
      "@param {number} origin - The center value of the sine wave.",
      "@param {number} max - This argument's distance from origin defines the size of the full range of the sine wave. For example, if origin is 3 and max is 5, then the full range of the sine wave is 5-3 = 2. 3 is the center point of the sine wave, so the sine wave will range between 2 and 4.",
      "@param {number} offset - Offset variable that doesn't affect the rate of change, but causes the returned value to be offset by time",
      "@returns {number} - Sine value"
    ],
    "type": "func",
    "context": "Global",
    "name": "TimedSin",
    "typings": [
      "(this: void, frequency: number, origin: number, max: number, offset: number): number"
    ]
  },
  {
    "comments": [
      "\nAttempts to return an appropriate boolean for the given value\n",
      "@name tobool",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/tobool",
      "@param {void} this - no description",
      "@param {any} val - The object to be converted to a boolean",
      "@returns {boolean} - **false** for the boolean false.**false** for \"false\".**false** for \"0\".**false** for numeric 0.**false** for nil.**true** otherwise."
    ],
    "type": "func",
    "context": "Global",
    "name": "tobool",
    "typings": [
      "(this: void, val: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns a cosine value that fluctuates based on the current time\n",
      "@name TimedCos",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/TimedCos",
      "@param {void} this - no description",
      "@param {number} frequency - The frequency of fluctuation",
      "@param {number} min - Minimum value",
      "@param {number} max - Maxmimum value",
      "@param {number} offset - Offset variable that doesn't affect the rate of change, but causes the returned value to be offset by time",
      "@returns {number} - Cosine value"
    ],
    "type": "func",
    "context": "Global",
    "name": "TimedCos",
    "typings": [
      "(this: void, frequency: number, min: number, max: number, offset: number): number"
    ]
  },
  {
    "comments": [
      "\nClears focus from any text entries player may have focused.\n",
      "@name TextEntryLoseFocus",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/TextEntryLoseFocus",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "TextEntryLoseFocus",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns a TauntCamera object\n",
      "@name TauntCamera",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/TauntCamera",
      "@param {void} this - no description",
      "@returns {table} - TauntCamera"
    ],
    "type": "func",
    "context": "Global",
    "name": "TauntCamera",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nReturns a highly accurate time in seconds since the start up, ideal for benchmarking.\n",
      "@name SysTime",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/SysTime",
      "@param {void} this - no description",
      "@returns {number} - Uptime of the server."
    ],
    "type": "func",
    "context": "Global",
    "name": "SysTime",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nSuppress any networking from the server to the specified player. This is automatically called by the engine before/after a player fires their weapon, reloads, or causes any other similar shared-predicted event to occur.\n",
      "@name SuppressHostEvents",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Global/SuppressHostEvents",
      "@param {void} this - no description",
      "@param {Player} suppressPlayer - The player to suppress any networking to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SuppressHostEvents",
    "typings": [
      "(this: void, suppressPlayer: Player): void"
    ]
  },
  {
    "comments": [
      "\nReturns the ordinal suffix of a given number.\n",
      "@name STNDRD",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/STNDRD",
      "@param {void} this - no description",
      "@param {number} num - The number to find the ordinal suffix of.",
      "@returns {string} - suffix"
    ],
    "type": "func",
    "context": "Global",
    "name": "STNDRD",
    "typings": [
      "(this: void, num: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns a number based on the Size argument and your screen's width. Alias of @ScreenScale function.\n",
      "@name SScale",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/SScale",
      "@param {void} this - no description",
      "@param {number} Size - The number you want to scale.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SScale",
    "typings": [
      "(this: void, Size: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the duration of the sound specified in seconds.\n",
      "@name SoundDuration",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/SoundDuration",
      "@bug #936 This only works properly for .wav files.",
      "@param {void} this - no description",
      "@param {string} soundName - The sound file path.",
      "@returns {number} - Sound duration in seconds."
    ],
    "type": "func",
    "context": "Global",
    "name": "SoundDuration",
    "typings": [
      "(this: void, soundName: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns the input value in an escaped form so that it can safely be used inside of queries. The returned value is surrounded by quotes unless noQuotes is true. Alias of @sql.SQLStr\n",
      "@name SQLStr",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/SQLStr",
      "@param {void} this - no description",
      "@param {string} input - String to be escaped",
      "@param {boolean} noQuotes - Whether the returned value should be surrounded in quotes or not",
      "@returns {string} - Escaped input"
    ],
    "type": "func",
    "context": "Global",
    "name": "SQLStr",
    "typings": [
      "(this: void, input: string, noQuotes?: boolean): string"
    ]
  },
  {
    "comments": [
      "\nRuns @util.PrecacheSound and returns the string.\n",
      "@name Sound",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Sound",
      "@bug  @util.PrecacheSound does nothing and therefore so does this function",
      "@param {void} this - no description",
      "@param {string} soundPath - The soundpath to precache",
      "@returns {string} - The string passed as the first argument"
    ],
    "type": "func",
    "context": "Global",
    "name": "Sound",
    "typings": [
      "(this: void, soundPath: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns an iterator function that can be used to loop through a table in order of its **values**.\nTo sort by specific **value member**, use @SortedPairsByMemberValue function.\nTo sort by **keys**, use @SortedPairs function.\n",
      "@name SortedPairsByValue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/SortedPairsByValue",
      "@param {void} this - no description",
      "@param {table} table - Table to create iterator for",
      "@param {boolean} descending - Whether the iterator should iterate in descending order or not",
      "@returns {function} - Iterator function",
      "@returns {table} - The table which will be iterated over",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "SortedPairsByValue",
    "typings": [
      "(this: void, table: table, descending?: boolean): [UnknownFunc, table]"
    ]
  },
  {
    "comments": [
      "\nReturns an iterator function that can be used to loop through a table in order of member values, when the values of the table are also tables and contain that member.\nTo sort by **value**, use @SortedPairsByValue function.\nTo sort by **keys**, use @SortedPairs function.\n",
      "@name SortedPairsByMemberValue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/SortedPairsByMemberValue",
      "@param {void} this - no description",
      "@param {table} table - Table to create iterator for.",
      "@param {any} memberKey - Key of the value member to sort by.",
      "@param {boolean} descending - Whether the iterator should iterate in descending order or not.",
      "@returns {function} - Iterator function",
      "@returns {table} - The table the iterator was created for.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "SortedPairsByMemberValue",
    "typings": [
      "(this: void, table: table, memberKey: any, descending?: boolean): [UnknownFunc, table]"
    ]
  },
  {
    "comments": [
      "\nThis function can be used in a for loop instead of @pairs function. It sorts all **keys** alphabetically.\nFor sorting by specific **value member**, use @SortedPairsByMemberValue function.\nFor sorting by **value**, use @SortedPairsByValue function.\n",
      "@name SortedPairs",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/SortedPairs",
      "@param {void} this - no description",
      "@param {table} table - The table to sort",
      "@param {boolean} desc - Reverse the sorting order",
      "@returns {function} - Iterator function",
      "@returns {table} - The table being iterated over",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "SortedPairs",
    "typings": [
      "(this: void, table: table, desc?: boolean): [UnknownFunc, table]"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine to set which constraint system [](https://developer.valvesoftware.com/wiki/Phys_constraintsystem) the next created constraints should use\n",
      "@name SetPhysConstraintSystem",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/SetPhysConstraintSystem",
      "@param {void} this - no description",
      "@param {Entity} constraintSystem - Constraint system to use",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SetPhysConstraintSystem",
    "typings": [
      "(this: void, constraintSystem: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets, changes or removes a table's metatable. Returns Tab (the first argument).\n",
      "@name setmetatable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/setmetatable",
      "@param {void} this - no description",
      "@param {table} Tab - The table who's metatable to change.",
      "@param {table} Metatable - The metatable to assign.If it's nil, the metatable will be removed.",
      "@returns {table} - The first argument."
    ],
    "type": "func",
    "context": "Global",
    "name": "setmetatable",
    "typings": [
      "(this: void, Tab: table, Metatable: table): table"
    ]
  },
  {
    "comments": [
      "\nDefines a vector to be automatically networked to clients\n",
      "@name SetGlobalVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/SetGlobalVector",
      "@note Running this function clientside will only set it clientside for the client it is called on!",
      "@param {void} this - no description",
      "@param {any} index - Index to identify the global vector with",
      "@param {Vector} vec - Vector to be networked",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SetGlobalVector",
    "typings": [
      "(this: void, index: any, vec: Vector): void"
    ]
  },
  {
    "comments": [
      "\nDefines a string with a maximum of 199 characters to be automatically networked to clients\n",
      "@name SetGlobalString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/SetGlobalString",
      "@note Running this function clientside will only set it clientside for the client it is called on!",
      "@param {void} this - no description",
      "@param {any} index - Index to identify the global string with",
      "@param {string} str - String to be networked",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SetGlobalString",
    "typings": [
      "(this: void, index: any, str: string): void"
    ]
  },
  {
    "comments": [
      "\nSets an integer that is shared between the server and all clients.\n",
      "@name SetGlobalInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/SetGlobalInt",
      "@note Running this function clientside will only set it clientside for the client it is called on!",
      "@bug #3374 This function will not round decimal values as it actually networks a float internally.",
      "@param {void} this - no description",
      "@param {string} index - The unique index to identify the global value with.",
      "@param {number} value - The value to set the global value to",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SetGlobalInt",
    "typings": [
      "(this: void, index: string, value: number): void"
    ]
  },
  {
    "comments": [
      "\nDefines a floating point number to be automatically networked to clients\n",
      "@name SetGlobalFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/SetGlobalFloat",
      "@note Running this function clientside will only set it clientside for the client it is called on!",
      "@param {void} this - no description",
      "@param {any} index - Index to identify the global float with",
      "@param {number} float - Float to be networked",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SetGlobalFloat",
    "typings": [
      "(this: void, index: any, float: number): void"
    ]
  },
  {
    "comments": [
      "\nDefines an entity to be automatically networked to clients\n",
      "@name SetGlobalEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/SetGlobalEntity",
      "@note Running this function clientside will only set it clientside for the client it is called on!",
      "@param {void} this - no description",
      "@param {any} index - Index to identify the global entity with",
      "@param {Entity} ent - Entity to be networked",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SetGlobalEntity",
    "typings": [
      "(this: void, index: any, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nDefined a boolean to be automatically networked to clients\n",
      "@name SetGlobalBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/SetGlobalBool",
      "@note Running this function clientside will only set it clientside for the client it is called on!",
      "@param {void} this - no description",
      "@param {any} index - Index to identify the global boolean with",
      "@param {boolean} bool - Boolean to be networked",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SetGlobalBool",
    "typings": [
      "(this: void, index: any, bool: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDefines an angle to be automatically networked to clients\n",
      "@name SetGlobalAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/SetGlobalAngle",
      "@note Running this function clientside will only set it clientside for the client it is called on!",
      "@param {void} this - no description",
      "@param {any} index - Index to identify the global angle with",
      "@param {Angle} angle - Angle to be networked",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SetGlobalAngle",
    "typings": [
      "(this: void, index: any, angle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the enviroment for a function or a stack level, if a function is passed, the return value will be the function, otherwise nil.\n",
      "@name setfenv",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/setfenv",
      "@param {void} this - no description",
      "@param {function} location - The function to set the enviroment for or a number representing stack level.",
      "@param {table} enviroment - Table to be used as enviroment.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "setfenv",
    "typings": [
      "(this: void, location: UnknownFunc, enviroment: table): void"
    ]
  },
  {
    "comments": [
      "\nAdds the given string to the computers clipboard, which can then be pasted in or outside of GMod with Ctrl + V.\n",
      "@name SetClipboardText",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/SetClipboardText",
      "@param {void} this - no description",
      "@param {string} text - The text to add to the clipboard.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SetClipboardText",
    "typings": [
      "(this: void, text: string): void"
    ]
  },
  {
    "comments": [
      "\nPrints \"ServerLog: PARAM\" without a newline, to the server log and console.\n",
      "@name ServerLog",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Global/ServerLog",
      "@param {void} this - no description",
      "@param {string} parameter - The value to be printed to console.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "ServerLog",
    "typings": [
      "(this: void, parameter: string): void"
    ]
  },
  {
    "comments": [
      "\nSend a usermessage\n",
      "@name SendUserMessage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/SendUserMessage",
      "@note Useless on client, only server can send info to client.",
      "@param {void} this - no description",
      "@param {string} name - The name of the usermessage",
      "@param {CRecipientFilter | table | Player} recipients - Can be a @CRecipientFilter type, @table type or @Player type object.",
      "@param {any[]} ...args - Data to send in the usermessage",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SendUserMessage",
    "typings": [
      "(this: void, name: string, recipients: CRecipientFilter | table | Player, ...args: any[]): void"
    ]
  },
  {
    "comments": [
      "\nUsed to select single values from a vararg or get the count of values in it.\n",
      "@name select",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/select",
      "@param {void} this - no description",
      "@param {number | string} parameter - Can be a @number type or @string type.\n* If it's a string and starts with \"#\", the function will return the amount of values in the vararg (ignoring the rest of the string).\n* If it's a positive number, the function will return all values starting from the given index.\n* If the number is negative, it will return the amount specified from the end instead of the beginning. This mode will not be compiled by LuaJIT.",
      "@param {any[]} ...vararg - The vararg. These are the values from which you want to select.",
      "@returns {number | any[]} - Returns a @number type or @vararg type, depending on the select method."
    ],
    "type": "func",
    "context": "Global",
    "name": "select",
    "typings": [
      "(this: void, parameter: number | string, ...vararg: any[]): number | any[]"
    ]
  },
  {
    "comments": [
      "\nGets the width of the game's window (in pixels).\n",
      "@name ScrW",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ScrW",
      "@param {void} this - no description",
      "@returns {number} - The width of the game's window in pixels"
    ],
    "type": "func",
    "context": "Global",
    "name": "ScrW",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nGets the height of the game's window (in pixels).\n",
      "@name ScrH",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ScrH",
      "@param {void} this - no description",
      "@returns {number} - The height of the game's window in pixels"
    ],
    "type": "func",
    "context": "Global",
    "name": "ScrH",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns a number based on the Size argument and your screen's width. The screen's width is always equal to size 640. This function is primarily used for scaling font sizes.\n",
      "@name ScreenScale",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/ScreenScale",
      "@param {void} this - no description",
      "@param {number} Size - The number you want to scale.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "ScreenScale",
    "typings": [
      "(this: void, Size: number): void"
    ]
  },
  {
    "comments": [
      "\nOverwrites all presets with the supplied table. Used by the @presets library for preset saving\n",
      "@name SavePresets",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/SavePresets",
      "@param {void} this - no description",
      "@param {table} presets - Presets to be saved",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SavePresets",
    "typings": [
      "(this: void, presets: table): void"
    ]
  },
  {
    "comments": [
      "\nThis function is used to save the last map and category to which the map belongs as a [cookie](https://wiki.garrysmod.com/page/Category:cookie).\n",
      "@name SaveLastMap",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/SaveLastMap",
      "@internal",
      "@param {void} this - no description",
      "@param {string} map - The name of the map.",
      "@param {string} category - The name of the category to which this map belongs.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SaveLastMap",
    "typings": [
      "(this: void, map: string, category: string): void"
    ]
  },
  {
    "comments": [
      "\nRemoves entity after delay using @SafeRemoveEntity function\n",
      "@name SafeRemoveEntityDelayed",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/SafeRemoveEntityDelayed",
      "@param {void} this - no description",
      "@param {Entity} entity - Entity to be removed",
      "@param {number} delay - Delay for entity removal in seconds",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SafeRemoveEntityDelayed",
    "typings": [
      "(this: void, entity: Entity, delay: number): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the given entity unless it is a player or the world entity\n",
      "@name SafeRemoveEntity",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/SafeRemoveEntity",
      "@param {void} this - no description",
      "@param {Entity} ent - Entity to safely remove.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "SafeRemoveEntity",
    "typings": [
      "(this: void, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nAlias of @RunString function.\n",
      "@name RunStringEx",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/RunStringEx",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RunStringEx",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nEvaluates and executes the given code, will throw an error on failure.\n",
      "@name RunString",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/RunString",
      "@note Local variables are not passed to the given code.",
      "@param {void} this - no description",
      "@param {string} code - The code to execute.",
      "@param {string} identifier - The name that should appear in any error messages caused by this code.",
      "@param {boolean} handleError - If false, this function will return a string containing any error messages instead of throwing an error.",
      "@returns {string} - If handleError is false, the error message (if any)."
    ],
    "type": "func",
    "context": "Global",
    "name": "RunString",
    "typings": [
      "(this: void, code: string, identifier?: string, handleError?: boolean): string"
    ]
  },
  {
    "comments": [
      "\nRuns a menu command. Equivalent to @RunConsoleCommand function( \"gamemenucommand\", command ) unless the command starts with the \"engine\" keyword in which case it is equivalent to @RunConsoleCommand function( command ).\n",
      "@name RunGameUICommand",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/RunGameUICommand",
      "@param {void} this - no description",
      "@param {string} command - The menu command to run\nShould be one of the following:\n* Disconnect - Disconnects from the current server.\n* OpenBenchmarkDialog - Opens the \"Video Hardware Stress Test\" dialog.\n* OpenChangeGameDialog - Does not work in GMod.\n* OpenCreateMultiplayerGameDialog - Opens the Source dialog for creating a listen server.\n* OpenCustomMapsDialog - Does nothing.\n* OpenFriendsDialog - Does nothing.\n* OpenGameMenu - Does not work in GMod.\n* OpenLoadCommentaryDialog - Opens the \"Developer Commentary\" selection dialog. Useless in GMod.\n* OpenLoadDemoDialog - Does nothing.\n* OpenLoadGameDialog - Opens the Source \"Load Game\" dialog.\n* OpenNewGameDialog - Opens the \"New Game\" dialog. Useless in GMod.\n* OpenOptionsDialog - Opens the options dialog.\n* OpenPlayerListDialog - Opens the \"Mute Players\" dialog that shows all players connected to the server and allows to mute them.\n* OpenSaveGameDialog - Opens the Source \"Save Game\" dialog.\n* OpenServerBrowser - Opens the legacy server browser.\n* Quit - Quits the game *without* confirmation (unlike other Source games).\n* QuitNoConfirm - Quits the game without confirmation (like other Source games).\n* ResumeGame - Closes the menu and returns to the game.\n* engine  - Runs a console command. Equivalent to @RunConsoleCommand function(  ).",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RunGameUICommand",
    "typings": [
      "(this: void, command: string): void"
    ]
  },
  {
    "comments": [
      "\nExecutes the given console command with the parameters.\n",
      "@name RunConsoleCommand",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/RunConsoleCommand",
      "@note Some commands/convars are blocked from being ran/changed using this function, usually to prevent harm/annoyance to clients. For a list of blocked commands, see [Blocked ConCommands](https://wiki.garrysmod.com/page/Blocked%20ConCommands).",
      "@param {void} this - no description",
      "@param {string} command - The command to be executed.",
      "@param {any[]} ...arguments - The arguments. Note, that unlike @Player:ConCommand, you must pass each argument as a new string, not separating them with a space.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RunConsoleCommand",
    "typings": [
      "(this: void, command: string, ...arguments: any[]): void"
    ]
  },
  {
    "comments": [
      "\nRestores position of your cursor on screen. You can save it by using @RememberCursorPosition function.\n",
      "@name RestoreCursorPosition",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/RestoreCursorPosition",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RestoreCursorPosition",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nFirst tries to load a binary module with the given name, if unsuccessful, it tries to load a Lua module with the given name.\n",
      "@name require",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/require",
      "@bug #1041 Running this function with @pcall function or @xpcall function will still print an error that counts towards sv_kickerrornum.",
      "@param {void} this - no description",
      "@param {string} name - The name of the module to be loaded.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "require",
    "typings": [
      "(this: void, name: string): void"
    ]
  },
  {
    "comments": [
      "\nRenders the Super Depth of Field post-process effect\n",
      "@name RenderSuperDoF",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/RenderSuperDoF",
      "@param {void} this - no description",
      "@param {Vector} viewOrigin - Origin to render the effect at",
      "@param {Angle} viewAngles - Angles to render the effect at",
      "@param {number} viewFOV - Field of View to render the effect at",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RenderSuperDoF",
    "typings": [
      "(this: void, viewOrigin: Vector, viewAngles: Angle, viewFOV: number): void"
    ]
  },
  {
    "comments": [
      "\nRenders the stereoscopic post-process effect\n",
      "@name RenderStereoscopy",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/RenderStereoscopy",
      "@param {void} this - no description",
      "@param {Vector} viewOrigin - Origin to render the effect at",
      "@param {Angle} viewAngles - Angles to render the effect at",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RenderStereoscopy",
    "typings": [
      "(this: void, viewOrigin: Vector, viewAngles: Angle): void"
    ]
  },
  {
    "comments": [
      "\nRenders a Depth of Field effect\n",
      "@name RenderDoF",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/RenderDoF",
      "@param {void} this - no description",
      "@param {Vector} origin - Origin to render the effect at",
      "@param {Angle} angle - Angle to render the effect at",
      "@param {Vector} usableFocusPoint - Point to focus the effect at",
      "@param {number} angleSize - Angle size of the effect",
      "@param {number} radialSteps - Amount of radial steps to render the effect with",
      "@param {number} passes - Amount of render passes",
      "@param {boolean} spin - Whether to cycle the frame or not",
      "@param {table} inView - Table of view data",
      "@param {number} fov - FOV to render the effect with",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RenderDoF",
    "typings": [
      "(this: void, origin: Vector, angle: Angle, usableFocusPoint: Vector, angleSize: number, radialSteps: number, passes: number, spin: boolean, inView: table, fov: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the angle that the clients view is being rendered at\n",
      "@name RenderAngles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/RenderAngles",
      "@param {void} this - no description",
      "@returns {Angle} - Render Angles"
    ],
    "type": "func",
    "context": "Global",
    "name": "RenderAngles",
    "typings": [
      "(this: void): Angle"
    ]
  },
  {
    "comments": [
      "\nDoes the removing of the tooltip panel. Called by @EndTooltip function.\n",
      "@name RemoveTooltip",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/RemoveTooltip",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RemoveTooltip",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSaves position of your cursor on screen. You can restore it by using\n@RestoreCursorPosition function.\n",
      "@name RememberCursorPosition",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/RememberCursorPosition",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RememberCursorPosition",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nRegisters a Derma element to be closed the next time @CloseDermaMenus function is called\n",
      "@name RegisterDermaMenuForClose",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/RegisterDermaMenuForClose",
      "@param {void} this - no description",
      "@param {Panel} menu - Menu to be registered for closure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RegisterDermaMenuForClose",
    "typings": [
      "(this: void, menu: Panel): void"
    ]
  },
  {
    "comments": [
      "\nAdds a frame to the currently recording demo.\n",
      "@name RecordDemoFrame",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/RecordDemoFrame",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "RecordDemoFrame",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nCreates a new @CRecipientFilter type.\n",
      "@name RecipientFilter",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Global/RecipientFilter",
      "@param {void} this - no description",
      "@returns {CRecipientFilter} - The new created recipient filter."
    ],
    "type": "func",
    "context": "Global",
    "name": "RecipientFilter",
    "typings": [
      "(this: void): CRecipientFilter"
    ]
  },
  {
    "comments": [
      "\nReturns the uptime of the game/server in seconds (to at least 4 decimal places)\nYou should use this function (or SysTime) for timing real-world events such as user interaction, but not for timing game events such as animations.\nSee also: @CurTime function, @SysTime function\n",
      "@name RealTime",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/RealTime",
      "@note This is **not** synchronised or affected by the game.",
      "@note This will be affected by precision loss if the uptime is more than 30+(?) days, and effectively cease to be functional after 50+(?) days.",
      "@param {void} this - no description",
      "@returns {number} - Uptime of the game/server."
    ],
    "type": "func",
    "context": "Global",
    "name": "RealTime",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the real frame-time which is unaffected by host_timescale. To be used for GUI effects (for example)\n",
      "@name RealFrameTime",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/RealFrameTime",
      "@param {void} this - no description",
      "@returns {number} - Real frame time"
    ],
    "type": "func",
    "context": "Global",
    "name": "RealFrameTime",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nSets the value with the specified key from the table without calling the __newindex method.\n",
      "@name rawset",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/rawset",
      "@param {void} this - no description",
      "@param {table} table - Table to get the value from.",
      "@param {any} index - The index to get the value from.",
      "@param {any} value - The value to set for the specified key.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "rawset",
    "typings": [
      "(this: void, table: table, index: any, value: any): void"
    ]
  },
  {
    "comments": [
      "\nGets the value with the specified key from the table without calling the __index method.\n",
      "@name rawget",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/rawget",
      "@param {void} this - no description",
      "@param {table} table - Table to get the value from.",
      "@param {any} index - The index to get the value from.",
      "@returns {any} - The value."
    ],
    "type": "func",
    "context": "Global",
    "name": "rawget",
    "typings": [
      "(this: void, table: table, index: any): any"
    ]
  },
  {
    "comments": [
      "\nCompares the two values without calling their __eq operator.\n",
      "@name rawequal",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/rawequal",
      "@param {void} this - no description",
      "@param {any} value1 - The first value to compare.",
      "@param {any} value2 - The second value to compare.",
      "@returns {boolean} - Whether or not the two values are equal."
    ],
    "type": "func",
    "context": "Global",
    "name": "rawequal",
    "typings": [
      "(this: void, value1: any, value2: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns an iterator function that can be used to loop through a table in random order\n",
      "@name RandomPairs",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/RandomPairs",
      "@param {void} this - no description",
      "@param {table} table - Table to create iterator for",
      "@param {boolean} descending - Whether the iterator should iterate descending or not",
      "@returns {function} - Iterator function"
    ],
    "type": "func",
    "context": "Global",
    "name": "RandomPairs",
    "typings": [
      "(this: void, table: table, descending: boolean): UnknownFunc"
    ]
  },
  {
    "comments": [
      "\nRuns a function without stopping the whole script on error.\nThis function is similar to @pcall function and @xpcall function except the errors are still printed and sent to the error handler (i.e. sent to server console if clientside and @GamemodeHooks:OnLuaError called).\n",
      "@name ProtectedCall",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/ProtectedCall",
      "@param {void} this - no description",
      "@param {function} func - Function to run",
      "@returns {boolean} - Whether the function executed successfully or not"
    ],
    "type": "func",
    "context": "Global",
    "name": "ProtectedCall",
    "typings": [
      "(this: void, func: UnknownFunc): boolean"
    ]
  },
  {
    "comments": [
      "\nCreates a new @ProjectedTexture type.\n",
      "@name ProjectedTexture",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/ProjectedTexture",
      "@param {void} this - no description",
      "@returns {ProjectedTexture} - Newly created projected texture."
    ],
    "type": "func",
    "context": "Global",
    "name": "ProjectedTexture",
    "typings": [
      "(this: void): ProjectedTexture"
    ]
  },
  {
    "comments": [
      "\nRecursively prints the contents of a table to the console.\n",
      "@name PrintTable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/PrintTable",
      "@param {void} this - no description",
      "@param {table} tableToPrint - The table to be printed",
      "@param {number} indent - Number of tabs to start indenting at. Increases by 2 when entering another table.",
      "@param {table} done - Internal argument, you shouldn't normally change this. Used to check if a nested table has already been printed so it doesn't get caught in a loop.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "PrintTable",
    "typings": [
      "(this: void, tableToPrint: table, indent?: number, done?: table): void"
    ]
  },
  {
    "comments": [
      "\nWrites every given argument to the console.\nAutomatically attempts to convert each argument to a string. (See @tostring function)\nSeparates arguments with a tab character (*\"\\t\"*).\n",
      "@name print",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/print",
      "@param {void} this - no description",
      "@param {any[]} ...args - List of values to print.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "print",
    "typings": [
      "(this: void, ...args: any[]): void"
    ]
  },
  {
    "comments": [
      "\nPrecache a sentence group in a sentences.txt definition file.\n",
      "@name PrecacheSentenceGroup",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Global/PrecacheSentenceGroup",
      "@param {void} this - no description",
      "@param {string} group - The group to precache.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "PrecacheSentenceGroup",
    "typings": [
      "(this: void, group: string): void"
    ]
  },
  {
    "comments": [
      "\nDisplays a message in the chat, console, or center of screen of every player.\nThis uses the archaic user message system (@umsg library) and hence is limited to ≈250 characters.\n",
      "@name PrintMessage",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Global/PrintMessage",
      "@param {void} this - no description",
      "@param {HUD} type - Which type of message should be sent to the players (see @HUD enum)",
      "@param {string} message - Message to be sent to the players",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "PrintMessage",
    "typings": [
      "(this: void, type: HUD, message: string): void"
    ]
  },
  {
    "comments": [
      "\nPrecaches a scene file.\n",
      "@name PrecacheScene",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Global/PrecacheScene",
      "@param {void} this - no description",
      "@param {string} scene - Path to the scene file to precache.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "PrecacheScene",
    "typings": [
      "(this: void, scene: string): void"
    ]
  },
  {
    "comments": [
      "\nPrecaches the particle with the specified name.\n",
      "@name PrecacheParticleSystem",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/PrecacheParticleSystem",
      "@param {void} this - no description",
      "@param {string} particleSystemName - The name of the particle system.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "PrecacheParticleSystem",
    "typings": [
      "(this: void, particleSystemName: string): void"
    ]
  },
  {
    "comments": [
      "\nMoves the given model to the given position and calculates appropriate camera parameters for rendering the model to an icon.\nThe output table interacts nicely with @Panel:RebuildSpawnIconEx with a few key renames.\n",
      "@name PositionSpawnIcon",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/PositionSpawnIcon",
      "@param {void} this - no description",
      "@param {Entity} model - Model that is being rendered to the spawn icon",
      "@param {Vector} position - Position that the model is being rendered at",
      "@param {boolean} noAngles - If true the function won't reset the angles to 0 for the model.",
      "@returns {table} - Table of information of the view which can be used for rendering"
    ],
    "type": "func",
    "context": "Global",
    "name": "PositionSpawnIcon",
    "typings": [
      "(this: void, model: Entity, position: Vector, noAngles: boolean): table"
    ]
  },
  {
    "comments": [
      "\nCalls a function and catches an error that can be thrown while the execution of the call.\n",
      "@name pcall",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/pcall",
      "@bug #1976 Using this function with @include function will break autorefresh.",
      "@bug #2036 This cannot stop errors from hooks called from the engine.",
      "@bug #2498 This does not stop @Error function and @ErrorNoHalt function from sending error messages to the server (if called clientside) or calling the @GamemodeHooks:OnLuaError hook. The success boolean returned will always return true and thus you will not get the error message returned. @error function does not exhibit these behaviours.",
      "@bug #3112 This does not stop errors incurred by @include function.",
      "@param {void} this - no description",
      "@param {function} func - Function to be executed and of which the errors should be caught of",
      "@param {any[]} ...arguments - Arguments to call the function with.",
      "@returns {boolean} - If the function had no errors occur within it.",
      "@returns {any[]} - If an error occurred, this will be a string containing the error message. Otherwise, this will be the return values of the function passed in.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "pcall",
    "typings": [
      "(this: void, func: UnknownFunc, ...arguments: any[]): [boolean, any[]]"
    ]
  },
  {
    "comments": [
      "\nReturns the player with the matching @Player:UserID.\nFor a function that returns a player based on their @EntityFuncs:EntIndex, see @Entity function.\nFor a function that returns a player based on their connection ID, see @player.GetByID.\n",
      "@name Player",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/Player",
      "@param {void} this - no description",
      "@param {number} playerIndex - The player index.",
      "@returns {Player} - The retrieved player."
    ],
    "type": "func",
    "context": "Global",
    "name": "Player",
    "typings": [
      "(this: void, playerIndex: number): Player"
    ]
  },
  {
    "comments": [
      "\nCreates a path for the bot to follow\n",
      "@name Path",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Global/Path",
      "@param {void} this - no description",
      "@param {string} type - The name of the path to create.\nThis is going to be \"Follow\" or \"Chase\" right now.",
      "@returns {PathFollower} - The path"
    ],
    "type": "func",
    "context": "Global",
    "name": "Path",
    "typings": [
      "(this: void, type: string): PathFollower"
    ]
  },
  {
    "comments": [
      "\nCreates a new @CLuaEmitter type.\n",
      "@name ParticleEmitter",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/ParticleEmitter",
      "@note Do not forget to delete the emitter with @CLuaEmitter:Finish once you are done with it",
      "@param {void} this - no description",
      "@param {Vector} position - The start position of the emitter.\nThis is only used to determine particle drawing order for translucent particles.",
      "@param {boolean} use3D - Whenever to render the particles in 2D or 3D mode.",
      "@returns {CLuaEmitter} - The new particle emitter."
    ],
    "type": "func",
    "context": "Global",
    "name": "ParticleEmitter",
    "typings": [
      "(this: void, position: Vector, use3D: boolean): CLuaEmitter"
    ]
  },
  {
    "comments": [
      "\nCreates a particle effect with specialized parameters.\n",
      "@name ParticleEffectAttach",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/ParticleEffectAttach",
      "@note The particle effect must be precached with @PrecacheParticleSystem function and the file its from must be added via @game.AddParticles before it can be used!",
      "@param {void} this - no description",
      "@param {string} particleName - The name of the particle effect.",
      "@param {PATTACH} attachType - Attachment type using @PATTACH enum.",
      "@param {Entity} entity - The entity to be used in the way specified by the attachType.",
      "@param {number} attachmentID - The id of the attachment to be used in the way specified by the attachType.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "ParticleEffectAttach",
    "typings": [
      "(this: void, particleName: string, attachType: PATTACH, entity: Entity, attachmentID: number): void"
    ]
  },
  {
    "comments": [
      "\nCreates a particle effect.\n",
      "@name ParticleEffect",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/ParticleEffect",
      "@note The particle effect must be precached with @PrecacheParticleSystem function and the file its from must be added via @game.AddParticles before it can be used!",
      "@param {void} this - no description",
      "@param {string} particleName - The name of the particle effect.",
      "@param {Vector} position - The start position of the effect.",
      "@param {Angle} angles - The orientation of the effect.",
      "@param {Entity} parent - If set, the particle will be parented to the entity.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "ParticleEffect",
    "typings": [
      "(this: void, particleName: string, position: Vector, angles: Angle, parent?: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalls @game.AddParticles and returns given string.\n",
      "@name Particle",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Particle",
      "@param {void} this - no description",
      "@param {string} file - The particle file.",
      "@returns {string} - The particle file."
    ],
    "type": "func",
    "context": "Global",
    "name": "Particle",
    "typings": [
      "(this: void, file: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns an iterator function(@next function) for a for loop that will return the values of the specified table in an arbitrary order.\nFor alphabetical **key** order use @SortedPairs function.\nFor alphabetical **value** order use @SortedPairsByValue function.\n",
      "@name pairs",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/pairs",
      "@param {void} this - no description",
      "@param {table} tab - The table to iterate over",
      "@returns {function} - The iterator (@next function)",
      "@returns {table} - The table being iterated over",
      "@returns {any} - **nil** (for the constructor)",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "pairs",
    "typings": [
      "(this: void, tab: table): [UnknownFunc, table, any]"
    ]
  },
  {
    "comments": [
      "\nModifies the given vectors so that all of vector2's axis are larger than vector1's by switching them around. Also known as ordering vectors.\n",
      "@name OrderVectors",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/OrderVectors",
      "@note This function will irreversibly modify the given vectors",
      "@param {void} this - no description",
      "@param {Vector} vector1 - Bounding box min resultant",
      "@param {Vector} vector2 - Bounding box max resultant",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "OrderVectors",
    "typings": [
      "(this: void, vector1: Vector, vector2: Vector): void"
    ]
  },
  {
    "comments": [
      "\nOpens a folder with the given name in the garrysmod folder using the operating system's file browser.\n",
      "@name OpenFolder",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/OpenFolder",
      "@bug #1532 This does not work on OSX or Linux.",
      "@param {void} this - no description",
      "@param {string} folder - The subdirectory to open in the garrysmod folder.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "OpenFolder",
    "typings": [
      "(this: void, folder: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine when a model has been loaded. Caches model information with the @sql library.\n",
      "@name OnModelLoaded",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/OnModelLoaded",
      "@internal",
      "@param {void} this - no description",
      "@param {string} modelName - Name of the model.",
      "@param {number} numPostParams - Number of pose parameters the model has.",
      "@param {number} numSeq - Number of sequences the model has.",
      "@param {number} numAttachments - Number of attachments the model has.",
      "@param {number} numBoneControllers - Number of bone controllers the model has.",
      "@param {number} numSkins - Number of skins that the model has.",
      "@param {number} size - Size of the model.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "OnModelLoaded",
    "typings": [
      "(this: void, modelName: string, numPostParams: number, numSeq: number, numAttachments: number, numBoneControllers: number, numSkins: number, size: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of skins the specified model has.\nSee also @EntityFuncs:SkinCount if you have an entity.\n",
      "@name NumModelSkins",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/NumModelSkins",
      "@param {void} this - no description",
      "@param {string} modelName - Model to return amount of skins of",
      "@returns {number} - Amount of skins"
    ],
    "type": "func",
    "context": "Global",
    "name": "NumModelSkins",
    "typings": [
      "(this: void, modelName: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns the number of files needed from the server you are currently joining.\n",
      "@name NumDownloadables",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/NumDownloadables",
      "@param {void} this - no description",
      "@returns {number} - The number of downloadables"
    ],
    "type": "func",
    "context": "Global",
    "name": "NumDownloadables",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the next key and value pair in a table.\n",
      "@name next",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/next",
      "@note Table keys in Lua have no specific order, and will be returned in whatever order they exist in memory. This may not always be in ascending order or alphabetical order. If you need to iterate over an array in order, use @ipairs function.",
      "@param {void} this - no description",
      "@param {table} tab - The table",
      "@param {any} prevKey - The previous key in the table.",
      "@returns {any} - The next key for the table. If the previous key was nil, this will be the first key in the table. If the previous key was the last key in the table, this will be nil.",
      "@returns {any} - The value associated with that key. If the previous key was the last key in the table, this will be nil.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "next",
    "typings": [
      "(this: void, tab: table, prevKey?: any): [any, any]"
    ]
  },
  {
    "comments": [
      "\nReturns a new userdata object.\n",
      "@name newproxy",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/newproxy",
      "@param {void} this - no description",
      "@param {boolean} addMetatable - If true, the userdata will get its own metatable automatically.",
      "@returns {userdata} - The newly created userdata."
    ],
    "type": "func",
    "context": "Global",
    "name": "newproxy",
    "typings": [
      "(this: void, addMetatable?: boolean): userdata"
    ]
  },
  {
    "comments": [
      "\nReturns named color defined in resource/ClientScheme.res.\n",
      "@name NamedColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/NamedColor",
      "@param {void} this - no description",
      "@param {string} name - Name of color",
      "@returns {IColor} - A @IColor structure or nil"
    ],
    "type": "func",
    "context": "Global",
    "name": "NamedColor",
    "typings": [
      "(this: void, name: string): IColor"
    ]
  },
  {
    "comments": [
      "\nSame as @print function, except it concatinates the arguments without inserting any whitespace in between them.\nSee also @Msg function, which doesn't add a newline (*\"\\n\"*) at the end.\n",
      "@name MsgN",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/MsgN",
      "@param {void} this - no description",
      "@param {any[]} ...args - List of values to print. They can be of any type and will be converted to strings with @tostring function.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "MsgN",
    "typings": [
      "(this: void, ...args: any[]): void"
    ]
  },
  {
    "comments": [
      "\nJust like @Msg function, except it can also print colored text, just like @chat.AddText.\n",
      "@name MsgC",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/MsgC",
      "@param {void} this - no description",
      "@param {any[]} ...args - Values to print. If you put in a color, all text after that color will be printed in that color.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "MsgC",
    "typings": [
      "(this: void, ...args: any[]): void"
    ]
  },
  {
    "comments": [
      "\nWrites every given argument to the console.\nAutomatically attempts to convert each argument to a string. (See @tostring function)\nUnlike @print function, arguments are not separated by anything. They are simply concatenated.\nAdditionally, a newline isn't added automatically to the end, so subsequent Msg or print operations will continue the same line of text in the console. See @MsgN function for a version that does add a newline.\nThe text is blue on the server, orange on the client, and green on the menu: [File:msg server client colors.png](https://wiki.garrysmod.com/page/File:msg%20server%20client%20colors.png)\n",
      "@name Msg",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Msg",
      "@param {void} this - no description",
      "@param {any[]} ...args - List of values to print.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "Msg",
    "typings": [
      "(this: void, ...args: any[]): void"
    ]
  },
  {
    "comments": [
      "\nWorks exactly like @Msg function except that, if called on the server, will print to all players consoles plus the server console.\n",
      "@name MsgAll",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/MsgAll",
      "@param {void} this - no description",
      "@param {any[]} ...args - List of values to print.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "MsgAll",
    "typings": [
      "(this: void, ...args: any[]): void"
    ]
  },
  {
    "comments": [
      "\nCreates a table with the specified module name and sets the function environment for said table.\nAny passed loaders are called with the table as an argument. An example of this is @package.seeall.\n",
      "@name module",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/module",
      "@param {void} this - no description",
      "@param {string} name - The name of the module. This will be used to access the module table in the runtime environment.",
      "@param {any[]} ...loaders - Calls each function passed with the new table as an argument.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "module",
    "typings": [
      "(this: void, name: string, ...loaders: any[]): void"
    ]
  },
  {
    "comments": [
      "\nRuns @util.PrecacheModel and returns the string\n",
      "@name Model",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Model",
      "@param {void} this - no description",
      "@param {string} model - The model to precache",
      "@returns {string} - The same string entered as an argument"
    ],
    "type": "func",
    "context": "Global",
    "name": "Model",
    "typings": [
      "(this: void, model: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns a @VMatrix type object.\n",
      "@name Matrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/Matrix",
      "@param {void} this - no description",
      "@param {table} data - Initial data to initialize the matrix with. Leave empty to initialize an identity matrix. See examples for usage.\nCan be a @VMatrix type to copy its data.",
      "@returns {VMatrix} - New matrix."
    ],
    "type": "func",
    "context": "Global",
    "name": "Matrix",
    "typings": [
      "(this: void, data?: table): VMatrix"
    ]
  },
  {
    "comments": [
      "\nReturns a new mesh object.\n",
      "@name Mesh",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/Mesh",
      "@param {void} this - no description",
      "@param {IMaterial} mat - The material the mesh is intended to be rendered with. It's merely a hint that tells that mesh what vertex format it should use.",
      "@returns {IMesh} - The created object."
    ],
    "type": "func",
    "context": "Global",
    "name": "Mesh",
    "typings": [
      "(this: void, mat?: IMaterial): IMesh"
    ]
  },
  {
    "comments": [
      "\nTranslates the specified position and angle from the specified local coordinate system into worldspace coordinates.\nIf you're working with an entity's local vectors, use @EntityFuncs:LocalToWorld and/or @EntityFuncs:LocalToWorldAngles instead.\nSee also: @WorldToLocal function, the reverse of this function.\n",
      "@name LocalToWorld",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/LocalToWorld",
      "@param {void} this - no description",
      "@param {Vector} localPos - The position vector in the source coordinate system, that should be translated to world coordinates",
      "@param {Angle} localAng - The angle in the source coordinate system, that should be converted to a world angle. If you don't need to convert an angle, you can supply an arbitrary valid angle (e.g. @Angle function()).",
      "@param {Vector} originPos - The origin point of the source coordinate system, in world coordinates",
      "@param {Angle} originAngle - The angles of the source coordinate system, as a world angle",
      "@returns {Vector} - The world position of the supplied local position.",
      "@returns {Angle} - The world angles of the supplied local angle.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "LocalToWorld",
    "typings": [
      "(this: void, localPos: Vector, localAng: Angle, originPos: Vector, originAngle: Angle): [Vector, Angle]"
    ]
  },
  {
    "comments": [
      "\nEither returns the material with the given name, or loads the material interpreting the first argument as the path.\n",
      "@name Material",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Material",
      "@note When using .png or .jpg textures, try to make their sizes Power Of 2 (1, 2, 4, 8, 16, 32, 64, etc). While images are no longer scaled to Power of 2 sizes since February 2019, it is a good practice for things like icons, etc.",
      "@note Since paths are relative to the materials folder, resource paths like ../data/MyImage.jpg will work since \"..\" translates to moving up a parent directory in the file tree.",
      "@note This feature only works when importing .png or .jpeg image files",
      "@param {void} this - no description",
      "@param {string} materialName - The material name or path. The path is relative to the **materials/ ** folder. You do not need to add **materials/ ** to your path.\nTo retrieve a Lua material created with @CreateMaterial function, just prepend a \"!\" to the material name.",
      "@param {string} pngParameters - A string containing space separated keywords which will be used to add material parameters.\nSee [Material Parameters](https://wiki.garrysmod.com/page/Material%20Parameters) for more information.",
      "@returns {IMaterial} - Generated material",
      "@returns {number} - How long it took for the function to run",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "Material",
    "typings": [
      "(this: void, materialName: string, pngParameters?: string): [IMaterial, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the player object of the current client.\nLocalPlayer() will return NULL until all entities have been initialized. See @GamemodeHooks:InitPostEntity.\n",
      "@name LocalPlayer",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/LocalPlayer",
      "@param {void} this - no description",
      "@returns {Player} - The player object representing the client."
    ],
    "type": "func",
    "context": "Global",
    "name": "LocalPlayer",
    "typings": [
      "(this: void): Player"
    ]
  },
  {
    "comments": [
      "\nReturns a localisation for the given token, if none is found it will return the default(second) parameter.\n",
      "@name Localize",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Localize",
      "@param {void} this - no description",
      "@param {string} localisationToken - The token to find a translation for.",
      "@param {string} def - The default value to be returned if no translation was found.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "Localize",
    "typings": [
      "(this: void, localisationToken: string, def: string): void"
    ]
  },
  {
    "comments": [
      "\nLoads all preset settings for the @presets library and returns them in a table\n",
      "@name LoadPresets",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/LoadPresets",
      "@param {void} this - no description",
      "@returns {table} - Preset data"
    ],
    "type": "func",
    "context": "Global",
    "name": "LoadPresets",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nThis function is used to get the last map and category to which the map belongs from the cookie saved with @SaveLastMap function.\n",
      "@name LoadLastMap",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/LoadLastMap",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "LoadLastMap",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nLinear interpolation between two vectors. It is commonly used to smooth movement between two vectors.\n",
      "@name LerpVector",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/LerpVector",
      "@param {void} this - no description",
      "@param {number} fraction - Fraction ranging from 0 to 1",
      "@param {Vector} from - The initial Vector",
      "@param {Vector} to - The desired Vector",
      "@returns {Vector} - The lerped vector."
    ],
    "type": "func",
    "context": "Global",
    "name": "LerpVector",
    "typings": [
      "(this: void, fraction: number, from: Vector, to: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nPerforms a linear interpolation from the start number to the end number.\nThis function provides a very efficient and easy way to smooth out movements.\n",
      "@name Lerp",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Lerp",
      "@param {void} this - no description",
      "@param {number} t - The fraction for finding the result. This number is clamped between 0 and 1.",
      "@param {number} from - The starting number. The result will be equal to this if delta is 0.",
      "@param {number} to - The ending number. The result will be equal to this if delta is 1.",
      "@returns {number} - The result of the linear interpolation, (1 - t) * from + t * to."
    ],
    "type": "func",
    "context": "Global",
    "name": "Lerp",
    "typings": [
      "(this: void, t: number, from: number, to: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns point between first and second angle using given fraction and linear interpolation\n",
      "@name LerpAngle",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/LerpAngle",
      "@param {void} this - no description",
      "@param {number} ratio - Ratio of progress through values",
      "@param {Angle} angleStart - Angle to begin from",
      "@param {Angle} angleEnd - Angle to end at",
      "@returns {Angle} - angle"
    ],
    "type": "func",
    "context": "Global",
    "name": "LerpAngle",
    "typings": [
      "(this: void, ratio: number, angleStart: Angle, angleEnd: Angle): Angle"
    ]
  },
  {
    "comments": [
      "\nConvenience function that creates a DLabel, sets the text, and returns it\n",
      "@name Label",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Label",
      "@param {void} this - no description",
      "@param {string} text - The string to set the label's text to",
      "@param {Panel} parent - Optional. The panel to parent the DLabel to",
      "@returns {Panel} - The created DLabel"
    ],
    "type": "func",
    "context": "Global",
    "name": "Label",
    "typings": [
      "(this: void, text: string, parent?: Panel): Panel"
    ]
  },
  {
    "comments": [
      "\nAdds workshop related javascript functions to an HTML panel, used by the \"Dupes\" and \"Saves\" tabs in the spawnmenu.\n",
      "@name JS_Workshop",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/JS Workshop",
      "@param {void} this - no description",
      "@param {Panel} htmlPanel - Panel to add javascript functions to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "JS_Workshop",
    "typings": [
      "(this: void, htmlPanel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCallback function for when the client's language changes. Called by the engine.\n",
      "@name LanguageChanged",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/LanguageChanged",
      "@param {void} this - no description",
      "@param {string} lang - The new language code.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "LanguageChanged",
    "typings": [
      "(this: void, lang: string): void"
    ]
  },
  {
    "comments": [
      "\nAdds javascript function 'util.MotionSensorAvailable' to an HTML panel as a method to call Lua's @motionsensor.IsAvailable function.\n",
      "@name JS_Utility",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/JS Utility",
      "@param {void} this - no description",
      "@param {Panel} htmlPanel - Panel to add javascript function 'util.MotionSensorAvailable' to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "JS_Utility",
    "typings": [
      "(this: void, htmlPanel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nJoins the server with the specified IP.\n",
      "@name JoinServer",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/JoinServer",
      "@param {void} this - no description",
      "@param {string} IP - The IP of the server to join",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "JoinServer",
    "typings": [
      "(this: void, IP: string): void"
    ]
  },
  {
    "comments": [
      "\nAdds javascript function 'language.Update' to an HTML panel as a method to call Lua's @language.GetPhrase function.\n",
      "@name JS_Language",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/JS Language",
      "@param {void} this - no description",
      "@param {Panel} htmlPanel - Panel to add javascript function 'language.Update' to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "JS_Language",
    "typings": [
      "(this: void, htmlPanel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether an object is valid or not. (Such as @Entity types, @Panel types, custom @table type objects and more)Checks that an object is not nil, has an IsValid method and if this method returns true.\n",
      "@name IsValid",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/IsValid",
      "@note Due to vehicles being technically valid the moment they're spawned, also use @Vehicle:IsValidVehicle to make sure they're fully initialized",
      "@param {void} this - no description",
      "@param {any} toBeValidated - The table or object to be validated.",
      "@returns {boolean} - True if the object is valid."
    ],
    "type": "func",
    "context": "Global",
    "name": "IsValid",
    "typings": [
      "(this: void, toBeValidated: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the passed object is a @Vector type.\n",
      "@name isvector",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/isvector",
      "@param {void} this - no description",
      "@param {any} variable - The variable to perform the type check for.",
      "@returns {boolean} - True if the variable is a @Vector type."
    ],
    "type": "func",
    "context": "Global",
    "name": "isvector",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not a model is useless by checking that the file path is that of a proper model.\nIf the string \".mdl\" is not found in the model name, the function will return true.\nThe function will also return true if any of the following strings are found in the given model name:\n* \"_gesture\"\n* \"_anim\"\n* \"_gst\"\n* \"_pst\"\n* \"_shd\"\n* \"_ss\"\n* \"_posture\"\n* \"_anm\"\n* \"ghostanim\"\n* \"_paths\"\n* \"_shared\"\n* \"anim_\"\n* \"gestures_\"\n* \"shared_ragdoll_\"\n",
      "@name IsUselessModel",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/IsUselessModel",
      "@param {void} this - no description",
      "@param {string} modelName - The model name to be checked",
      "@returns {boolean} - Whether or not the model is useless"
    ],
    "type": "func",
    "context": "Global",
    "name": "IsUselessModel",
    "typings": [
      "(this: void, modelName: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not every element within a table is a valid entity\n",
      "@name IsTableOfEntitiesValid",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/IsTableOfEntitiesValid",
      "@param {void} this - no description",
      "@param {table} table - Table containing entities to check",
      "@returns {boolean} - All entities valid"
    ],
    "type": "func",
    "context": "Global",
    "name": "IsTableOfEntitiesValid",
    "typings": [
      "(this: void, table: table): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the passed object is a @table type.\n",
      "@name istable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/istable",
      "@param {void} this - no description",
      "@param {any} variable - The variable to perform the type check for.",
      "@returns {boolean} - True if the variable is a @table type."
    ],
    "type": "func",
    "context": "Global",
    "name": "istable",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the passed object is a @string type.\n",
      "@name isstring",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/isstring",
      "@param {void} this - no description",
      "@param {any} variable - The variable to perform the type check for.",
      "@returns {boolean} - True if the variable is a @string type."
    ],
    "type": "func",
    "context": "Global",
    "name": "isstring",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the passed object is a @number type.\n",
      "@name isnumber",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/isnumber",
      "@param {void} this - no description",
      "@param {any} variable - The variable to perform the type check for.",
      "@returns {boolean} - True if the variable is a @number type."
    ],
    "type": "func",
    "context": "Global",
    "name": "isnumber",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the passed object is a @Panel type.\n",
      "@name ispanel",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ispanel",
      "@param {void} this - no description",
      "@param {any} variable - The variable to perform the type check for.",
      "@returns {boolean} - True if the variable is a @Panel type."
    ],
    "type": "func",
    "context": "Global",
    "name": "ispanel",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks whether or not a game is currently mounted. Uses data given by @engine.GetGames.\n",
      "@name IsMounted",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/IsMounted",
      "@param {void} this - no description",
      "@param {string} game - The game string/app ID to check.",
      "@returns {boolean} - True if the game is mounted."
    ],
    "type": "func",
    "context": "Global",
    "name": "IsMounted",
    "typings": [
      "(this: void, game: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the client is currently playing either a singleplayer or multiplayer game.\n",
      "@name IsInGame",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/IsInGame",
      "@param {void} this - no description",
      "@returns {boolean} - True if we are in a game."
    ],
    "type": "func",
    "context": "Global",
    "name": "IsInGame",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the passed object is a @function type.\n",
      "@name isfunction",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/isfunction",
      "@param {void} this - no description",
      "@param {any} variable - The variable to perform the type check for.",
      "@returns {boolean} - True if the variable is a @function type."
    ],
    "type": "func",
    "context": "Global",
    "name": "isfunction",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the passed object is a @VMatrix type.\n",
      "@name ismatrix",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ismatrix",
      "@param {void} this - no description",
      "@param {any} variable - The variable to perform the type check for.",
      "@returns {boolean} - True if the variable is a @VMatrix type."
    ],
    "type": "func",
    "context": "Global",
    "name": "ismatrix",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the given NPC class name is a friend.\nReturns true if the entity name is one of the following:\n* \"npc_alyx\"\n* \"npc_barney\"\n* \"npc_citizen\"\n* \"npc_dog\"\n* \"npc_eli\"\n* \"npc_fisherman\"\n* \"npc_gman\"\n* \"npc_kleiner\"\n* \"npc_magnusson\"\n* \"npc_monk\"\n* \"npc_mossman\"\n* \"npc_odessa\"\n* \"npc_vortigaunt\"\n",
      "@name IsFriendEntityName",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/IsFriendEntityName",
      "@param {void} this - no description",
      "@param {string} className - Class name of the entity to check",
      "@returns {boolean} - Is a friend"
    ],
    "type": "func",
    "context": "Global",
    "name": "IsFriendEntityName",
    "typings": [
      "(this: void, className: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the passed object is an @Entity type.\n",
      "@name isentity",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/isentity",
      "@param {void} this - no description",
      "@param {any} variable - The variable to perform the type check for.",
      "@returns {boolean} - True if the variable is an @Entity type."
    ],
    "type": "func",
    "context": "Global",
    "name": "isentity",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the passed object is an @Entity type. Alias of @isentity function.\n",
      "@name IsEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/IsEntity",
      "@param {void} this - no description",
      "@param {any} variable - The variable to check.",
      "@returns {boolean} - True if the variable is an @Entity type."
    ],
    "type": "func",
    "context": "Global",
    "name": "IsEntity",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the given NPC class name is an enemy.\nReturns true if the entity name is one of the following:\n* \"npc_antlion\"\n* \"npc_antlionguard\"\n* \"npc_antlionguardian\"\n* \"npc_barnacle\"\n* \"npc_breen\"\n* \"npc_clawscanner\"\n* \"npc_combine_s\"\n* \"npc_cscanner\"\n* \"npc_fastzombie\"\n* \"npc_fastzombie_torso\"\n* \"npc_headcrab\"\n* \"npc_headcrab_fast\"\n* \"npc_headcrab_poison\"\n* \"npc_hunter\"\n* \"npc_metropolice\"\n* \"npc_manhack\"\n* \"npc_poisonzombie\"\n* \"npc_strider\"\n* \"npc_stalker\"\n* \"npc_zombie\"\n* \"npc_zombie_torso\"\n* \"npc_zombine\"\n",
      "@name IsEnemyEntityName",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/IsEnemyEntityName",
      "@param {void} this - no description",
      "@param {string} className - Class name of the entity to check",
      "@returns {boolean} - Is an enemy"
    ],
    "type": "func",
    "context": "Global",
    "name": "IsEnemyEntityName",
    "typings": [
      "(this: void, className: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the given object does or doesn't have a *metatable* of a color.\n",
      "@name IsColor",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/IsColor",
      "@bug #2407 Engine functions (i.e. those not written in plain Lua) that return color objects do not currently set the color metatable and this function will return false if you use it on them.",
      "@param {void} this - no description",
      "@param {any} Object - The object to be tested",
      "@returns {boolean} - Whether the given object is a color or not"
    ],
    "type": "func",
    "context": "Global",
    "name": "IsColor",
    "typings": [
      "(this: void, Object: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the passed object is a @boolean type.\n",
      "@name isbool",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/isbool",
      "@param {void} this - no description",
      "@param {any} variable - The variable to perform the type check for.",
      "@returns {boolean} - True if the variable is a @boolean type."
    ],
    "type": "func",
    "context": "Global",
    "name": "isbool",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the passed object is an @Angle type.\n",
      "@name isangle",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/isangle",
      "@param {void} this - no description",
      "@param {any} variable - The variable to perform the type check for.",
      "@returns {boolean} - True if the variable is an @Angle type."
    ],
    "type": "func",
    "context": "Global",
    "name": "isangle",
    "typings": [
      "(this: void, variable: any): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns an iterator function for a for loop, to return ordered key-value pairs from a table.\nThis will only iterate though **numerical** keys, and these must also be **sequential**; starting at 1 with no gaps.\nFor unordered pairs, see @pairs function.\nFor pairs sorted by key in alphabetical order, see @SortedPairs function.\n",
      "@name ipairs",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ipairs",
      "@param {void} this - no description",
      "@param {table} tab - The table to iterate over.",
      "@returns {function} - The iterator function.",
      "@returns {table} - The table being iterated over",
      "@returns {number} - The origin index **=0**",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "ipairs",
    "typings": [
      "(this: void, tab: table): [UnknownFunc, table, number]"
    ]
  },
  {
    "comments": [
      "\nLoad and precache a custom sentence file.\n",
      "@name PrecacheSentenceFile",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Global/PrecacheSentenceFile",
      "@param {void} this - no description",
      "@param {string} filename - The path to the custom sentences.txt.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "PrecacheSentenceFile",
    "typings": [
      "(this: void, filename: string): void"
    ]
  },
  {
    "comments": [
      "\nThis function works exactly the same as @include function both clientside and serverside.\nThe only difference is that on the serverside it also calls @AddCSLuaFile function on the filename, so that it gets sent to the client.\n",
      "@name IncludeCS",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/IncludeCS",
      "@param {void} this - no description",
      "@param {string} filename - The filename of the Lua file you want to include.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "IncludeCS",
    "typings": [
      "(this: void, filename?: string): void"
    ]
  },
  {
    "comments": [
      "\nExecutes a Lua script.\n",
      "@name include",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/include",
      "@note Addon files (.gma files) do not support relative parent folders (*..* notation).",
      "@note Please make sure your file names are unique, the filesystem is shared across all addons, so a file named \"lua/config.lua\" in your addon may be overwritten by the same file in another addon.",
      "@warning The file you are attempting to include MUST NOT be empty or the include will fail. Files over a certain size may fail as well.",
      "@warning If the file you are including is clientside or shared, it **must** be @AddCSLuaFile function'd or this function will error saying the file doesn't exist.",
      "@bug #1976 @pcall functioning this function will break autorefresh.",
      "@param {void} this - no description",
      "@param {string} fileName - The name of the script to be executed. The path must be either relative to the current file, or be an absolute path (relative to and excluding the lua/ folder).",
      "@returns {any[]} - Anything that the executed Lua script returns."
    ],
    "type": "func",
    "context": "Global",
    "name": "include",
    "typings": [
      "(this: void, fileName: string): any[]"
    ]
  },
  {
    "comments": [
      "\nLaunches an asynchronous http request with the given parameters.\n",
      "@name HTTP",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/HTTP",
      "@bug #2232 This cannot send or receive multiple headers with the same name.",
      "@param {void} this - no description",
      "@param {HTTPRequest} parameters - The request parameters. See @HTTPRequest structure.",
      "@returns {boolean} - true if we made a request, nil if we failed."
    ],
    "type": "func",
    "context": "Global",
    "name": "HTTP",
    "typings": [
      "(this: void, parameters: HTTPRequest): boolean"
    ]
  },
  {
    "comments": [
      "\nConverts a color from [HSV color space](https://en.wikipedia.org/wiki/HSL_and_HSV) into RGB color space and returns a @IColor structure.\n",
      "@name HSVToColor",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/HSVToColor",
      "@bug #2407 The returned color will not have the color metatable.",
      "@param {void} this - no description",
      "@param {number} hue - The hue in degrees from 0-360.",
      "@param {number} saturation - The saturation from 0-1.",
      "@param {number} value - The value from 0-1.",
      "@returns {IColor} - The @IColor structure created from the HSV color space."
    ],
    "type": "func",
    "context": "Global",
    "name": "HSVToColor",
    "typings": [
      "(this: void, hue: number, saturation: number, value: number): IColor"
    ]
  },
  {
    "comments": [
      "\nConverts a color from [HSL color space](https://en.wikipedia.org/wiki/HSL_and_HSV) into RGB color space and returns a @IColor structure.\n",
      "@name HSLToColor",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/HSLToColor",
      "@bug #2407 The returned color will not have the color metatable.",
      "@param {void} this - no description",
      "@param {number} hue - The hue in degrees from 0-360.",
      "@param {number} saturation - The saturation from 0-1.",
      "@param {number} value - The lightness from 0-1.",
      "@returns {IColor} - The @IColor structure created from the HSL color space."
    ],
    "type": "func",
    "context": "Global",
    "name": "HSLToColor",
    "typings": [
      "(this: void, hue: number, saturation: number, value: number): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns the entity the client is using to see from (such as the player itself, the camera, or another entity).\n",
      "@name GetViewEntity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/GetViewEntity",
      "@param {void} this - no description",
      "@returns {Entity} - The view entity."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetViewEntity",
    "typings": [
      "(this: void): Entity"
    ]
  },
  {
    "comments": [
      "\nRetrieves data about the save with the specified filename. Similar to @GetDemoFileDetails function.\n",
      "@name GetSaveFileDetails",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetSaveFileDetails",
      "@param {void} this - no description",
      "@param {string} filename - The file name of the save.",
      "@returns {table} - Save data."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetSaveFileDetails",
    "typings": [
      "(this: void, filename: string): table"
    ]
  },
  {
    "comments": [
      "\nCreates (or gets if it already exsits) the rendertarget with the given name, this function allows to adjust the creation of a rendertarget more than @GetRenderTarget function.\nSee also @render.PushRenderTarget and @render.SetRenderTarget.\n",
      "@name GetRenderTargetEx",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/GetRenderTargetEx",
      "@warning The name is treated like a path and gets its extension discarded.\n\"name.1\" and \"name.2\" are considered the same name and will result in the same render target being reused.",
      "@param {void} this - no description",
      "@param {string} name - The internal name of the render target.",
      "@param {number} width - The width of the render target, must be power of 2.",
      "@param {number} height - The height of the render target, must be power of 2.",
      "@param {RT_SIZE} sizeMode - Bitflag that influences the sizing of the render target, see @RT_SIZE enum.",
      "@param {MATERIAL_RT_DEPTH} depthMode - Bitflag that determines the depth buffer usage of the render target @MATERIAL_RT_DEPTH enum.",
      "@param {TEXTUREFLAGS} textureFlags - Bitflag that configurates the texture, see @TEXTUREFLAGS enum.\nList of flags can also be found on the Valve's Developer Wiki:\nhttps://developer.valvesoftware.com/wiki/Valve_Texture_Format",
      "@param {CREATERENDERTARGETFLAGS} rtFlags - Flags that controll the HDR behaviour of the render target, see @CREATERENDERTARGETFLAGS enum.",
      "@param {IMAGE_FORMAT} imageFormat - Image format, see @IMAGE_FORMAT enum.",
      "@returns {ITexture} - The new render target."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetRenderTargetEx",
    "typings": [
      "(this: void, name: string, width: number, height: number, sizeMode: RT_SIZE, depthMode: MATERIAL_RT_DEPTH, textureFlags: TEXTUREFLAGS, rtFlags: CREATERENDERTARGETFLAGS, imageFormat: IMAGE_FORMAT): ITexture"
    ]
  },
  {
    "comments": [
      "\nCreates or gets the rendertarget with the given name.\nSee @GetRenderTargetEx function for an advanced version of this function with more options.\n",
      "@name GetRenderTarget",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/GetRenderTarget",
      "@bug #2885 This crashes when used on a cubemap texture.",
      "@param {void} this - no description",
      "@param {string} name - The internal name of the render target.",
      "@param {number} width - The width of the render target, must be power of 2. If not set to PO2, the size will be automatically converted to the nearest PO2 size.",
      "@param {number} height - The height of the render target, must be power of 2. If not set to PO2, the size will be automatically converted to the nearest PO2 size.",
      "@param {boolean} additive - Sets whenever the rt should be additive.",
      "@returns {ITexture} - The render target"
    ],
    "type": "func",
    "context": "Global",
    "name": "GetRenderTarget",
    "typings": [
      "(this: void, name: string, width: number, height: number, additive?: boolean): ITexture"
    ]
  },
  {
    "comments": [
      "\nReturns the metatable of an object. This function obeys the metatable's __metatable field, and will return that field if the metatable has it set.\nUse @debug.getmetatable if you want the true metatable of the object.\n",
      "@name getmetatable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/getmetatable",
      "@param {void} this - no description",
      "@param {any} object - The value to return the metatable of.",
      "@returns {any} - The metatable of the value. This is not always a table."
    ],
    "type": "func",
    "context": "Global",
    "name": "getmetatable",
    "typings": [
      "(this: void, object: any): any"
    ]
  },
  {
    "comments": [
      "\nReturns the menu overlay panel, a container for panels like the error panel created in @GamemodeHooks:OnLuaError.\n",
      "@name GetOverlayPanel",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetOverlayPanel",
      "@param {void} this - no description",
      "@returns {Panel} - The overlay panel"
    ],
    "type": "func",
    "context": "Global",
    "name": "GetOverlayPanel",
    "typings": [
      "(this: void): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns if this is the first time this hook was predicted.\nThis is useful for one-time logic in your SWEPs PrimaryAttack, SecondaryAttack and Reload and other [predicted hooks](https://wiki.garrysmod.com/page/Category:Predicted_Hooks) (to prevent those hooks from being called rapidly in succession). It's also useful in a Move hook for when the client predicts movement.\nVisit [Prediction](https://wiki.garrysmod.com/page/Prediction) for more information about this behavior.\n",
      "@name IsFirstTimePredicted",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/IsFirstTimePredicted",
      "@note This is already used internally for @EntityFuncs:EmitSound, @WeaponFuncs:SendWeaponAnim and @EntityFuncs:FireBullets, but NOT in  @util.Effect.",
      "@param {void} this - no description",
      "@returns {boolean} - Whether or not this is the first time being predicted."
    ],
    "type": "func",
    "context": "Global",
    "name": "IsFirstTimePredicted",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the current status of the server join progress.\n",
      "@name GetLoadStatus",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetLoadStatus",
      "@param {void} this - no description",
      "@returns {string} - The current status"
    ],
    "type": "func",
    "context": "Global",
    "name": "GetLoadStatus",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nReturns the loading screen panel and creates it if it doesn't exist.\n",
      "@name GetLoadPanel",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetLoadPanel",
      "@param {void} this - no description",
      "@returns {Panel} - The loading screen panel"
    ],
    "type": "func",
    "context": "Global",
    "name": "GetLoadPanel",
    "typings": [
      "(this: void): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the panel that is used as a wrapper for the HUD.\nSee also @vgui.GetWorldPanel\n",
      "@name GetHUDPanel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/GetHUDPanel",
      "@param {void} this - no description",
      "@returns {Panel} - The HUD panel"
    ],
    "type": "func",
    "context": "Global",
    "name": "GetHUDPanel",
    "typings": [
      "(this: void): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the current server.\n",
      "@name GetHostName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/GetHostName",
      "@param {void} this - no description",
      "@returns {string} - The name of the server."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetHostName",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nReturns a vector that is shared between the server and all clients.\n",
      "@name GetGlobalVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/GetGlobalVector",
      "@param {void} this - no description",
      "@param {string} Index - The unique index to identify the global value with.",
      "@param {Vector} def - The value to return if the global value is not set.",
      "@returns {Vector} - The global value, or the default if the global value is not set."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetGlobalVector",
    "typings": [
      "(this: void, Index: string, def: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns a string that is shared between the server and all clients.\n",
      "@name GetGlobalString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/GetGlobalString",
      "@param {void} this - no description",
      "@param {string} index - The unique index to identify the global value with.",
      "@param {string} def - The value to return if the global value is not set.",
      "@returns {string} - The global value, or the default if the global value is not set."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetGlobalString",
    "typings": [
      "(this: void, index: string, def?: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns an integer that is shared between the server and all clients.\n",
      "@name GetGlobalInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/GetGlobalInt",
      "@bug #3374 This function will not round decimal values as it actually networks a float internally.",
      "@param {void} this - no description",
      "@param {string} index - The unique index to identify the global value with.",
      "@param {number} def - The value to return if the global value is not set.",
      "@returns {number} - The global value, or the default if the global value is not set."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetGlobalInt",
    "typings": [
      "(this: void, index: string, def?: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns a float that is shared between the server and all clients.\n",
      "@name GetGlobalFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/GetGlobalFloat",
      "@param {void} this - no description",
      "@param {string} index - The unique index to identify the global value with.",
      "@param {number} def - The value to return if the global value is not set.",
      "@returns {number} - The global value, or the default if the global value is not set."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetGlobalFloat",
    "typings": [
      "(this: void, index: string, def?: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns an entity that is shared between the server and all clients.\n",
      "@name GetGlobalEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/GetGlobalEntity",
      "@param {void} this - no description",
      "@param {string} index - The unique index to identify the global value with.",
      "@param {Entity} def - The value to return if the global value is not set.",
      "@returns {Entity} - The global value, or the default if the global value is not set."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetGlobalEntity",
    "typings": [
      "(this: void, index: string, def?: Entity): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns a boolean that is shared between the server and all clients.\n",
      "@name GetGlobalBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/GetGlobalBool",
      "@param {void} this - no description",
      "@param {string} index - The unique index to identify the global value with.",
      "@param {boolean} def - The value to return if the global value is not set.",
      "@returns {boolean} - The global value, or the default if the global value is not set."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetGlobalBool",
    "typings": [
      "(this: void, index: string, def?: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns an angle that is shared between the server and all clients.\n",
      "@name GetGlobalAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/GetGlobalAngle",
      "@param {void} this - no description",
      "@param {string} index - The unique index to identify the global value with.",
      "@param {Angle} def - The value to return if the global value is not set.",
      "@returns {Angle} - The global value, or default if the global is not set."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetGlobalAngle",
    "typings": [
      "(this: void, index: string, def?: Angle): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the environment table of either the stack level or the function specified.\n",
      "@name getfenv",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/getfenv",
      "@param {void} this - no description",
      "@param {function} location - The object to get the enviroment from. Can also be a number that specifies the function at that stack level: Level 1 is the function calling getfenv.",
      "@returns {table} - The environment."
    ],
    "type": "func",
    "context": "Global",
    "name": "getfenv",
    "typings": [
      "(this: void, location?: UnknownFunc): table"
    ]
  },
  {
    "comments": [
      "\nReturns a table with the names of files needed from the server you are currently joining.\n",
      "@name GetDownloadables",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetDownloadables",
      "@param {void} this - no description",
      "@returns {table} - table of file names"
    ],
    "type": "func",
    "context": "Global",
    "name": "GetDownloadables",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nRetrieves data about the demo with the specified filename. Similar to @GetSaveFileDetails function.\n",
      "@name GetDemoFileDetails",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetDemoFileDetails",
      "@param {void} this - no description",
      "@param {string} filename - The file name of the demo.",
      "@returns {table} - Demo data."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetDemoFileDetails",
    "typings": [
      "(this: void, filename: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns the default loading screen URL (asset://garrysmod/html/loading.html)\n",
      "@name GetDefaultLoadingHTML",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetDefaultLoadingHTML",
      "@param {void} this - no description",
      "@returns {string} - Default loading url (asset://garrysmod/html/loading.html)"
    ],
    "type": "func",
    "context": "Global",
    "name": "GetDefaultLoadingHTML",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nGets the ConVar with the specified name. This function doesn't cache the convar.\n",
      "@name GetConVar_Internal",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetConVar Internal",
      "@internal",
      "@param {void} this - no description",
      "@param {string} name - Name of the ConVar to get",
      "@returns {ConVar} - The ConVar object"
    ],
    "type": "func",
    "context": "Global",
    "name": "GetConVar_Internal",
    "typings": [
      "(this: void, name: string): ConVar"
    ]
  },
  {
    "comments": [
      "\nGets the string value ConVar with the specified name.\n",
      "@name GetConVarString",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetConVarString",
      "@param {void} this - no description",
      "@param {string} name - Name of the ConVar to get.",
      "@returns {string} - The ConVar's value."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetConVarString",
    "typings": [
      "(this: void, name: string): string"
    ]
  },
  {
    "comments": [
      "\nGets the numeric value ConVar with the specified name.\n",
      "@name GetConVarNumber",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetConVarNumber",
      "@param {void} this - no description",
      "@param {string} name - Name of the ConVar to get.",
      "@returns {number} - The ConVar's value."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetConVarNumber",
    "typings": [
      "(this: void, name: string): number"
    ]
  },
  {
    "comments": [
      "\nGets the @ConVar type with the specified name.\n",
      "@name GetConVar",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetConVar",
      "@note This function uses @GetConVar_Internal function internally, but caches the result in Lua for quicker lookups.",
      "@param {void} this - no description",
      "@param {string} name - Name of the ConVar to get",
      "@returns {ConVar | ConVar} - The @ConVar type object, or nil if no such @ConVar type was found."
    ],
    "type": "func",
    "context": "Global",
    "name": "GetConVar",
    "typings": [
      "(this: void, name: string): ConVar | ConVar"
    ]
  },
  {
    "comments": [
      "\nCallback function for when the client has joined a server. This function shows the server's loading URL by default.\n",
      "@name GameDetails",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GameDetails",
      "@param {void} this - no description",
      "@param {string} servername - Server's name.",
      "@param {string} serverurl - Server's loading screen URL, or \"\" if the URL is not set.",
      "@param {string} mapname - Server's current map's name.",
      "@param {number} maxplayers - Max player count of server.",
      "@param {string} steamid - The local player's @Player:SteamID64.",
      "@param {string} gamemode - Server's current gamemode's folder name.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "GameDetails",
    "typings": [
      "(this: void, servername: string, serverurl: string, mapname: string, maxplayers: number, steamid: string, gamemode: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the @CurTime function-based time in seconds it took to render the last frame.\nThis should be used for frame/tick based timing, such as movement prediction or animations.\nFor real-time-based frame time that isn't affected by host_timescale, use @RealFrameTime function. RealFrameTime is more suited for things like GUIs or HUDs.\n",
      "@name FrameTime",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/FrameTime",
      "@param {void} this - no description",
      "@returns {number} - time (in seconds)"
    ],
    "type": "func",
    "context": "Global",
    "name": "FrameTime",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the number of frames rendered since the game was launched.\n",
      "@name FrameNumber",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/FrameNumber",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "FrameNumber",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nFormats the specified values into the string given. Same as @string.format.\n",
      "@name Format",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Format",
      "@param {void} this - no description",
      "@param {string} format - The string to be formatted.\nFollows this format: http://www.cplusplus.com/reference/cstdio/printf/",
      "@param {any[]} ...formatParameters - Values to be formatted into the string.",
      "@returns {string} - The formatted string"
    ],
    "type": "func",
    "context": "Global",
    "name": "Format",
    "typings": [
      "(this: void, format: string, ...formatParameters: any[]): string"
    ]
  },
  {
    "comments": [
      "\nReturns the current floored dynamic memory usage of Lua in kilobytes.\n",
      "@name gcinfo",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/gcinfo",
      "@param {void} this - no description",
      "@returns {number} - The current floored dynamic memory usage of Lua, in kilobytes."
    ],
    "type": "func",
    "context": "Global",
    "name": "gcinfo",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table with the names of all maps and categories that you have on your client.\n",
      "@name GetMapList",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/GetMapList",
      "@param {void} this - no description",
      "@returns {table} - table of map names and categories"
    ],
    "type": "func",
    "context": "Global",
    "name": "GetMapList",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nReturns the tool-tip text and tool-tip-panel (if any) of the given panel as well as itself\n",
      "@name FindTooltip",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/FindTooltip",
      "@param {void} this - no description",
      "@param {Panel} panel - Panel to find tool-tip of",
      "@returns {string} - tool-tip text",
      "@returns {Panel} - tool-tip panel",
      "@returns {Panel} - panel that the function was called with",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "FindTooltip",
    "typings": [
      "(this: void, panel: Panel): [string, Panel, Panel]"
    ]
  },
  {
    "comments": [
      "\nReturns the meta table for the class with the matching name.\nInternally returns @debug.getregistry()[metaName]\nYou can learn more about meta tables on the [Meta Tables](https://wiki.garrysmod.com/page/Meta%20Tables) page.\nYou can find a list of meta tables that can be retrieved with this function on @TYPE enum. The name in the description is the string to use with this function.\n",
      "@name FindMetaTable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/FindMetaTable",
      "@param {void} this - no description",
      "@param {string} metaName - The object type to retrieve the meta table of.",
      "@returns {table} - The corresponding meta table."
    ],
    "type": "func",
    "context": "Global",
    "name": "FindMetaTable",
    "typings": [
      "(this: void, metaName: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns the normal vector of the current render context as calculated by @GamemodeHooks:CalcView, similar to @EyeAngles function.\n",
      "@name EyeVector",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/EyeVector",
      "@bug #2516 This function is only reliable inside rendering hooks.",
      "@param {void} this - no description",
      "@returns {Vector} - View direction of the currently rendered scene."
    ],
    "type": "func",
    "context": "Global",
    "name": "EyeVector",
    "typings": [
      "(this: void): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the origin of the current render context as calculated by @GamemodeHooks:CalcView.\n",
      "@name EyePos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/EyePos",
      "@bug #2516 This function is only reliable inside rendering hooks.",
      "@param {void} this - no description",
      "@returns {Vector} - Camera position."
    ],
    "type": "func",
    "context": "Global",
    "name": "EyePos",
    "typings": [
      "(this: void): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the angles of the current render context as calculated by @GamemodeHooks:CalcView.\n",
      "@name EyeAngles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/EyeAngles",
      "@bug #2516 This function is only reliable inside rendering hooks.",
      "@param {void} this - no description",
      "@returns {Angle} - The angle of the currently rendered scene."
    ],
    "type": "func",
    "context": "Global",
    "name": "EyeAngles",
    "typings": [
      "(this: void): Angle"
    ]
  },
  {
    "comments": [
      "\nThrows a Lua error but does not break out of the current call stack.\nThis function will not print a stack trace like a normal error would.\nEssentially similar if not equivalent to @Msg function.\n",
      "@name ErrorNoHalt",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ErrorNoHalt",
      "@param {void} this - no description",
      "@param {any[]} ...arguments - Converts all arguments to strings and prints them with no spacing.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "ErrorNoHalt",
    "typings": [
      "(this: void, ...arguments: any[]): void"
    ]
  },
  {
    "comments": [
      "\nThrows a Lua error and breaks out of the current call stack.\n",
      "@name error",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/error",
      "@param {void} this - no description",
      "@param {string} message - The error message to throw.",
      "@param {number} errorLevel - The level to throw the error at.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "error",
    "typings": [
      "(this: void, message: string, errorLevel?: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the entity with the matching @EntityFuncs:EntIndex.\nIndices 1 through @game.MaxPlayers() are always reserved for players.\n",
      "@name Entity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/Entity",
      "@note In examples on this wiki, **Entity( 1 )** is used when a player entity is needed (see [wiki editing guide](https://wiki.garrysmod.com/page/Help:Editing)). In singleplayer and listen servers, **Entity( 1 )** will always be the first player. In dedicated servers, however, **Entity( 1 )** won't always be a valid player.",
      "@param {void} this - no description",
      "@param {number} entityIndex - The entity index.",
      "@returns {Entity} - The entity if it exists, or NULL if it doesn't."
    ],
    "type": "func",
    "context": "Global",
    "name": "Entity",
    "typings": [
      "(this: void, entityIndex: number): Entity"
    ]
  },
  {
    "comments": [
      "\nRemoves the currently active tool tip from the screen.\n",
      "@name EndTooltip",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/EndTooltip",
      "@param {void} this - no description",
      "@param {Panel} panel - This is the panel that has a tool tip.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "EndTooltip",
    "typings": [
      "(this: void, panel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nPlays a sentence from scripts/sentences.txt\n",
      "@name EmitSentence",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/EmitSentence",
      "@param {void} this - no description",
      "@param {string} soundName - The sound to play",
      "@param {Vector} position - The position to play at",
      "@param {number} entity - The entity to emit the sound from. Must be @EntityFuncs:EntIndex",
      "@param {CHAN} channel - The sound channel, see @CHAN enum.",
      "@param {number} volume - The volume of the sound, from 0 to 1",
      "@param {SNDLVL} soundLevel - The sound level of the sound, see @SNDLVL enum",
      "@param {SND} soundFlags - The flags of the sound, see @SND enum",
      "@param {number} pitch - The pitch of the sound, 0-255",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "EmitSentence",
    "typings": [
      "(this: void, soundName: string, position: Vector, entity: number, channel?: CHAN, volume?: number, soundLevel?: SNDLVL, soundFlags?: SND, pitch?: number): void"
    ]
  },
  {
    "comments": [
      "\nEmits the specified sound at the specified position.\n",
      "@name EmitSound",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/EmitSound",
      "@bug  Sounds must be precached serverside manually before they can be played. util.PrecacheSound does not work for this purpose, Entity.EmitSound does the trick",
      "@bug  This does not work with soundscripts. TODO: Is this a bug or intended?",
      "@param {void} this - no description",
      "@param {string} soundName - The sound to play",
      "@param {Vector} position - The position to play at",
      "@param {number} entity - The entity to emit the sound from. Can be an @EntityFuncs:EntIndex or one of the following:\n* 0 - Plays sound on the world (Position set to 0,0,0)\n* -1 - Plays sound on the local player (on server acts as 0)\n* -2 - Plays UI sound (Position set to 0,0,0, no spatial sound,on server acts as 0)",
      "@param {CHAN} channel - The sound channel, see @CHAN enum.",
      "@param {number} volume - The volume of the sound, from 0 to 1",
      "@param {SNDLVL} soundLevel - The sound level of the sound, see @SNDLVL enum",
      "@param {SND} soundFlags - The flags of the sound, see @SND enum",
      "@param {number} pitch - The pitch of the sound, 0-255",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "EmitSound",
    "typings": [
      "(this: void, soundName: string, position: Vector, entity: number, channel?: CHAN, volume?: number, soundLevel?: SNDLVL, soundFlags?: SND, pitch?: number): void"
    ]
  },
  {
    "comments": [
      "\nAn 'if then else'. This is *almost* equivalent to (*condition* and *truevar* or *falsevar*) in Lua. The difference is that if *truevar* evaluates to false, the plain Lua method stated would return *falsevar* regardless of *condition* whilst this function would take *condition* into account.\n",
      "@name Either",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Either",
      "@param {void} this - no description",
      "@param {any} condition - The condition to check if true or false.",
      "@param {any} truevar - If the condition isn't nil/false, returns this value.",
      "@param {any} falsevar - If the condition is nil/false, returns this value.",
      "@returns {any} - The result."
    ],
    "type": "func",
    "context": "Global",
    "name": "Either",
    "typings": [
      "(this: void, condition: any, truevar: any, falsevar: any): any"
    ]
  },
  {
    "comments": [
      "\nReturns a @CEffectData type object to be used with @util.Effect.\n",
      "@name EffectData",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/EffectData",
      "@bug #2771 This does not create a unique object, but instead returns a shared reference. That means you cannot use two or more of these objects at once.",
      "@param {void} this - no description",
      "@returns {CEffectData} - The @CEffectData type object."
    ],
    "type": "func",
    "context": "Global",
    "name": "EffectData",
    "typings": [
      "(this: void): CEffectData"
    ]
  },
  {
    "comments": [
      "\nDrops the specified entity if it is being held by any player with Gravity Gun or +use pickup.\n",
      "@name DropEntityIfHeld",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/DropEntityIfHeld",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to drop.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DropEntityIfHeld",
    "typings": [
      "(this: void, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCreates or replaces a dynamic light with the given id.\n",
      "@name DynamicLight",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DynamicLight",
      "@note Only 32 dlights and 64 elights can be active at once.",
      "@warning It is not safe to hold a reference to this object after creation since its data can be replaced by another dlight at any time.",
      "@bug #3798 The minlight parameter affects the world and entities differently.",
      "@param {void} this - no description",
      "@param {number} index - An unsigned Integer. Usually an [entity index](https://wiki.garrysmod.com/page/Entity/EntIndex) is used here.",
      "@param {boolean} elight - Allocates an elight instead of a dlight. Elights have a higher light limit and do not light the world (making the \"noworld\" parameter have no effect).",
      "@returns {DynamicLight} - A DynamicLight structured table. See @DynamicLight structure"
    ],
    "type": "func",
    "context": "Global",
    "name": "DynamicLight",
    "typings": [
      "(this: void, index: number, elight?: boolean): DynamicLight"
    ]
  },
  {
    "comments": [
      "\nDraws the toy town shader, which blurs the top and bottom of your screen. This can make very large objects look like toys, hence the name.\n",
      "@name DrawToyTown",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DrawToyTown",
      "@param {void} this - no description",
      "@param {number} Passes - An integer determining how many times to draw the effect. A higher number creates more blur.",
      "@param {number} Height - The amount of screen which should be blurred on the top and bottom.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DrawToyTown",
    "typings": [
      "(this: void, Passes: number, Height: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws the texturize shader, which replaces each pixel on your screen with a different part of the texture depending on its brightness. See [g_texturize](https://wiki.garrysmod.com/page/Shaders/g_texturize) for information on making the texture.\n",
      "@name DrawTexturize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DrawTexturize",
      "@param {void} this - no description",
      "@param {number} Scale - Scale of the texture. A smaller number creates a larger texture.",
      "@param {number} BaseTexture - This will be the texture to use in the effect. Make sure you use @Material function to get the texture number",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DrawTexturize",
    "typings": [
      "(this: void, Scale: number, BaseTexture: number): void"
    ]
  },
  {
    "comments": [
      "\nRenders the post-processing effect of beams of light originating from the map's sun. Utilises the \"pp/sunbeams\" material\n",
      "@name DrawSunbeams",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DrawSunbeams",
      "@param {void} this - no description",
      "@param {number} darken - $darken property for sunbeams material",
      "@param {number} multiplier - $multiply property for sunbeams material",
      "@param {number} sunSize - $sunsize property for sunbeams material",
      "@param {number} sunX - $sunx property for sunbeams material",
      "@param {number} sunY - $suny property for sunbeams material",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DrawSunbeams",
    "typings": [
      "(this: void, darken: number, multiplier: number, sunSize: number, sunX: number, sunY: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws the sobel shader, which detects edges and draws a black border.\n",
      "@name DrawSobel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DrawSobel",
      "@param {void} this - no description",
      "@param {number} Threshold - Determines the threshold of edges. A value of 0 will make your screen completely black.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DrawSobel",
    "typings": [
      "(this: void, Threshold: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws the sharpen shader, which creates more contrast.\n",
      "@name DrawSharpen",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DrawSharpen",
      "@param {void} this - no description",
      "@param {number} Contrast - How much contrast to create.",
      "@param {number} Distance - How large the contrast effect will be.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DrawSharpen",
    "typings": [
      "(this: void, Contrast: number, Distance: number): void"
    ]
  },
  {
    "comments": [
      "\nCreates a motion blur effect by drawing your screen multiple times.\n",
      "@name DrawMotionBlur",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DrawMotionBlur",
      "@param {void} this - no description",
      "@param {number} AddAlpha - How much alpha to change per frame.",
      "@param {number} DrawAlpha - How much alpha the frames will have. A value of 0 will not render the motion blur effect.",
      "@param {number} Delay - Determines the amount of time between frames to capture.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DrawMotionBlur",
    "typings": [
      "(this: void, AddAlpha: number, DrawAlpha: number, Delay: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws a material overlay on the screen.\n",
      "@name DrawMaterialOverlay",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DrawMaterialOverlay",
      "@param {void} this - no description",
      "@param {string} Material - This will be the material that is drawn onto the screen.",
      "@param {number} RefractAmount - This will adjust how much the material will refract your screen.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DrawMaterialOverlay",
    "typings": [
      "(this: void, Material: string, RefractAmount: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws the Color Modify shader, which can be used to adjust colors on screen.\n[Category:Post_Processing](https://wiki.garrysmod.com/page/Category:Post_Processing)\n",
      "@name DrawColorModify",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DrawColorModify",
      "@param {void} this - no description",
      "@param {table} modifyParameters - Color modification parameters. See @g_colourmodify shader and the example below. Note that if you leave out a field, it will retain its last value which may have changed if another caller uses this function.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DrawColorModify",
    "typings": [
      "(this: void, modifyParameters: table): void"
    ]
  },
  {
    "comments": [
      "\nDraws the bloom shader, which creates a glowing effect from bright objects.\n",
      "@name DrawBloom",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DrawBloom",
      "@param {void} this - no description",
      "@param {number} Darken - Determines how much to darken the effect. A lower number will make the glow come from lower light levels. A value of 1 will make the bloom effect unnoticeable. Negative values will make even pitch black areas glow.",
      "@param {number} Multiply - Will affect how bright the glowing spots are. A value of 0 will make the bloom effect unnoticeable.",
      "@param {number} SizeX - The size of the bloom effect along the horizontal axis.",
      "@param {number} SizeY - The size of the bloom effect along the vertical axis.",
      "@param {number} Passes - Determines how much to exaggerate the effect.",
      "@param {number} ColorMultiply - Will multiply the colors of the glowing spots, making them more vivid.",
      "@param {number} Red - How much red to multiply with the glowing color. Should be between 0 and 1",
      "@param {number} Green - How much green to multiply with the glowing color. Should be between 0 and 1",
      "@param {number} Blue - How much blue to multiply with the glowing color. Should be between 0 and 1",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DrawBloom",
    "typings": [
      "(this: void, Darken: number, Multiply: number, SizeX: number, SizeY: number, Passes: number, ColorMultiply: number, Red: number, Green: number, Blue: number): void"
    ]
  },
  {
    "comments": [
      "\nDraws the currently active main menu background image and handles transitioning between background images.\nThis is called by default in the menu panel's Paint hook.\n",
      "@name DrawBackground",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/DrawBackground",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DrawBackground",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nCancels any existing DOF post-process effects.\nBegins the DOF post-process effect.\n",
      "@name DOF_Start",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DOF Start",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DOF_Start",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nCancels current DOF post-process effect started with @DOF_Start function\n",
      "@name DOF_Kill",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DOF Kill",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DOF_Kill",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nA hacky method used to fix some bugs regarding DoF.\n",
      "@name DOFModeHack",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/DOFModeHack",
      "@internal",
      "@param {void} this - no description",
      "@param {boolean} enable - Enables or disables depth-of-field mode",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DOFModeHack",
    "typings": [
      "(this: void, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether rendering should be limited to being inside a panel or not.\nSee also @surface.DisableClipping and @Panel:NoClipping.\n",
      "@name DisableClipping",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/DisableClipping",
      "@param {void} this - no description",
      "@param {boolean} disable - Whether or not clipping should be disabled",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DisableClipping",
    "typings": [
      "(this: void, disable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nShows a message box in the middle of the screen, with up to 4 buttons they can press.\n",
      "@name Derma_Query",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Derma Query",
      "@param {void} this - no description",
      "@param {string} text - The message to display.",
      "@param {string} title - The title to give the message box.",
      "@param {string} btn1text - The text to display on the first button.",
      "@param {function} btn1func - The function to run if the user clicks the first button.",
      "@param {string} btn2text - The text to display on the second button.",
      "@param {function} btn2func - The function to run if the user clicks the second button.",
      "@param {string} btn3text - The text to display on the third button",
      "@param {function} btn3func - The function to run if the user clicks the third button.",
      "@param {string} btn4text - The text to display on the third button",
      "@param {function} btn4func - The function to run if the user clicks the fourth button.",
      "@returns {Panel} - The Panel object of the created window."
    ],
    "type": "func",
    "context": "Global",
    "name": "Derma_Query",
    "typings": [
      "(this: void, text?: string, title?: string, btn1text: string, btn1func?: UnknownFunc, btn2text?: string, btn2func?: UnknownFunc, btn3text?: string, btn3func?: UnknownFunc, btn4text?: string, btn4func?: UnknownFunc): Panel"
    ]
  },
  {
    "comments": [
      "\nCreates a derma window asking players to input a string.\n",
      "@name Derma_StringRequest",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Derma StringRequest",
      "@param {void} this - no description",
      "@param {string} title - The title of the created panel.",
      "@param {string} subtitle - The text above the input box",
      "@param {string} def - The default text for the input box.",
      "@param {function} confirm - The function to be called once the user has confirmed their input.",
      "@param {function} cancel - The function to be called once the user has cancelled their input",
      "@param {string} confirmText - Allows you to override text of the \"OK\" button",
      "@param {string} cancelText - Allows you to override text of the \"Cancel\" button",
      "@returns {DFrame} - The created @DFrame type"
    ],
    "type": "func",
    "context": "Global",
    "name": "Derma_StringRequest",
    "typings": [
      "(this: void, title: string, subtitle: string, def: string, confirm: UnknownFunc, cancel?: UnknownFunc, confirmText?: string, cancelText?: string): DFrame"
    ]
  },
  {
    "comments": [
      "\nCreates a derma window to display information\n",
      "@name Derma_Message",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Derma Message",
      "@param {void} this - no description",
      "@param {string} Text - The text within the created panel.",
      "@param {string} Title - The title of the created panel.",
      "@param {string} Button - The text of the button to close the panel.",
      "@returns {DFrame} - The created @DFrame type"
    ],
    "type": "func",
    "context": "Global",
    "name": "Derma_Message",
    "typings": [
      "(this: void, Text: string, Title: string, Button: string): DFrame"
    ]
  },
  {
    "comments": [
      "\nMakes the panel (usually an input of sorts) respond to changes in console variables by adding next functions to the panel:\n* @Panel:SetConVar\n* @Panel:ConVarChanged\n* @Panel:ConVarStringThink\n* @Panel:ConVarNumberThink\nThe console variable value is saved in the *m_strConVar* property of the panel.\nThe panel should call\n@Panel:ConVarStringThink or\n@Panel:ConVarNumberThink\nin its @PanelHooks:Think hook and should call @Panel:ConVarChanged when the panel's value has changed.\n",
      "@name Derma_Install_Convar_Functions",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Derma Install Convar Functions",
      "@param {void} this - no description",
      "@param {Panel} target - The panel the functions should be added to.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "Derma_Install_Convar_Functions",
    "typings": [
      "(this: void, target: Panel): void"
    ]
  },
  {
    "comments": [
      "\nDraws background blur around the given panel.\n",
      "@name Derma_DrawBackgroundBlur",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Derma DrawBackgroundBlur",
      "@param {void} this - no description",
      "@param {Panel} panel - Panel to draw the background blur around",
      "@param {number} startTime - Time that the blur began being painted",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "Derma_DrawBackgroundBlur",
    "typings": [
      "(this: void, panel: Panel, startTime: number): void"
    ]
  },
  {
    "comments": [
      "\nCreates panel method that calls the supplied Derma skin hook via @derma.SkinHook\n",
      "@name Derma_Hook",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Derma Hook",
      "@param {void} this - no description",
      "@param {Panel} panel - Panel to add the hook to",
      "@param {string} functionName - Name of panel function to create",
      "@param {string} hookName - Name of Derma skin hook to call within the function",
      "@param {string} typeName - Type of element to call Derma skin hook for",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "Derma_Hook",
    "typings": [
      "(this: void, panel: Panel, functionName: string, hookName: string, typeName: string): void"
    ]
  },
  {
    "comments": [
      "\nCreates a new derma animation.\n",
      "@name Derma_Anim",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Derma Anim",
      "@param {void} this - no description",
      "@param {string} name - Name of the animation to create",
      "@param {Panel} panel - Panel to run the animation on",
      "@param {function} func - Function to call to process the animation\nArguments:",
      "@returns {table} - A lua metatable containing four methods:\n* Run() - Should be called each frame you want the animation to be ran.\n* Active() - Returns if the animation is currently active (has not finished and stop has not been called)\n* Stop() - Halts the animation at its current progress.\n* Start( Length, Data ) - Prepares the animation to be ran for Length seconds. Must be called once before calling Run(). The data parameter will be passed to the func function."
    ],
    "type": "func",
    "context": "Global",
    "name": "Derma_Anim",
    "typings": [
      "(this: void, name: string, panel: Panel, func: GlobalDerma_AnimFunc): table"
    ],
    "types": [
      {
        "comments": [
          "@type GlobalDerma_AnimFunc",
          "@param {void} this - no description",
          "@param {Panel} pnl - the panel passed to Derma_Anim",
          "@param {table} anim - the anim table",
          "@param {number} delta - the fraction of the progress through the animation",
          "@param {any} data - optional data passed to the run metatable method"
        ],
        "type": "type",
        "name": "GlobalDerma_AnimFunc",
        "typing": "(this: void, pnl: Panel, anim: table, delta: number, data?: any) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nCreates a @DMenu type and closes any current menus.\n",
      "@name DermaMenu",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/DermaMenu",
      "@param {void} this - no description",
      "@param {Panel} parent - The panel to parent the created menu to.",
      "@returns {DMenu} - The created @DMenu type"
    ],
    "type": "func",
    "context": "Global",
    "name": "DermaMenu",
    "typings": [
      "(this: void, parent: Panel): DMenu"
    ]
  },
  {
    "comments": [
      "\nLoads and registers the specified gamemode, setting the GM table's DerivedFrom field to the value provided, if the table exists. The DerivedFrom field is used post-gamemode-load as the \"derived\" parameter for @gamemode.Register.\n",
      "@name DeriveGamemode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/DeriveGamemode",
      "@param {void} this - no description",
      "@param {string} base - Gamemode name to derive from.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DeriveGamemode",
    "typings": [
      "(this: void, base: string): void"
    ]
  },
  {
    "comments": [
      "\nWrites text to the right hand side of the screen, like the old error system. Messages disappear after a couple of seconds.\n",
      "@name DebugInfo",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/DebugInfo",
      "@param {void} this - no description",
      "@param {number} slot - The location on the right hand screen to write the debug info to. Starts at 0, no upper limit",
      "@param {string} info - The debugging information to be written to the screen",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "DebugInfo",
    "typings": [
      "(this: void, slot: number, info: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns an @CTakeDamageInfo type object.\n",
      "@name DamageInfo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/DamageInfo",
      "@bug #2771 This does not create a unique object, but instead returns a shared reference. That means you cannot use two or more of these objects at once.",
      "@param {void} this - no description",
      "@returns {CTakeDamageInfo} - The @CTakeDamageInfo type object."
    ],
    "type": "func",
    "context": "Global",
    "name": "DamageInfo",
    "typings": [
      "(this: void): CTakeDamageInfo"
    ]
  },
  {
    "comments": [
      "\nReturns the uptime of the server in seconds (to at least 4 decimal places)\nThis is a synchronised value and affected by various factors such as host_timescale (or @game.GetTimeScale) and the server being paused - either by sv_pausable or all players disconnecting.\nYou should use this function for timing in-game events but not for real-world events.\nSee also: @RealTime function, @SysTime function\n",
      "@name CurTime",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/CurTime",
      "@note This is internally defined as a float, and as such it will be affected by precision loss if your server uptime is more than 6 hours, which will cause jittery movement of players and props and inaccuracy of timers, it is highly encouraged to refresh or change the map when that happens (a server restart is not necessary).This is **NOT** easy as it sounds to fix in the engine, so please refrain from posting issues about this",
      "@bug #3026 This returns 0 in @GamemodeHooks:PlayerAuthed.",
      "@param {void} this - no description",
      "@returns {number} - Time synced with the game server."
    ],
    "type": "func",
    "context": "Global",
    "name": "CurTime",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nCreates and returns a new @DSprite type element with the supplied material.\n",
      "@name CreateSprite",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/CreateSprite",
      "@param {void} this - no description",
      "@param {IMaterial} material - Material the sprite should draw.",
      "@returns {DSprite} - The new @DSprite type element."
    ],
    "type": "func",
    "context": "Global",
    "name": "CreateSprite",
    "typings": [
      "(this: void, material: IMaterial): DSprite"
    ]
  },
  {
    "comments": [
      "\nReturns a sound parented to the specified entity.\n",
      "@name CreateSound",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/CreateSound",
      "@note You can only create one CSoundPatch per audio file, per entity at the same time.",
      "@note This argument only works serverside.",
      "@param {void} this - no description",
      "@param {Entity} targetEnt - The target entity.",
      "@param {string} soundName - The sound to play.",
      "@param {CRecipientFilter} filter - A @CRecipientFilter type of the players that will have this sound networked to them.",
      "@returns {CSoundPatch} - The sound object"
    ],
    "type": "func",
    "context": "Global",
    "name": "CreateSound",
    "typings": [
      "(this: void, targetEnt: Entity, soundName: string, filter?: CRecipientFilter): CSoundPatch"
    ]
  },
  {
    "comments": [
      "\nCreates @PhysCollide type objects for every physics object the model has. The model must be precached with @util.PrecacheModel before being used with this function.\n",
      "@name CreatePhysCollidesFromModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/CreatePhysCollidesFromModel",
      "@param {void} this - no description",
      "@param {string} modelName - Model path to get the collision objects of.",
      "@returns {PhysCollide[]} - Table of @PhysCollide type objects. The number of entries will match the model's physics object count. See also @EntityFuncs:GetPhysicsObjectCount. Returns no value if the model doesn't exist, or has not been precached."
    ],
    "type": "func",
    "context": "Global",
    "name": "CreatePhysCollidesFromModel",
    "typings": [
      "(this: void, modelName: string): PhysCollide[]"
    ]
  },
  {
    "comments": [
      "\nCreates a new @PhysCollide type from the given bounds.\n",
      "@name CreatePhysCollideBox",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/CreatePhysCollideBox",
      "@bug #3568 This fails to create planes or points - no components of the mins or maxs can be the same.",
      "@param {void} this - no description",
      "@param {Vector} mins - Min corner of the box. This is not automatically ordered with the maxs and must contain the smallest vector components. See @OrderVectors function.",
      "@param {Vector} maxs - Max corner of the box. This is not automatically ordered with the mins and must contain the largest vector components.",
      "@returns {PhysCollide} - The new PhysCollide. This will be a NULL PhysCollide (@PhysCollide:IsValid returns false) if given bad vectors or no more PhysCollides can be created in the physics engine."
    ],
    "type": "func",
    "context": "Global",
    "name": "CreatePhysCollideBox",
    "typings": [
      "(this: void, mins: Vector, maxs: Vector): PhysCollide"
    ]
  },
  {
    "comments": [
      "\nCreates a new particle system.\n",
      "@name CreateParticleSystem",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/CreateParticleSystem",
      "@note The particle effect must be precached with @PrecacheParticleSystem function and the file its from must be added via @game.AddParticles before it can be used!",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to attach the control point to.",
      "@param {string} effect - The name of the effect to create. It must be precached.",
      "@param {PATTACH} partAttachment - See @PATTACH enum.",
      "@param {number} entAttachment - The attachment ID on the entity to attach the particle system to",
      "@param {Vector} offset - The offset from the @EntityFuncs:GetPos of the entity we are attaching this CP to.",
      "@returns {CNewParticleEffect} - The created particle system."
    ],
    "type": "func",
    "context": "Global",
    "name": "CreateParticleSystem",
    "typings": [
      "(this: void, ent: Entity, effect: string, partAttachment: PATTACH, entAttachment?: number, offset?: Vector): CNewParticleEffect"
    ]
  },
  {
    "comments": [
      "\nCreates a new material with the specified name and shader.\n",
      "@name CreateMaterial",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/CreateMaterial",
      "@note Materials created with this function can be used in @EntityFuncs:SetMaterial and @EntityFuncs:SetSubMaterial by prepending a \"!\" to their material name argument.",
      "@note Unlike @IMaterial:SetTexture, this table will not accept @ITexture type values. Instead, use the texture's name (see @ITexture:GetName).",
      "@bug #1531 .pngs must be loaded with @Material function before being used with this function.",
      "@bug #2511 This does not work with [patch materials](https://developer.valvesoftware.com/wiki/Patch).",
      "@bug #3103 This will not create a new material if another material object with the same name already exists.",
      "@param {void} this - no description",
      "@param {string} name - The material name. Must be unique.",
      "@param {string} shaderName - The shader name. See [Category: Shaders](https://wiki.garrysmod.com/page/Category:%20Shaders).",
      "@param {table} materialData - Key-value table that contains shader parameters and proxies.\n*See: [List of Shader Parameters on Valve Developers Wiki](https://developer.valvesoftware.com/wiki/Category:List_of_Shader_Parameters) and each shader's page from [Category: Shaders](https://wiki.garrysmod.com/page/Category:%20Shaders).",
      "@returns {IMaterial} - Created material"
    ],
    "type": "func",
    "context": "Global",
    "name": "CreateMaterial",
    "typings": [
      "(this: void, name: string, shaderName: string, materialData: table): IMaterial"
    ]
  },
  {
    "comments": [
      "\nCreates a console variable (@ConVar type), in general these are for things like gamemode/server settings.\n",
      "@name CreateConVar",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/CreateConVar",
      "@param {void} this - no description",
      "@param {string} name - Name of the convar.\nThis cannot be a name of an engine console command or console variable. It will silently fail if it is. If it is the same name as another lua ConVar, it will return that ConVar object.",
      "@param {string} value - Default value of the convar. Can also be a number.",
      "@param {FCVAR} flags - Flags of the convar, see @FCVAR enum, either as bitflag or as table.",
      "@param {string} helptext - The help text to show in the console.",
      "@param {number} min - If set, the ConVar cannot be changed to a number lower than this value.",
      "@param {number} max - If set, the ConVar cannot be changed to a number higher than this value.",
      "@returns {ConVar} - The convar created."
    ],
    "type": "func",
    "context": "Global",
    "name": "CreateConVar",
    "typings": [
      "(this: void, name: string, value: string, flags?: FCVAR, helptext?: string, min?: number, max?: number): ConVar"
    ]
  },
  {
    "comments": [
      "\nMakes a clientside-only console variable\nAlthough this function is shared, it should only be used clientside.\n",
      "@name CreateClientConVar",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/CreateClientConVar",
      "@note This function is a wrapper of @CreateConVar function, with the difference being that FCVAR_ARCHIVE and FCVAR_USERINFO are added automatically when **shouldsave** and **userinfo** are true, respectively.",
      "@param {void} this - no description",
      "@param {string} name - Name of the ConVar to be created and able to be accessed.\nThis cannot be a name of existing console command or console variable. It will silently fail if it is.",
      "@param {string} def - Default value of the ConVar.",
      "@param {boolean} shouldsave - Should the ConVar be saved across sessions",
      "@param {boolean} userinfo - Should the ConVar and its containing data be sent to the server when it has changed. This make the convar accessible from server using @Player:GetInfoNum and similar functions.",
      "@param {string} helptext - Help text to display in the console.",
      "@param {number} min - If set, the convar cannot be changed to a number lower than this value.",
      "@param {number} max - If set, the convar cannot be changed to a number higher than this value.",
      "@returns {ConVar} - Created convar."
    ],
    "type": "func",
    "context": "Global",
    "name": "CreateClientConVar",
    "typings": [
      "(this: void, name: string, def: string, shouldsave?: boolean, userinfo?: boolean, helptext?: string, min?: number, max?: number): ConVar"
    ]
  },
  {
    "comments": [
      "\nReturns whether a @ConVar type with the given name exists or not\n",
      "@name ConVarExists",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ConVarExists",
      "@param {void} this - no description",
      "@param {string} name - Name of the @ConVar type.",
      "@returns {boolean} - True if the @ConVar type exists, false otherwise."
    ],
    "type": "func",
    "context": "Global",
    "name": "ConVarExists",
    "typings": [
      "(this: void, name: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns a table of console command names beginning with the given text.\n",
      "@name ConsoleAutoComplete",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ConsoleAutoComplete",
      "@param {void} this - no description",
      "@param {string} text - Text that the console commands must begin with.",
      "@returns {table} - Table of console command names."
    ],
    "type": "func",
    "context": "Global",
    "name": "ConsoleAutoComplete",
    "typings": [
      "(this: void, text: string): table"
    ]
  },
  {
    "comments": [
      "\nThis function will compile the code argument as lua code and return a function that will execute that code.\nPlease note that this function will not automatically execute the given code after compiling it.\n",
      "@name CompileString",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/CompileString",
      "@param {void} this - no description",
      "@param {string} code - The code to compile.",
      "@param {string} identifier - An identifier in case an error is thrown. (The same identifier can be used multiple times)",
      "@param {boolean} HandleError - If false this function will return an error string instead of throwing an error.",
      "@returns {function} - A function that, when called, will execute the given code. Returns nil if there was an error.",
      "@returns {string} - The error string. Will be nil if there were no errors or the function handles errors (third argument is true).",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "CompileString",
    "typings": [
      "(this: void, code: string, identifier: string, HandleError?: boolean): [UnknownFunc, string]"
    ]
  },
  {
    "comments": [
      "\nAttempts to compile the given file. If successful, returns a function that can be called to perform the actual execution of the script.\n",
      "@name CompileFile",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/CompileFile",
      "@param {void} this - no description",
      "@param {string} path - Path to the file, relative to the garrysmod/lua/ directory.",
      "@returns {function} - The function which executes the script."
    ],
    "type": "func",
    "context": "Global",
    "name": "CompileFile",
    "typings": [
      "(this: void, path: string): UnknownFunc"
    ]
  },
  {
    "comments": [
      "\nConverts a @IColor structure into HSV color space.\n",
      "@name ColorToHSV",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ColorToHSV",
      "@param {void} this - no description",
      "@param {Color} color - The @IColor structure.",
      "@returns {number} - The hue in degrees [0, 360).",
      "@returns {number} - The saturation in the range [0, 1].",
      "@returns {number} - The value in the range [0, 1].",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "ColorToHSV",
    "typings": [
      "(this: void, color: Color): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nConverts a @IColor structure into HSL color space.\n",
      "@name ColorToHSL",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ColorToHSL",
      "@param {void} this - no description",
      "@param {Color} color - The @IColor structure.",
      "@returns {number} - The hue in degrees [0, 360).",
      "@returns {number} - The saturation in the range [0, 1].",
      "@returns {number} - The lightness in the range [0, 1].",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "ColorToHSL",
    "typings": [
      "(this: void, color: Color): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nCreates a @IColor structure with randomized red, green, and blue components. If the alpha argument is true, alpha will also be randomized.\n",
      "@name ColorRand",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ColorRand",
      "@param {void} this - no description",
      "@param {boolean} a - Should alpha be randomized.",
      "@returns {IColor} - The created @IColor structure."
    ],
    "type": "func",
    "context": "Global",
    "name": "ColorRand",
    "typings": [
      "(this: void, a?: boolean): IColor"
    ]
  },
  {
    "comments": [
      "\nCreates a @IColor structure.\n",
      "@name Color",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Color",
      "@note This function creates a new table for the color. It's a good practice to localize your colors.",
      "@param {void} this - no description",
      "@param {number} r - An integer from 0-255 describing the red value of the color.",
      "@param {number} g - An integer from 0-255 describing the green value of the color.",
      "@param {number} b - An integer from 0-255 describing the blue value of the color.",
      "@param {number} a - An integer from 0-255 describing the alpha (transparency) of the color.",
      "@returns {IColor} - The created @IColor structure."
    ],
    "type": "func",
    "context": "Global",
    "name": "Color",
    "typings": [
      "(this: void, r: number, g: number, b: number, a?: number): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns a new @IColor structure with the RGB components of the given @IColor structure and the alpha value specified.\n",
      "@name ColorAlpha",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ColorAlpha",
      "@param {void} this - no description",
      "@param {Color} color - The @IColor structure from which to take RGB values. This color will not be modified.",
      "@param {number} alpha - The new alpha value, a number between 0 and 255. Values above 255 will be clamped.",
      "@returns {IColor} - The new @IColor structure with the modified alpha value"
    ],
    "type": "func",
    "context": "Global",
    "name": "ColorAlpha",
    "typings": [
      "(this: void, color: Color, alpha: number): IColor"
    ]
  },
  {
    "comments": [
      "\nExecutes the specified action on the garbage collector.\n",
      "@name collectgarbage",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/collectgarbage",
      "@param {void} this - no description",
      "@param {string} action - The action to run.\nValid actions are \"collect\", \"stop\", \"restart\", \"count\", \"step\", \"setpause\" and \"setstepmul\".",
      "@param {number} arg - The argument of the specified action, only applicable for \"step\", \"setpause\" and \"setstepmul\".",
      "@returns {any} - If the action is count this is the number of kilobytes of memory used by Lua.\nIf the action is step this is true if a garbage collection cycle was finished.\nIf the action is setpause this is the previous value for the GC's pause.\nIf the action is setstepmul this is the previous value for the GC's step."
    ],
    "type": "func",
    "context": "Global",
    "name": "collectgarbage",
    "typings": [
      "(this: void, action?: string, arg: number): any"
    ]
  },
  {
    "comments": [
      "\nCloses all Derma menus that have been passed to @RegisterDermaMenuForClose function and calls @GamemodeHooks:CloseDermaMenus\n",
      "@name CloseDermaMenus",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/CloseDermaMenus",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "CloseDermaMenus",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nCreates a scene entity based on the scene name and the entity.\n",
      "@name ClientsideScene",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/ClientsideScene",
      "@param {void} this - no description",
      "@param {string} name - The name of the scene.",
      "@param {Entity} targetEnt - The entity to play the scene on.",
      "@returns {CSEnt} - C_SceneEntity"
    ],
    "type": "func",
    "context": "Global",
    "name": "ClientsideScene",
    "typings": [
      "(this: void, name: string, targetEnt: Entity): CSEnt"
    ]
  },
  {
    "comments": [
      "\nCreates a fully clientside ragdoll.\n",
      "@name ClientsideRagdoll",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/ClientsideRagdoll",
      "@note The ragdoll initially starts as hidden and with shadows disabled, see the example for how to enable it.There's no need to call @EntityFuncs:Spawn on this entity.The physics won't initialize at all if the model hasn't been precached serverside first.",
      "@warning Model must be precached with @util.PrecacheModel on the server before usage.",
      "@bug #1387 Clientside entities are not garbage-collected, thus you must store a reference to the object and call @CSEnt:Remove manually.",
      "@param {void} this - no description",
      "@param {string} model - The file path to the model.",
      "@param {RENDERGROUP} renderGroup - The @RENDERGROUP enum to assign.",
      "@returns {CSEnt} - The newly created client-side ragdoll. ( C_ClientRagdoll )"
    ],
    "type": "func",
    "context": "Global",
    "name": "ClientsideRagdoll",
    "typings": [
      "(this: void, model: string, renderGroup?: RENDERGROUP): CSEnt"
    ]
  },
  {
    "comments": [
      "\nCreates a non physical entity that only exists on the client. See also @ents.CreateClientProp.\n",
      "@name ClientsideModel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/ClientsideModel",
      "@warning Model must be precached with @util.PrecacheModel on the server before usage.",
      "@bug #861 Parented clientside models will become detached if the parent entity leaves the PVS.",
      "@bug #1387 Clientside entities are not garbage-collected, thus you must store a reference to the object and call @CSEnt:Remove manually.",
      "@bug #3184 Clientside models will occasionally delete themselves during high server lag.",
      "@param {void} this - no description",
      "@param {string} model - The file path to the model.",
      "@param {RENDERGROUP} renderGroup - The rendergroup of the entity, see @RENDERGROUP enum.",
      "@returns {CSEnt} - Created client-side model. ( C_BaseFlex )"
    ],
    "type": "func",
    "context": "Global",
    "name": "ClientsideModel",
    "typings": [
      "(this: void, model: string, renderGroup?: RENDERGROUP): CSEnt"
    ]
  },
  {
    "comments": [
      "\nEmpties the pool of main menu background images.\n",
      "@name ClearBackgroundImages",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ClearBackgroundImages",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "ClearBackgroundImages",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAutomatically called by the engine when a panel is hovered over with the mouse\n",
      "@name ChangeTooltip",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ChangeTooltip",
      "@param {void} this - no description",
      "@param {Panel} panel - Panel that has been hovered over",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "ChangeTooltip",
    "typings": [
      "(this: void, panel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the active main menu background image to a random entry from the background images pool. Images are added with @AddBackgroundImage function.\n",
      "@name ChangeBackground",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/ChangeBackground",
      "@param {void} this - no description",
      "@param {string} currentgm - Apparently does nothing.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "ChangeBackground",
    "typings": [
      "(this: void, currentgm: string): void"
    ]
  },
  {
    "comments": [
      "\nAborts joining of the server you are currently joining.\n",
      "@name CancelLoading",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/CancelLoading",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "CancelLoading",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally to check if the current server the player is on can be added to favorites or not. Does not check if the server is ALREADY in the favorites.\n",
      "@name CanAddServerToFavorites",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/CanAddServerToFavorites",
      "@internal",
      "@param {void} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "func",
    "context": "Global",
    "name": "CanAddServerToFavorites",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nIf the result of the first argument is false or nil, an error is thrown with the second argument as the message.\n",
      "@name assert",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/assert",
      "@param {void} this - no description",
      "@param {any} expression - The expression to assert.",
      "@param {string} errorMessage - The error message to throw when assertion fails. This is only type-checked if the assertion fails.",
      "@param {any[]} ...returns - Any arguments past the error message will be returned by a successful assert.",
      "@returns {any} - If successful, returns the first argument.",
      "@returns {any} - If successful, returns the error message. This will be nil if the second argument wasn't specified.\nSince the second argument is only type-checked if the assertion fails, this doesn't have to be a string.",
      "@returns {any[]} - Returns any arguments past the error message.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "Global",
    "name": "assert",
    "typings": [
      "(this: void, expression: any, errorMessage?: string, ...returns?: any[]): [any, any, any[]]"
    ]
  },
  {
    "comments": [
      "\nSends the specified Lua code to all connected clients and executes it.\n",
      "@name BroadcastLua",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Global/BroadcastLua",
      "@param {void} this - no description",
      "@param {string} code - The code to be executed. Capped at length of 254 characters.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "BroadcastLua",
    "typings": [
      "(this: void, code: string): void"
    ]
  },
  {
    "comments": [
      "\nDumps the networked variables of all entities into one table and returns it.\n",
      "@name BuildNetworkedVarsTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/BuildNetworkedVarsTable",
      "@param {void} this - no description",
      "@returns {table} - Format:\n* key = @Entity type for NWVars or @number type (always 0) for global vars\n* value = @table type formatted as:\n** key = @string type var name\n** value = any type var value"
    ],
    "type": "func",
    "context": "Global",
    "name": "BuildNetworkedVarsTable",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nReturns an angle with a randomized pitch, yaw, and roll between min(inclusive), max(exclusive).\n",
      "@name AngleRand",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/AngleRand",
      "@param {void} this - no description",
      "@param {number} min - Min bound inclusive.",
      "@param {number} max - Max bound exclusive.",
      "@returns {Angle} - The randomly generated angle."
    ],
    "type": "func",
    "context": "Global",
    "name": "AngleRand",
    "typings": [
      "(this: void, min?: number, max?: number): Angle"
    ]
  },
  {
    "comments": [
      "\nDefines a global entity class variable with an automatic value in order to prevent collisions with other @CLASS enum. You should prefix your variable with CLASS_ for consistency.\n",
      "@name Add_NPC_Class",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Add NPC Class",
      "@param {void} this - no description",
      "@param {string} name - The name of the new enum/global variable.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "Add_NPC_Class",
    "typings": [
      "(this: void, name: string): void"
    ]
  },
  {
    "comments": [
      "\nCreates an @Angle type object.\n",
      "@name Angle",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/Angle",
      "@note This function creates a new unique object. It's a good practice to localize your angles.",
      "@param {void} this - no description",
      "@param {number} pitch - The pitch value of the angle.\nIf this is an @Angle type, this function will return a copy of the given angle.\nIf this is a @string type, this function will try to parse the string as a angle. If it fails, it returns a 0 angle.\n(See examples)",
      "@param {number} yaw - The yaw value of the angle.",
      "@param {number} roll - The roll value of the angle.",
      "@returns {Angle} - Created angle"
    ],
    "type": "func",
    "context": "Global",
    "name": "Angle",
    "typings": [
      "(this: void, pitch?: number, yaw?: number, roll?: number): Angle"
    ]
  },
  {
    "comments": [
      "\nThis function creates a World Tip, similar to the one shown when aiming at a Thruster where it shows you its force.\nThis function will make a World Tip that will only last 50 milliseconds (1/20th of a second), so you must call it continuously as long as you want the World Tip to be shown. It is common to call it inside a Think hook.\nContrary to what the function's name implies, it is impossible to create more than one World Tip at the same time. A new World Tip will overwrite the old one, so only use this function when you know nothing else will also be using it.\nSee @SandboxHooks:PaintWorldTips for more information.\n",
      "@name AddWorldTip",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Global/AddWorldTip",
      "@note This function is only available in Sandbox and its derivatives",
      "@param {void} this - no description",
      "@param {number} entindex - **This argument is no longer used**; it has no effect on anything. You can use nil in this argument.",
      "@param {string} text - The text for the world tip to display.",
      "@param {number} dieTime - **This argument is no longer used**; when you add a World Tip it will always last only 0.05 seconds. You can use nil in this argument.",
      "@param {Vector} pos - Where in the world you want the World Tip to be drawn. If you add a valid Entity in the next argument, this argument will have no effect on the actual World Tip.",
      "@param {Entity} ent - Which entity you want to associate with the World Tip. This argument is optional. If set to a valid entity, this will override the position set in *pos* with the Entity's position.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "AddWorldTip",
    "typings": [
      "(this: void, entindex?: number, text: string, dieTime?: number, pos?: Vector, ent?: Entity): void"
    ]
  },
  {
    "comments": [
      "\nAdds the specified vector to the PVS which is currently building. This allows all objects in visleafs visible from that vector to be drawn.\n",
      "@name AddOriginToPVS",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Global/AddOriginToPVS",
      "@param {void} this - no description",
      "@param {Vector} position - The origin to add.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "AddOriginToPVS",
    "typings": [
      "(this: void, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nMarks a Lua file to be sent to clients when they join the server. Doesn't do anything on the client - this means you can use it in a shared file without problems.\n",
      "@name AddCSLuaFile",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Global/AddCSLuaFile",
      "@note This function is not needed for scripts located in **lua/autorun/ ** and **lua/autorun/client/ **: they are automatically sent to clients.",
      "@note You can add up to 8192 files.",
      "@warning If the file trying to be added is empty, an error will occur, and the file will not be sent to the client.",
      "@param {void} this - no description",
      "@param {string} file - The name/path to the Lua file that should be sent, relative to the garrysmod/lua folder. If no parameter is specified, it sends the current file.\nThe file path can be relative to the script it is ran from. For example, if your script is in lua/myfolder/stuff.lua, calling @AddCSLuaFile function(\"otherstuff.lua\") and @AddCSLuaFile function(\"myfolder/otherstuff.lua\") is the same thing.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "AddCSLuaFile",
    "typings": [
      "(this: void, file?: string): void"
    ]
  },
  {
    "comments": [
      "\nLoads the specified image from the /cache folder, used in combination @steamworks.Download.\nMost addons will provide a 512x512 png image.\n",
      "@name AddonMaterial",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/AddonMaterial",
      "@param {void} this - no description",
      "@param {string} name - The name of the file.",
      "@returns {IMaterial} - The material, returns nil if the cached file is not an image."
    ],
    "type": "func",
    "context": "Global",
    "name": "AddonMaterial",
    "typings": [
      "(this: void, name: string): IMaterial"
    ]
  },
  {
    "comments": [
      "\nTells the engine to register a console command. If the command was ran, the engine calls @concommand.Run.\n",
      "@name AddConsoleCommand",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/AddConsoleCommand",
      "@internal Use @concommand.Add instead.",
      "@param {void} this - no description",
      "@param {string} name - The name of the console command to add.",
      "@param {string} helpText - The help text.",
      "@param {FCVAR} flags - Concommand flags using @FCVAR enum",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "AddConsoleCommand",
    "typings": [
      "(this: void, name: string, helpText: string, flags: FCVAR): void"
    ]
  },
  {
    "comments": [
      "\nAdds the specified image path to the main menu background pool. Image can be png or jpeg.\n",
      "@name AddBackgroundImage",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/Global/AddBackgroundImage",
      "@param {void} this - no description",
      "@param {string} path - Path to the image.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "AddBackgroundImage",
    "typings": [
      "(this: void, path: string): void"
    ]
  },
  {
    "comments": [
      "\nAdds simple Get/Set accessor functions on the specified table.\nCan also force the value to be set to a number, bool or string.\n",
      "@name AccessorFunc",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Global/AccessorFunc",
      "@param {void} this - no description",
      "@param {table} tab - The table to add the accessor functions too.",
      "@param {any} key - The key of the table to be get/set.",
      "@param {string} name - The name of the functions (will be prefixed with Get and Set).",
      "@param {FORCE} force - The type the setter should force to (uses @FORCE enum).",
      "@returns {void}"
    ],
    "type": "func",
    "context": "Global",
    "name": "AccessorFunc",
    "typings": [
      "(this: void, tab: table, key: any, name: string, force?: FORCE): void"
    ]
  },
  {
    "comments": [
      "\nThis returns the internally stored gamemode table.\n",
      "@name gamemode.Get",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/gamemode/Get",
      "@internal",
      "@param {void} this - no description",
      "@param {string} name - The name of the gamemode you want to get",
      "@returns {table} - The gamemode's table"
    ],
    "type": "func",
    "context": "gamemode",
    "name": "Get",
    "typings": [
      "(this: void, name: string): table"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine when a gamemode is being loaded.\n",
      "@name gamemode.Register",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/gamemode/Register",
      "@internal",
      "@param {void} this - no description",
      "@param {table} gm - Your GM table",
      "@param {string} name - Name of your gamemode, lowercase, no spaces.",
      "@param {string} derived - The gamemode name that your gamemode is derived from",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gamemode",
    "name": "Register",
    "typings": [
      "(this: void, gm: table, name: string, derived: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine to call a hook within the loaded gamemode.\nThe supplied event 'name' must be defined in the active gamemode. Otherwise, nothing will happen - not even hooks added with @hook.Add will be called.\nThis is similar to @hook.Run and @hook.Call, except the hook library will call hooks created with hook.Add even if there is no corresponding gamemode function.\n",
      "@name gamemode.Call",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/gamemode/Call",
      "@param {void} this - no description",
      "@param {string} name - The name of the hook to call.",
      "@param {any[]} ...args - The arguments",
      "@returns {any} - The result of the hook function - can be up to 6 values. Returns false if the gamemode function doesn't exist (i.e. nothing happened), but remember - a hook can also return false."
    ],
    "type": "func",
    "context": "gamemode",
    "name": "Call",
    "typings": [
      "(this: void, name: string, ...args: any[]): any"
    ]
  },
  {
    "comments": [
      "\nAdd a game event listener.\n",
      "@name gameevent.Listen",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/gameevent/Listen",
      "@param {void} this - no description",
      "@param {string} eventName - The event to listen to, travels through hooks with eventName as event.\nList of valid events can be found [here](https://wiki.garrysmod.com/page/Game_Events).",
      "@returns {void}"
    ],
    "type": "func",
    "context": "gameevent",
    "name": "Listen",
    "typings": [
      "(this: void, eventName: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the time scale of the game.\nThis function is supposed to remove the need of using the host_timescale convar, which is cheat protected.\nTo slow down or speed up the movement of a specific player, use @Player:SetLaggedMovementValue instead.\n",
      "@name game.SetTimeScale",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/SetTimeScale",
      "@note Like host_timescale, this method does not affect sounds, if you wish to change that, look into @GamemodeHooks:EntityEmitSound.",
      "@param {void} this - no description",
      "@param {number} timeScale - The new timescale, minimum value is 0.001 and maximum is 5.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "SetTimeScale",
    "typings": [
      "(this: void, timeScale: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns position the player should start from, this is not the same thing as spawn points, it is used to properly transit the player between maps.\n",
      "@name game.StartSpot",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/StartSpot",
      "@param {void} this - no description",
      "@returns {Vector} - startSpot"
    ],
    "type": "func",
    "context": "game",
    "name": "StartSpot",
    "typings": [
      "(this: void): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the current session is a single player game.\n",
      "@name game.SinglePlayer",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/SinglePlayer",
      "@param {void} this - no description",
      "@returns {boolean} - isSinglePlayer"
    ],
    "type": "func",
    "context": "game",
    "name": "SinglePlayer",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the difficulty level of the game, can be retrieved with @game.GetSkillLevel.\nThis will automatically change whenever the \"skill\" convar is modified serverside.\n",
      "@name game.SetSkillLevel",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/SetSkillLevel",
      "@bug #3491 This function will not work if the skill convar doesn't match the targeted value. To work around this, you must use RunConsoleCommand(\"skill\", num) alongside this function.",
      "@param {void} this - no description",
      "@param {number} level - The difficulty level, Easy( 1 ), Normal( 2 ), Hard( 3 ).",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "SetSkillLevel",
    "typings": [
      "(this: void, level: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether a Global State is off, active or dead ( inactive )\nSee [Global States](https://wiki.garrysmod.com/page/Global%20States) for more information.\n",
      "@name game.SetGlobalState",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/SetGlobalState",
      "@param {void} this - no description",
      "@param {string} name - The name of the Global State to set.\nIf the Global State by that name does not exist, it will be created.\nSee [Global States](https://wiki.garrysmod.com/page/Global%20States) for a list of default global states.",
      "@param {GLOBAL} state - The state of the Global State. See @GLOBAL enum",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "SetGlobalState",
    "typings": [
      "(this: void, name: string, state: GLOBAL): void"
    ]
  },
  {
    "comments": [
      "\nSets the counter of a Global State.\nSee [Global States](https://wiki.garrysmod.com/page/Global%20States) for more information.\n",
      "@name game.SetGlobalCounter",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/SetGlobalCounter",
      "@param {void} this - no description",
      "@param {string} name - The name of the Global State to set.\nIf the Global State by that name does not exist, it will be created.\nSee [Global States](https://wiki.garrysmod.com/page/Global%20States) for a list of default global states.",
      "@param {number} count - The value to set for that Global State.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "SetGlobalCounter",
    "typings": [
      "(this: void, name: string, count: number): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all the clientside ragdolls.\n",
      "@name game.RemoveRagdolls",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/RemoveRagdolls",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "RemoveRagdolls",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nLoads the next map according to the nextlevel convar, or from the current mapcycle file set by the respective convar.\n",
      "@name game.LoadNextMap",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/LoadNextMap",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "LoadNextMap",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns the map load type of the current map.\nAfter changing the map with the console command *changelevel*, \"newgame\" is returned. With *changelevel2* (single player only), \"transition\" is returned.\n",
      "@name game.MapLoadType",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/MapLoadType",
      "@param {void} this - no description",
      "@returns {string} - The load type. Possible values are: \"newgame\", \"loadgame\", \"transition\", \"background\"."
    ],
    "type": "func",
    "context": "game",
    "name": "MapLoadType",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nMounts a GMA addon from the disk. Any error models currently loaded that the mounted addon provides will be reloaded.\nCan be used with @steamworks.DownloadUGC\n",
      "@name game.MountGMA",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/MountGMA",
      "@param {void} this - no description",
      "@param {string} path - Location of the GMA file to mount, relative to the garrysmod directory",
      "@returns {boolean} - success",
      "@returns {table} - If successful, a table of files that have been mounted",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "game",
    "name": "MountGMA",
    "typings": [
      "(this: void, path: string): [boolean, table]"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum amount of players (including bots) that the server can have.\n",
      "@name game.MaxPlayers",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/MaxPlayers",
      "@param {void} this - no description",
      "@returns {number} - The maximum amount of players"
    ],
    "type": "func",
    "context": "game",
    "name": "MaxPlayers",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nKicks a player from the server. This can be ran before the player has spawned.\n",
      "@name game.KickID",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/KickID",
      "@warning This will be shortened to ~512 chars, though this includes the command itself and the player index so will realistically be more around ~498. It is recommended to avoid going near the limit to avoid truncation.",
      "@param {void} this - no description",
      "@param {string} id - UserID or SteamID of the player to kick.",
      "@param {string} reason - Reason to display to the player. This can span across multiple lines.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "KickID",
    "typings": [
      "(this: void, id: string, reason?: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the time scale of the game\n",
      "@name game.GetTimeScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetTimeScale",
      "@param {void} this - no description",
      "@returns {number} - The time scale"
    ],
    "type": "func",
    "context": "game",
    "name": "GetTimeScale",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the worldspawn entity.\n",
      "@name game.GetWorld",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetWorld",
      "@param {void} this - no description",
      "@returns {Entity} - The world"
    ],
    "type": "func",
    "context": "game",
    "name": "GetWorld",
    "typings": [
      "(this: void): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns true if the server is a dedicated server, false if it is a [Listen server](https://en.wikipedia.org/wiki/Listen%20server) or a singleplayer game.\n",
      "@name game.IsDedicated",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/IsDedicated",
      "@bug #1495 This always returns false on the client.",
      "@param {void} this - no description",
      "@returns {boolean} - Is the server dedicated or not."
    ],
    "type": "func",
    "context": "game",
    "name": "IsDedicated",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the difficulty level of the game.\n**TIP:** You can use this function in your scripted NPCs or Nextbots to make them harder, however, it is a good idea to lock powerful attacks behind the highest difficulty instead of just increasing the health.\n",
      "@name game.GetSkillLevel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetSkillLevel",
      "@note Internally this is tied to the gamerules entity, so you'll have to wait to wait until @GamemodeHooks:InitPostEntity is called to return the skill level",
      "@param {void} this - no description",
      "@returns {number} - The difficulty level, Easy( 1 ), Normal( 2 ), Hard( 3 )."
    ],
    "type": "func",
    "context": "game",
    "name": "GetSkillLevel",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the VBSP version of the current map.\n",
      "@name game.GetMapVersion",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetMapVersion",
      "@param {void} this - no description",
      "@returns {number} - mapVersion"
    ],
    "type": "func",
    "context": "game",
    "name": "GetMapVersion",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns the next map that would be loaded according to the file that is set by the mapcyclefile convar.\n",
      "@name game.GetMapNext",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/GetMapNext",
      "@param {void} this - no description",
      "@returns {string} - nextMap"
    ],
    "type": "func",
    "context": "game",
    "name": "GetMapNext",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the current map, without a file extension.\nOn the menu state, returns \"menu\".\n",
      "@name game.GetMap",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/game/GetMap",
      "@param {void} this - no description",
      "@returns {string} - The name of the current map, without a file extension."
    ],
    "type": "func",
    "context": "game",
    "name": "GetMap",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nReturns the public IP address and port of the current server. This will return the IP/port that you are connecting through when ran clientside.\n",
      "@name game.GetIPAddress",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetIPAddress",
      "@note Returns \"0.0.0.0:0\" in singleplayer.",
      "@bug #3001 Returns \"0.0.0.0:*port*\" on the server when called too early, including in @GamemodeHooks:Initialize and @GamemodeHooks:InitPostEntity. This bug seems to only happen the first time a server is launched, and will return the correct value after switching maps.",
      "@param {void} this - no description",
      "@returns {string} - The IP address and port in the format \"x.x.x.x:x\""
    ],
    "type": "func",
    "context": "game",
    "name": "GetIPAddress",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "\nReturns the counter of a Global State.\nSee [Global States](https://wiki.garrysmod.com/page/Global%20States) for more information.\n",
      "@name game.GetGlobalCounter",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/GetGlobalCounter",
      "@param {void} this - no description",
      "@param {string} name - The name of the Global State to set.\nIf the Global State by that name does not exist, it will be created.\nSee [Global States](https://wiki.garrysmod.com/page/Global%20States) for a list of default global states.",
      "@returns {number} - The value of the given Global State, 0 if the global state doesn't exist."
    ],
    "type": "func",
    "context": "game",
    "name": "GetGlobalCounter",
    "typings": [
      "(this: void, name: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether a Global State is off, active or dead ( inactive )\nSee [Global States](https://wiki.garrysmod.com/page/Global%20States) for more information.\n",
      "@name game.GetGlobalState",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/GetGlobalState",
      "@param {void} this - no description",
      "@param {string} name - The name of the Global State to retrieve the state of.\nIf the Global State by that name does not exist, **GLOBAL_DEAD** will be returned.\nSee [Global States](https://wiki.garrysmod.com/page/Global%20States) for a list of default global states.",
      "@returns {GLOBAL} - The state of the Global State. See @GLOBAL enum"
    ],
    "type": "func",
    "context": "game",
    "name": "GetGlobalState",
    "typings": [
      "(this: void, name: string): GLOBAL"
    ]
  },
  {
    "comments": [
      "\nReturns a list of all ammo types currently registered.\n",
      "@name game.GetAmmoTypes",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetAmmoTypes",
      "@param {void} this - no description",
      "@returns {table} - A table containing all ammo types. The keys are ammo IDs, the values are the names associated with those IDs."
    ],
    "type": "func",
    "context": "game",
    "name": "GetAmmoTypes",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nReturns the damage given ammo type should do to players.\n",
      "@name game.GetAmmoPlayerDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetAmmoPlayerDamage",
      "@param {void} this - no description",
      "@param {number} id - Ammo ID to retrieve the damage info of. Starts from 1.",
      "@returns {number} - no description"
    ],
    "type": "func",
    "context": "game",
    "name": "GetAmmoPlayerDamage",
    "typings": [
      "(this: void, id: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the damage given ammo type should do to NPCs.\n",
      "@name game.GetAmmoNPCDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetAmmoNPCDamage",
      "@param {void} this - no description",
      "@param {number} id - Ammo ID to retrieve the damage info of. Starts from 1.",
      "@returns {number} - no description"
    ],
    "type": "func",
    "context": "game",
    "name": "GetAmmoNPCDamage",
    "typings": [
      "(this: void, id: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the ammo name for given ammo type ID.\nSee @game.GetAmmoID for reverse.\n",
      "@name game.GetAmmoName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetAmmoName",
      "@param {void} this - no description",
      "@param {number} id - Ammo ID to retrieve the name of. Starts from 1.",
      "@returns {string} - The name of given ammo type ID or nil if ammo type ID is invalid."
    ],
    "type": "func",
    "context": "game",
    "name": "GetAmmoName",
    "typings": [
      "(this: void, id: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the ammo bullet force that is applied when an entity is hit by a bullet of given ammo type.\n",
      "@name game.GetAmmoForce",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetAmmoForce",
      "@param {void} this - no description",
      "@param {number} id - Ammo ID to retrieve the force of. Starts from 1.",
      "@returns {number} - no description"
    ],
    "type": "func",
    "context": "game",
    "name": "GetAmmoForce",
    "typings": [
      "(this: void, id: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the ammo type ID for given ammo type name.\nSee @game.GetAmmoName for reverse.\n",
      "@name game.GetAmmoID",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetAmmoID",
      "@param {void} this - no description",
      "@param {string} name - Name of the ammo type to look up ID of",
      "@returns {number} - The ammo type ID of given ammo type name, or -1 if not found"
    ],
    "type": "func",
    "context": "game",
    "name": "GetAmmoID",
    "typings": [
      "(this: void, name: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns the real maximum amount of ammo of given ammo ID.\n",
      "@name game.GetAmmoMax",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetAmmoMax",
      "@note Currently all ammo types have overridden maximum value of reserve ammo set to 9999.",
      "@param {void} this - no description",
      "@param {number} id - Ammo type ID",
      "@returns {number} - The maximum amount of reserve ammo a player can hold of this ammo type."
    ],
    "type": "func",
    "context": "game",
    "name": "GetAmmoMax",
    "typings": [
      "(this: void, id: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the @AmmoData structure for given ID.\n",
      "@name game.GetAmmoData",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetAmmoData",
      "@param {void} this - no description",
      "@param {number} id - ID of the ammo type to look up the data for",
      "@returns {AmmoData} - The @AmmoData structure containing all ammo data"
    ],
    "type": "func",
    "context": "game",
    "name": "GetAmmoData",
    "typings": [
      "(this: void, id: number): AmmoData"
    ]
  },
  {
    "comments": [
      "\nRuns a console command.\nMake sure to add a newline (\"\\n\") at the end of the command.\n",
      "@name game.ConsoleCommand",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/game/ConsoleCommand",
      "@warning If you use data that were received from a client, you should avoid using this function because newline and semicolon (at least) allow the client to run arbitrary commands!\nFor safety, you are urged to prefer using @RunConsoleCommand function in this case.",
      "@param {void} this - no description",
      "@param {string} stringCommand - String containing the command and arguments to be ran.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "ConsoleCommand",
    "typings": [
      "(this: void, stringCommand: string): void"
    ]
  },
  {
    "comments": [
      "\nIf called serverside it will remove ALL entities which were not created by the map(not players or weapons held by players).\nOn the client it will remove decals, sounds, gibs, dead NPCs, and entities created via @ents.CreateClientProp.\nThis function calls @GamemodeHooks:PreCleanupMap before cleaning up the map and @GamemodeHooks:PostCleanupMap after cleaning up the map.\n",
      "@name game.CleanUpMap",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/CleanUpMap",
      "@bug #1142 Calling this in a @EntityHooks:StartTouch or @EntityHooks:Touch hook will crash the game.",
      "@bug #2874 Calling this destroys all BASS streams.",
      "@bug #3637 This can crash when removing _firesmoke entities.",
      "@param {void} this - no description",
      "@param {boolean} dontSendToClients - If set to true, don't run this functions on all clients.",
      "@param {table} ExtraFilters - Entity classes not to reset during cleanup.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "CleanUpMap",
    "typings": [
      "(this: void, dontSendToClients?: boolean, ExtraFilters?: table): void"
    ]
  },
  {
    "comments": [
      "\nReturns the damage type of given ammo type.\n",
      "@name game.GetAmmoDamageType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/GetAmmoDamageType",
      "@param {void} this - no description",
      "@param {number} id - Ammo ID to retrieve the damage type of. Starts from 1.",
      "@returns {DMG} - See @DMG enum"
    ],
    "type": "func",
    "context": "game",
    "name": "GetAmmoDamageType",
    "typings": [
      "(this: void, id: number): DMG"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine to retrieve the ammo types.\n",
      "@name game.BuildAmmoTypes",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/BuildAmmoTypes",
      "@internal Consider using @game.GetAmmoTypes and @game.GetAmmoData instead.",
      "@param {void} this - no description",
      "@returns {table} - All ammo types registered via @game.AddAmmoType, sorted by its name value."
    ],
    "type": "func",
    "context": "game",
    "name": "BuildAmmoTypes",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nLoads a particle file.\n",
      "@name game.AddParticles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/AddParticles",
      "@note You will still need to call this function clientside regardless if you create the particle effects serverside.",
      "@param {void} this - no description",
      "@param {string} particleFileName - The path of the file to add. Must be (file).pcf.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "AddParticles",
    "typings": [
      "(this: void, particleFileName: string): void"
    ]
  },
  {
    "comments": [
      "\nRegisters a new decal.\n",
      "@name game.AddDecal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/AddDecal",
      "@warning There's a rather low limit of around 256 for decals that may be registered and they are not cleared on map load.",
      "@param {void} this - no description",
      "@param {string} decalName - The name of the decal.",
      "@param {string} materialName - The material to be used for the decal. May also be a list of material names, in which case a random material from that list will be chosen every time the decal is placed.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "AddDecal",
    "typings": [
      "(this: void, decalName: string, materialName: string): void"
    ]
  },
  {
    "comments": [
      "\nAdds a new ammo type to the game.\nYou can find a list of default ammo types [here](https://wiki.garrysmod.com/page/Default_Ammo_Types).\n",
      "@name game.AddAmmoType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/game/AddAmmoType",
      "@note This function must be called in @GamemodeHooks:Initialize.",
      "@note There is a limit of 128 ammo types, including the default ones.",
      "@warning This function must be called shared or you will have unexpected problems.",
      "@bug  This will have unpredictable results when registering ammo types with the same name but different capitalisation.",
      "@param {void} this - no description",
      "@param {AmmoData} ammoData - The attributes of the ammo. See the @AmmoData structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "game",
    "name": "AddAmmoType",
    "typings": [
      "(this: void, ammoData: AmmoData): void"
    ]
  },
  {
    "comments": [
      "\nReturns amount of frames needed to render?\n",
      "@name frame_blend.RenderableFrames",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/frame blend/RenderableFrames",
      "@internal",
      "@validate",
      "@param {void} this - no description",
      "@returns {number} - Amount of frames needed to render?"
    ],
    "type": "func",
    "context": "frame_blend",
    "name": "RenderableFrames",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether we should skip frame or not\n",
      "@name frame_blend.ShouldSkipFrame",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/frame blend/ShouldSkipFrame",
      "@param {void} this - no description",
      "@returns {boolean} - Should the frame be skipped or not"
    ],
    "type": "func",
    "context": "frame_blend",
    "name": "ShouldSkipFrame",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether frame blend post processing effect is enabled or not.\n",
      "@name frame_blend.IsActive",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/frame blend/IsActive",
      "@param {void} this - no description",
      "@returns {boolean} - Is frame blend enabled or not"
    ],
    "type": "func",
    "context": "frame_blend",
    "name": "IsActive",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the current frame is the last frame?\n",
      "@name frame_blend.IsLastFrame",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/frame blend/IsLastFrame",
      "@internal",
      "@validate",
      "@param {void} this - no description",
      "@returns {boolean} - Whether the current frame is the last frame?"
    ],
    "type": "func",
    "context": "frame_blend",
    "name": "IsLastFrame",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nRenders the frame onto internal render target.\n",
      "@name frame_blend.CompleteFrame",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/frame blend/CompleteFrame",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "frame_blend",
    "name": "CompleteFrame",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nActually draws the frame blend effect.\n",
      "@name frame_blend.DrawPreview",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/frame blend/DrawPreview",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "frame_blend",
    "name": "DrawPreview",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds a frame to the blend. Calls @frame_blend.CompleteFrame once enough frames have passed since last @frame_blend.CompleteFrame call.\n",
      "@name frame_blend.AddFrame",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/frame blend/AddFrame",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "frame_blend",
    "name": "AddFrame",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nBlends the frame(s).\n",
      "@name frame_blend.BlendFrame",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/frame blend/BlendFrame",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "frame_blend",
    "name": "BlendFrame",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nWrites an unsigned 16-bit integer to the file.\n",
      "@name File:WriteUShort",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/WriteUShort",
      "@param {File} this - no description",
      "@param {number} uint16 - The unsigned 16-bit integer to the file.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "WriteUShort",
    "typings": [
      "(this: File, uint16: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites an unsigned 32-bit integer to the file.\n",
      "@name File:WriteULong",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/WriteULong",
      "@param {File} this - no description",
      "@param {number} uint32 - The unsigned 32-bit integer to be written to the file.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "WriteULong",
    "typings": [
      "(this: File, uint32: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites a 16-bit signed integer to the file.\n",
      "@name File:WriteShort",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/WriteShort",
      "@param {File} this - no description",
      "@param {number} int16 - The 16-bit signed integer to be written to the file.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "WriteShort",
    "typings": [
      "(this: File, int16: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites a 32-bit signed integer to the file.\n",
      "@name File:WriteLong",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/WriteLong",
      "@param {File} this - no description",
      "@param {number} int32 - The 32-bit signed integer to be written to the file.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "WriteLong",
    "typings": [
      "(this: File, int32: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites a 4byte float to the file.\n",
      "@name File:WriteFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/WriteFloat",
      "@param {File} this - no description",
      "@param {number} float - The float to be written to the file.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "WriteFloat",
    "typings": [
      "(this: File, float: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites a 8byte floating point double to the file.\n",
      "@name File:WriteDouble",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/WriteDouble",
      "@param {File} this - no description",
      "@param {number} double - The double to be written to the file.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "WriteDouble",
    "typings": [
      "(this: File, double: number): void"
    ]
  },
  {
    "comments": [
      "\nWrite an 8-bit unsigned integer to the file.\n",
      "@name File:WriteByte",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/WriteByte",
      "@param {File} this - no description",
      "@param {number} uint8 - The 8-bit unsigned integer to be written to the file.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "WriteByte",
    "typings": [
      "(this: File, uint8: number): void"
    ]
  },
  {
    "comments": [
      "\nWrites a boolean value to the file as one **byte**.\n",
      "@name File:WriteBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/WriteBool",
      "@param {File} this - no description",
      "@param {boolean} bool - The bool to be written to the file.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "WriteBool",
    "typings": [
      "(this: File, bool: boolean): void"
    ]
  },
  {
    "comments": [
      "\nWrites the given string into the file.\n",
      "@name File:Write",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/Write",
      "@param {File} this - no description",
      "@param {string} data - Binary data to write to the file.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "Write",
    "typings": [
      "(this: File, data: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the current position of the file pointer.\n",
      "@name File:Tell",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/Tell",
      "@param {File} this - no description",
      "@returns {number} - pos"
    ],
    "type": "class",
    "context": "File",
    "name": "Tell",
    "typings": [
      "(this: File): number"
    ]
  },
  {
    "comments": [
      "\nMoves the file pointer by the specified amount of chars.\n",
      "@name File:Skip",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/Skip",
      "@param {File} this - no description",
      "@param {number} amount - The amount of chars to skip, can be negative to skip backwards.",
      "@returns {number} - amount"
    ],
    "type": "class",
    "context": "File",
    "name": "Skip",
    "typings": [
      "(this: File, amount: number): number"
    ]
  },
  {
    "comments": [
      "\nWrites the given string to a file. Erases all previous data in the file. To add data without deleting previous data, use @file.Append.\n",
      "@name file.Write",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/Write",
      "@param {void} this - no description",
      "@param {string} fileName - The name of the file being written into. The path is relative to the **data/ ** folder.\nThis argument will be forced lowercase.\nThe filename **must** end with one of the following:\n* .txt\n* .jpg\n* .png\n* .vtf\n* .dat\n* .json\nRestricted symbols are: \" :```",
      "@param {string} content - The content that will be written into the file.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "file",
    "name": "Write",
    "typings": [
      "(this: void, fileName: string, content: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns when the file or folder was lasted modified in Unix time.\n",
      "@name file.Time",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/Time",
      "@param {void} this - no description",
      "@param {string} path - The **file** or **folder** path.",
      "@param {string} gamePath - The game path to be used.\n* \"GAME\" Structured like base folder (garrysmod/), searches all the mounted content (main folder, addons, mounted games etc)\n* \"LUA\" or \"lsv\" - All Lua folders (lua/) including gamesmodes and addons\n* \"DATA\" Data folder (garrysmod/data)\n* \"MOD\" Strictly the game folder (garrysmod/), ignores mounting.",
      "@returns {number} - Seconds passed since Unix epoch."
    ],
    "type": "func",
    "context": "file",
    "name": "Time",
    "typings": [
      "(this: void, path: string, gamePath: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns the size of the file in bytes.\n",
      "@name File:Size",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/Size",
      "@param {File} this - no description",
      "@returns {number} - size"
    ],
    "type": "class",
    "context": "File",
    "name": "Size",
    "typings": [
      "(this: File): number"
    ]
  },
  {
    "comments": [
      "\nSets the file pointer to the specified position.\n",
      "@name File:Seek",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/Seek",
      "@param {File} this - no description",
      "@param {number} pos - Pointer position.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "Seek",
    "typings": [
      "(this: File, pos: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the file's size in bytes. If the file is not found, returns -1.\n",
      "@name file.Size",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/Size",
      "@param {void} this - no description",
      "@param {string} fileName - The file's name.",
      "@param {string} path - The path type.\n* \"GAME\" Structured like base folder (garrysmod/), searches all the mounted content (main folder, addons, mounted games etc)\n* \"LUA\" or \"lsv\" - All Lua folders (lua/) including gamesmodes and addons\n* \"DATA\" Data folder (garrysmod/data)\n* \"MOD\" Strictly the game folder (garrysmod/), ignores mounting.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "file",
    "name": "Size",
    "typings": [
      "(this: void, fileName: string, path: string): void"
    ]
  },
  {
    "comments": [
      "\nAttempts to rename a file with the given name to another given name.\nThis function is constrained to the data/ folder.\n",
      "@name file.Rename",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/Rename",
      "@param {void} this - no description",
      "@param {string} orignalFileName - The original file or folder name. See @file.Write for details on filename restrictions when writing to files.\nThis argument will be forced lowercase.",
      "@param {string} targetFileName - The target file or folder name. See @file.Write for details on filename restrictions when writing to files.\nThis argument will be forced lowercase.",
      "@returns {boolean} - True on success, false otherwise."
    ],
    "type": "func",
    "context": "file",
    "name": "Rename",
    "typings": [
      "(this: void, orignalFileName: string, targetFileName: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReads a unsigned 16-bit integer from the file.\n",
      "@name File:ReadUShort",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/ReadUShort",
      "@param {File} this - no description",
      "@returns {number} - The 16-bit integer"
    ],
    "type": "class",
    "context": "File",
    "name": "ReadUShort",
    "typings": [
      "(this: File): number"
    ]
  },
  {
    "comments": [
      "\nReads a unsigned 32-bit integer from the file.\n",
      "@name File:ReadULong",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/ReadULong",
      "@param {File} this - no description",
      "@returns {number} - An unsigned 32-bit integer"
    ],
    "type": "class",
    "context": "File",
    "name": "ReadULong",
    "typings": [
      "(this: File): number"
    ]
  },
  {
    "comments": [
      "\nReads a signed 16-bit integer from the file.\n",
      "@name File:ReadShort",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/ReadShort",
      "@param {File} this - no description",
      "@returns {number} - int16"
    ],
    "type": "class",
    "context": "File",
    "name": "ReadShort",
    "typings": [
      "(this: File): number"
    ]
  },
  {
    "comments": [
      "\nReads a signed 32-bit integer from the file.\n",
      "@name File:ReadLong",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/ReadLong",
      "@param {File} this - no description",
      "@returns {number} - A signed 32-bit integer"
    ],
    "type": "class",
    "context": "File",
    "name": "ReadLong",
    "typings": [
      "(this: File): number"
    ]
  },
  {
    "comments": [
      "\nReturns the contents of the file from the current position up until the end of the current line.\n",
      "@name File:ReadLine",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/ReadLine",
      "@note This function will look specifically for *Line Feed* characters \\n``` and will **completely ignore *Carriage Return* characters** \\r```.",
      "@note This function will not return more than 8192 characters.",
      "@param {File} this - no description",
      "@returns {string} - The string of data from the read line."
    ],
    "type": "class",
    "context": "File",
    "name": "ReadLine",
    "typings": [
      "(this: File): string"
    ]
  },
  {
    "comments": [
      "\nReads 4 bytes from the file converts them to a float and returns them.\n",
      "@name File:ReadFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/ReadFloat",
      "@param {File} this - no description",
      "@returns {number} - The read value"
    ],
    "type": "class",
    "context": "File",
    "name": "ReadFloat",
    "typings": [
      "(this: File): number"
    ]
  },
  {
    "comments": [
      "\nReads 8 bytes from the file converts them to a double and returns them.\n",
      "@name File:ReadDouble",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/ReadDouble",
      "@param {File} this - no description",
      "@returns {number} - value"
    ],
    "type": "class",
    "context": "File",
    "name": "ReadDouble",
    "typings": [
      "(this: File): number"
    ]
  },
  {
    "comments": [
      "\nReads one unsigned 8-bit integer from the file.\n",
      "@name File:ReadByte",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/ReadByte",
      "@param {File} this - no description",
      "@returns {number} - The unsigned 8-bit integer from the file."
    ],
    "type": "class",
    "context": "File",
    "name": "ReadByte",
    "typings": [
      "(this: File): number"
    ]
  },
  {
    "comments": [
      "\nReads one byte of the file and returns whether that byte was not 0.\n",
      "@name File:ReadBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/ReadBool",
      "@param {File} this - no description",
      "@returns {boolean} - val"
    ],
    "type": "class",
    "context": "File",
    "name": "ReadBool",
    "typings": [
      "(this: File): boolean"
    ]
  },
  {
    "comments": [
      "\nReads the specified amount of chars and returns them as a binary string.\n",
      "@name File:Read",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/Read",
      "@param {File} this - no description",
      "@param {number} length - Reads the specified amount of chars.",
      "@returns {string} - data"
    ],
    "type": "class",
    "context": "File",
    "name": "Read",
    "typings": [
      "(this: File, length: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the content of a file.\nBeware of casing -- some filesystems are case-sensitive. SRCDS on Linux seems to force file/directory creation to lowercase, but will not modify read operations.\n",
      "@name file.Read",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/Read",
      "@param {void} this - no description",
      "@param {string} fileName - The name of the file.",
      "@param {string} path - The path used to look up the file.\n* \"GAME\" Structured like base folder (garrysmod/), searches all the mounted content (main folder, addons, mounted games etc)\n* \"LUA\" or \"lsv\" - All Lua folders (lua/) including gamesmodes and addons\n* \"DATA\" Data folder (garrysmod/data)\n* \"MOD\" Strictly the game folder (garrysmod/), ignores mounting.\nIt can also be a boolean:\n* true = \"GAME\"\n* false = \"DATA\"",
      "@returns {string} - The data from the file as a string, or nil if the file isn't found"
    ],
    "type": "func",
    "context": "file",
    "name": "Read",
    "typings": [
      "(this: void, fileName: string, path?: string): string"
    ]
  },
  {
    "comments": [
      "\nAttempts to open a file with the given mode.\n",
      "@name file.Open",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/Open",
      "@param {void} this - no description",
      "@param {string} fileName - The files name. See @file.Write for details on filename restrictions when writing to files.",
      "@param {string} fileMode - The mode to open the file in. Possible values are:\n* **r** - read mode\n* **w** - write mode\n* **a** - append mode\n* **rb** - binary read mode\n* **wb** - binary write mode\n* **ab** - binary append mode",
      "@param {string} path - The path type. See [File Search Paths](https://wiki.garrysmod.com/page/File%20Search%20Paths)\nCommon paths are:\n* \"GAME\" - Structured like base folder (garrysmod/), searches all the mounted content (main folder, addons, mounted games etc)\n* \"LUA\" or \"lsv\" - All Lua folders (lua/) including gamesmodes and addons\n* \"DATA\" - Local to Data folder, has write access (garrysmod/data)\n* \"MOD\" - Strictly the game folder (garrysmod/), ignores mounting.",
      "@returns {File} - The opened file object, or nil if it failed to open due to it not existing or being used by another process."
    ],
    "type": "func",
    "context": "file",
    "name": "Open",
    "typings": [
      "(this: void, fileName: string, fileMode: string, path: string): File"
    ]
  },
  {
    "comments": [
      "\nReturns whether the given file is a directory or not.\n",
      "@name file.IsDir",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/IsDir",
      "@param {void} this - no description",
      "@param {string} fileName - The file or directory's name.",
      "@param {string} path - The path type.",
      "@returns {boolean} - True if the given path is a directory or false if it is a file."
    ],
    "type": "func",
    "context": "file",
    "name": "IsDir",
    "typings": [
      "(this: void, fileName: string, path: string): boolean"
    ]
  },
  {
    "comments": [
      "\nDumps the file changes to disk and saves the file.\n",
      "@name File:Flush",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/Flush",
      "@param {File} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "Flush",
    "typings": [
      "(this: File): void"
    ]
  },
  {
    "comments": [
      "\nReturns a list of files and directories inside a single folder.\n",
      "@name file.Find",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/Find",
      "@param {void} this - no description",
      "@param {string} name - The wildcard to search for. \"models/ *.mdl\" will list .mdl files in the models/ folder.",
      "@param {string} path - The path to look for the files and directories in. See [this list](https://wiki.garrysmod.com/page/File_Search_Paths) for a list of valid paths.",
      "@param {string} sorting - The sorting to be used, optional.\n* \"nameasc\" sort the files ascending by name\n* \"namedesc\" sort the files descending by name\n* \"dateasc\" sort the files ascending by date\n* \"datedesc\" sort the files descending by date",
      "@returns {table} - A table of found files, or nil if the path is invalid",
      "@returns {table} - A table of found directories, or nil if the path is invalid",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "file",
    "name": "Find",
    "typings": [
      "(this: void, name: string, path: string, sorting?: string): [table, table]"
    ]
  },
  {
    "comments": [
      "\nReturns a boolean of whether the file or directory exists or not.\n",
      "@name file.Exists",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/Exists",
      "@param {void} this - no description",
      "@param {string} name - The file or directory's name.",
      "@param {string} path - The path of where to look for the file.\n* \"GAME\" Structured like base folder (garrysmod/), searches all the mounted content (main folder, addons, mounted games etc)\n* \"LUA\" or \"lsv\" - All Lua folders (lua/) including gamesmodes and addons\n* \"DATA\" Data folder (garrysmod/data)\n* \"MOD\" Strictly the game folder (garrysmod/), ignores mounting.",
      "@returns {boolean} - Returns true if the file exists and false if it is not."
    ],
    "type": "func",
    "context": "file",
    "name": "Exists",
    "typings": [
      "(this: void, name: string, path: string): boolean"
    ]
  },
  {
    "comments": [
      "\nDumps the file changes to disk and closes the file handle which makes the handle useless.\n",
      "@name File:Close",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/File/Close",
      "@param {File} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "File",
    "name": "Close",
    "typings": [
      "(this: File): void"
    ]
  },
  {
    "comments": [
      "\nCreates a directory that is relative to the *data* folder.\n",
      "@name file.CreateDir",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/CreateDir",
      "@param {void} this - no description",
      "@param {string} name - The directory's name.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "file",
    "name": "CreateDir",
    "typings": [
      "(this: void, name: string): void"
    ]
  },
  {
    "comments": [
      "\nDeletes a file or *empty* folder that is relative to the **data** folder.\nYou can't remove any files outside of **data** folder.\n",
      "@name file.Delete",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/Delete",
      "@param {void} this - no description",
      "@param {string} name - The file name",
      "@returns {void}"
    ],
    "type": "func",
    "context": "file",
    "name": "Delete",
    "typings": [
      "(this: void, name: string): void"
    ]
  },
  {
    "comments": [
      "\nAppends a file relative to the *data* folder.\n",
      "@name file.Append",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/file/Append",
      "@param {void} this - no description",
      "@param {string} name - The file's name.",
      "@param {string} content - The content which should be appended to the file.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "file",
    "name": "Append",
    "typings": [
      "(this: void, name: string, content: string): void"
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/ USE",
      "@warning There is no guarantee to receive both ON and OFF signals. A signal will only be sent when pushing or letting go of the use key while actually aiming at the entity, so an ON signal might not be followed by an OFF signal if the player is aiming somewhere else when releasing the key, and similarly, an OFF signal may not be preceded by an ON signal if the player started aiming at the entity only after pressing the key.\nTherefore, this method of input is unreliable and should not be used.",
      "@enum _USE",
      "@description Enumerations used by @EntityFuncs:SetUseType. Affects when @EntityHooks:Use is triggered.\nNot to be confused with @USE enum used for @EntityHooks:Use and others.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "_USE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param CONTINUOUS_USE - Fire a [USE_ON](https://wiki.garrysmod.com/page/Enums/USE) signal every tick as long as the player holds their use key and aims at the target."
        ],
        "context": "_USE",
        "type": "enum",
        "name": "CONTINUOUS_USE",
        "typing": "0"
      },
      {
        "comments": [
          "@param ONOFF_USE - Fires a [USE_ON](https://wiki.garrysmod.com/page/Enums/USE) signal when starting to use an entity, and a [USE_OFF](https://wiki.garrysmod.com/page/Enums/USE) signal when letting go."
        ],
        "context": "_USE",
        "type": "enum",
        "name": "ONOFF_USE",
        "typing": "1"
      },
      {
        "comments": [
          "@param DIRECTIONAL_USE - Like a wheel turning."
        ],
        "context": "_USE",
        "type": "enum",
        "name": "DIRECTIONAL_USE",
        "typing": "2"
      },
      {
        "comments": [
          "@param SIMPLE_USE - Fire a [USE_ON](https://wiki.garrysmod.com/page/Enums/USE) signal only once when player presses their use key while aiming at the target."
        ],
        "context": "_USE",
        "type": "enum",
        "name": "SIMPLE_USE",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/WEAPON PROFICIENCY",
      "@enum WEAPON_PROFICIENCY",
      "@description Enumerations used by @NPC:SetCurrentWeaponProficiency and\n@NPC:GetCurrentWeaponProficiency.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "WEAPON_PROFICIENCY",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param WEAPON_PROFICIENCY_POOR - The NPC will miss a large majority of their shots."
        ],
        "context": "WEAPON_PROFICIENCY",
        "type": "enum",
        "name": "WEAPON_PROFICIENCY_POOR",
        "typing": "0"
      },
      {
        "comments": [
          "@param WEAPON_PROFICIENCY_AVERAGE - The NPC will miss about half of their shots."
        ],
        "context": "WEAPON_PROFICIENCY",
        "type": "enum",
        "name": "WEAPON_PROFICIENCY_AVERAGE",
        "typing": "1"
      },
      {
        "comments": [
          "@param WEAPON_PROFICIENCY_GOOD - The NPC will sometimes miss their shots."
        ],
        "context": "WEAPON_PROFICIENCY",
        "type": "enum",
        "name": "WEAPON_PROFICIENCY_GOOD",
        "typing": "2"
      },
      {
        "comments": [
          "@param WEAPON_PROFICIENCY_VERY_GOOD - The NPC will rarely miss their shots."
        ],
        "context": "WEAPON_PROFICIENCY",
        "type": "enum",
        "name": "WEAPON_PROFICIENCY_VERY_GOOD",
        "typing": "3"
      },
      {
        "comments": [
          "@param WEAPON_PROFICIENCY_PERFECT - The NPC will almost never miss their shots."
        ],
        "context": "WEAPON_PROFICIENCY",
        "type": "enum",
        "name": "WEAPON_PROFICIENCY_PERFECT",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/USE",
      "@enum USE",
      "@description Enumerations used by @EntityHooks:Use.\nNot to be confused with @_USE enum used by @EntityFuncs:SetUseType.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "USE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param USE_OFF - no description"
        ],
        "context": "USE",
        "type": "enum",
        "name": "USE_OFF",
        "typing": "0"
      },
      {
        "comments": [
          "@param USE_ON - no description"
        ],
        "context": "USE",
        "type": "enum",
        "name": "USE_ON",
        "typing": "1"
      },
      {
        "comments": [
          "@param USE_SET - no description"
        ],
        "context": "USE",
        "type": "enum",
        "name": "USE_SET",
        "typing": "2"
      },
      {
        "comments": [
          "@param USE_TOGGLE - no description"
        ],
        "context": "USE",
        "type": "enum",
        "name": "USE_TOGGLE",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/TYPE",
      "@note This doesn't actually represent a unique type returned by @TypeID function, but instead is a hack for networking colors with @net.WriteType.",
      "@enum TYPE",
      "@description Enumerations used by @net.ReadType and returned by @TypeID function",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "TYPE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param TYPE_NONE - Invalid type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_NONE",
        "typing": "-1"
      },
      {
        "comments": [
          "@param TYPE_INVALID - no description"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_INVALID",
        "typing": "-1"
      },
      {
        "comments": [
          "@param TYPE_NIL - @nil type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_NIL",
        "typing": "0"
      },
      {
        "comments": [
          "@param TYPE_BOOL - @boolean type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_BOOL",
        "typing": "1"
      },
      {
        "comments": [
          "@param TYPE_LIGHTUSERDATA - @light userdata type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_LIGHTUSERDATA",
        "typing": "2"
      },
      {
        "comments": [
          "@param TYPE_NUMBER - @number type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_NUMBER",
        "typing": "3"
      },
      {
        "comments": [
          "@param TYPE_STRING - @string type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_STRING",
        "typing": "4"
      },
      {
        "comments": [
          "@param TYPE_TABLE - @table type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_TABLE",
        "typing": "5"
      },
      {
        "comments": [
          "@param TYPE_FUNCTION - @function type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_FUNCTION",
        "typing": "6"
      },
      {
        "comments": [
          "@param TYPE_USERDATA - @userdata type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_USERDATA",
        "typing": "7"
      },
      {
        "comments": [
          "@param TYPE_THREAD - @thread type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_THREAD",
        "typing": "8"
      },
      {
        "comments": [
          "@param TYPE_ENTITY - @Entity type and entity sub-classes including @Player type, @Weapon type, @NPC type, @Vehicle type, @CSEnt type, and @NextBot type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_ENTITY",
        "typing": "9"
      },
      {
        "comments": [
          "@param TYPE_VECTOR - @Vector type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_VECTOR",
        "typing": "10"
      },
      {
        "comments": [
          "@param TYPE_ANGLE - @Angle type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_ANGLE",
        "typing": "11"
      },
      {
        "comments": [
          "@param TYPE_PHYSOBJ - @PhysObj type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_PHYSOBJ",
        "typing": "12"
      },
      {
        "comments": [
          "@param TYPE_SAVE - @ISave type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_SAVE",
        "typing": "13"
      },
      {
        "comments": [
          "@param TYPE_RESTORE - @IRestore type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_RESTORE",
        "typing": "14"
      },
      {
        "comments": [
          "@param TYPE_DAMAGEINFO - @CTakeDamageInfo type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_DAMAGEINFO",
        "typing": "15"
      },
      {
        "comments": [
          "@param TYPE_EFFECTDATA - @CEffectData type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_EFFECTDATA",
        "typing": "16"
      },
      {
        "comments": [
          "@param TYPE_MOVEDATA - @CMoveData type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_MOVEDATA",
        "typing": "17"
      },
      {
        "comments": [
          "@param TYPE_RECIPIENTFILTER - @CRecipientFilter type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_RECIPIENTFILTER",
        "typing": "18"
      },
      {
        "comments": [
          "@param TYPE_USERCMD - @CUserCmd type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_USERCMD",
        "typing": "19"
      },
      {
        "comments": [
          "@param TYPE_SCRIPTEDVEHICLE - no description"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_SCRIPTEDVEHICLE",
        "typing": "20"
      },
      {
        "comments": [
          "@param TYPE_MATERIAL - @IMaterial type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_MATERIAL",
        "typing": "21"
      },
      {
        "comments": [
          "@param TYPE_PANEL - @Panel type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_PANEL",
        "typing": "22"
      },
      {
        "comments": [
          "@param TYPE_PARTICLE - @CLuaParticle type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_PARTICLE",
        "typing": "23"
      },
      {
        "comments": [
          "@param TYPE_PARTICLEEMITTER - @CLuaEmitter type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_PARTICLEEMITTER",
        "typing": "24"
      },
      {
        "comments": [
          "@param TYPE_TEXTURE - @ITexture type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_TEXTURE",
        "typing": "25"
      },
      {
        "comments": [
          "@param TYPE_USERMSG - @bf_read type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_USERMSG",
        "typing": "26"
      },
      {
        "comments": [
          "@param TYPE_CONVAR - @ConVar type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_CONVAR",
        "typing": "27"
      },
      {
        "comments": [
          "@param TYPE_IMESH - @IMesh type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_IMESH",
        "typing": "28"
      },
      {
        "comments": [
          "@param TYPE_MATRIX - @VMatrix type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_MATRIX",
        "typing": "29"
      },
      {
        "comments": [
          "@param TYPE_SOUND - @CSoundPatch type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_SOUND",
        "typing": "30"
      },
      {
        "comments": [
          "@param TYPE_PIXELVISHANDLE - @pixelvis_handle_t type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_PIXELVISHANDLE",
        "typing": "31"
      },
      {
        "comments": [
          "@param TYPE_DLIGHT - dlight_t. Metatable of a @DynamicLight structure"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_DLIGHT",
        "typing": "32"
      },
      {
        "comments": [
          "@param TYPE_VIDEO - @IVideoWriter type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_VIDEO",
        "typing": "33"
      },
      {
        "comments": [
          "@param TYPE_FILE - @File type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_FILE",
        "typing": "34"
      },
      {
        "comments": [
          "@param TYPE_LOCOMOTION - @CLuaLocomotion type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_LOCOMOTION",
        "typing": "35"
      },
      {
        "comments": [
          "@param TYPE_PATH - @PathFollower type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_PATH",
        "typing": "36"
      },
      {
        "comments": [
          "@param TYPE_NAVAREA - @CNavArea type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_NAVAREA",
        "typing": "37"
      },
      {
        "comments": [
          "@param TYPE_SOUNDHANDLE - @IGModAudioChannel type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_SOUNDHANDLE",
        "typing": "38"
      },
      {
        "comments": [
          "@param TYPE_NAVLADDER - @CNavLadder type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_NAVLADDER",
        "typing": "39"
      },
      {
        "comments": [
          "@param TYPE_PARTICLESYSTEM - @CNewParticleEffect type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_PARTICLESYSTEM",
        "typing": "40"
      },
      {
        "comments": [
          "@param TYPE_PROJECTEDTEXTURE - @ProjectedTexture type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_PROJECTEDTEXTURE",
        "typing": "41"
      },
      {
        "comments": [
          "@param TYPE_PHYSCOLLIDE - @PhysCollide type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_PHYSCOLLIDE",
        "typing": "42"
      },
      {
        "comments": [
          "@param TYPE_SURFACEINFO - @SurfaceInfo type"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_SURFACEINFO",
        "typing": "43"
      },
      {
        "comments": [
          "@param TYPE_COUNT - Amount of TYPE_* enums"
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_COUNT",
        "typing": "44"
      },
      {
        "comments": [
          "@param TYPE_COLOR - Metatable of a @IColor structure."
        ],
        "context": "TYPE",
        "type": "enum",
        "name": "TYPE_COLOR",
        "typing": "255"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/TRANSMIT",
      "@enum TRANSMIT",
      "@description Enumerations used in @EntityHooks:UpdateTransmitState hook.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "TRANSMIT",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param TRANSMIT_ALWAYS - Always transmit the entity"
        ],
        "context": "TRANSMIT",
        "type": "enum",
        "name": "TRANSMIT_ALWAYS",
        "typing": "0"
      },
      {
        "comments": [
          "@param TRANSMIT_NEVER - Never transmit the entity, default for point entities"
        ],
        "context": "TRANSMIT",
        "type": "enum",
        "name": "TRANSMIT_NEVER",
        "typing": "1"
      },
      {
        "comments": [
          "@param TRANSMIT_PVS - Transmit when entity is in players view"
        ],
        "context": "TRANSMIT",
        "type": "enum",
        "name": "TRANSMIT_PVS",
        "typing": "2"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/TRACER",
      "@enum TRACER",
      "@description Enumerations used by @AmmoData structure.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "TRACER",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param TRACER_NONE - Generates no tracer effects"
        ],
        "context": "TRACER",
        "type": "enum",
        "name": "TRACER_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param TRACER_LINE - Generates tracer effects"
        ],
        "context": "TRACER",
        "type": "enum",
        "name": "TRACER_LINE",
        "typing": "1"
      },
      {
        "comments": [
          "@param TRACER_RAIL - Unused."
        ],
        "context": "TRACER",
        "type": "enum",
        "name": "TRACER_RAIL",
        "typing": "2"
      },
      {
        "comments": [
          "@param TRACER_BEAM - Unused."
        ],
        "context": "TRACER",
        "type": "enum",
        "name": "TRACER_BEAM",
        "typing": "3"
      },
      {
        "comments": [
          "@param TRACER_LINE_AND_WHIZ - Generates tracer and makes whizzing noises if the bullet flies past the player being shot at"
        ],
        "context": "TRACER",
        "type": "enum",
        "name": "TRACER_LINE_AND_WHIZ",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/TEXT ALIGN",
      "@enum TEXT_ALIGN",
      "@description Enumerations used by @draw.SimpleText, @draw.DrawText and in @TextData structure.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "TEXT_ALIGN",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param TEXT_ALIGN_LEFT - Align the text on the left"
        ],
        "context": "TEXT_ALIGN",
        "type": "enum",
        "name": "TEXT_ALIGN_LEFT",
        "typing": "0"
      },
      {
        "comments": [
          "@param TEXT_ALIGN_CENTER - Align the text in center"
        ],
        "context": "TEXT_ALIGN",
        "type": "enum",
        "name": "TEXT_ALIGN_CENTER",
        "typing": "1"
      },
      {
        "comments": [
          "@param TEXT_ALIGN_RIGHT - Align the text on the right"
        ],
        "context": "TEXT_ALIGN",
        "type": "enum",
        "name": "TEXT_ALIGN_RIGHT",
        "typing": "2"
      },
      {
        "comments": [
          "@param TEXT_ALIGN_TOP - Align the text on the top"
        ],
        "context": "TEXT_ALIGN",
        "type": "enum",
        "name": "TEXT_ALIGN_TOP",
        "typing": "3"
      },
      {
        "comments": [
          "@param TEXT_ALIGN_BOTTOM - Align the text on the bottom"
        ],
        "context": "TEXT_ALIGN",
        "type": "enum",
        "name": "TEXT_ALIGN_BOTTOM",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/TEXTUREFLAGS",
      "@warning These enumerations do not exist in the game and are listed here purely for reference purposes only.",
      "@enum TEXTUREFLAGS",
      "@description Bit flags used by @GetRenderTargetEx function. Clientside only. Information taken from [here](https://developer.valvesoftware.com/wiki/Valve_Texture_Format#Image_flags)",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "TEXTUREFLAGS",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param TEXTUREFLAGS_POINTSAMPLE - Low quality, \"pixel art\" texture filtering."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_POINTSAMPLE",
        "typing": "1"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_TRILINEAR - Medium quality texture filtering."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_TRILINEAR",
        "typing": "2"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_CLAMPS - Clamp S coordinates."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_CLAMPS",
        "typing": "4"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_CLAMPT - Clamp T coordinates."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_CLAMPT",
        "typing": "8"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_ANISOTROPIC - High quality texture filtering."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_ANISOTROPIC",
        "typing": "16"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_HINT_DXT5 - Used in skyboxes. Makes sure edges are seamless."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_HINT_DXT5",
        "typing": "32"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_PWL_CORRECTED - Purpose unknown."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_PWL_CORRECTED",
        "typing": "64"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_NORMAL - Texture is a normal map."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_NORMAL",
        "typing": "128"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_NOMIP - Render largest mipmap only. (Does not delete existing mipmaps, just disables them.)"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_NOMIP",
        "typing": "256"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_NOLOD - Not affected by texture resolution settings."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_NOLOD",
        "typing": "512"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_ALL_MIPS - No Minimum Mipmap"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_ALL_MIPS",
        "typing": "1024"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_PROCEDURAL - Texture is an procedural texture (code can modify it)."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_PROCEDURAL",
        "typing": "2048"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_ONEBITALPHA - One bit alpha channel used."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_ONEBITALPHA",
        "typing": "4096"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_EIGHTBITALPHA - Eight bit alpha channel used."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_EIGHTBITALPHA",
        "typing": "8192"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_ENVMAP - Texture is an environment map."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_ENVMAP",
        "typing": "16384"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_RENDERTARGET - Texture is a render target."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_RENDERTARGET",
        "typing": "32768"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_DEPTHRENDERTARGET - Texture is a depth render target."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_DEPTHRENDERTARGET",
        "typing": "65536"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_NODEBUGOVERRIDE - no description"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_NODEBUGOVERRIDE",
        "typing": "131072"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_SINGLECOPY - no description"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_SINGLECOPY",
        "typing": "262144"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_UNUSED_00080000 - no description"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_UNUSED_00080000",
        "typing": "524288"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_IMMEDIATE_CLEANUP - Immediately destroy this texture when its reference count hits zero\n(aka TEXTUREFLAGS_UNUSED_00100000)"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_IMMEDIATE_CLEANUP",
        "typing": "1048576"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_UNUSED_00200000 - no description"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_UNUSED_00200000",
        "typing": "2097152"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_UNUSED_00400000 - no description"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_UNUSED_00400000",
        "typing": "4194304"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_NODEPTHBUFFER - Do not buffer for Video Processing, generally render distance."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_NODEPTHBUFFER",
        "typing": "8388608"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_UNUSED_01000000 - no description"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_UNUSED_01000000",
        "typing": "16777216"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_CLAMPU - Clamp U coordinates (for volumetric textures)."
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_CLAMPU",
        "typing": "33554432"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_VERTEXTEXTURE - Usable as a vertex texture"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_VERTEXTEXTURE",
        "typing": "67108864"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_SSBUMP - Texture is a SSBump. (SSB)"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_SSBUMP",
        "typing": "134217728"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_UNUSED_10000000 - no description"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_UNUSED_10000000",
        "typing": "268435456"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_BORDER - Clamp to border colour on all texture coordinates"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_BORDER",
        "typing": "536870912"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_UNUSED_40000000 - no description"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_UNUSED_40000000",
        "typing": "1073741824"
      },
      {
        "comments": [
          "@param TEXTUREFLAGS_UNUSED_80000000 - no description"
        ],
        "context": "TEXTUREFLAGS",
        "type": "enum",
        "name": "TEXTUREFLAGS_UNUSED_80000000",
        "typing": "2147483648"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/TEXFILTER",
      "@enum TEXFILTER",
      "@description Enumerations used by @render.PushFilterMin and @render.PushFilterMag.\nSee [this](https://msdn.microsoft.com/en-us/library/windows/desktop/bb172615(v=vs.85).aspx) and [this page](https://en.wikipedia.org/wiki/Texture_filtering) for more information on texture filtering."
    ],
    "type": "enum",
    "context": "Enums",
    "name": "TEXFILTER",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param NONE - no description"
        ],
        "context": "TEXFILTER",
        "type": "enum",
        "name": "NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param POINT - no description"
        ],
        "context": "TEXFILTER",
        "type": "enum",
        "name": "POINT",
        "typing": "1"
      },
      {
        "comments": [
          "@param LINEAR - no description"
        ],
        "context": "TEXFILTER",
        "type": "enum",
        "name": "LINEAR",
        "typing": "2"
      },
      {
        "comments": [
          "@param ANISOTROPIC - no description"
        ],
        "context": "TEXFILTER",
        "type": "enum",
        "name": "ANISOTROPIC",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/TEAM",
      "@enum TEAM",
      "@description Default defined teams in Garry's Mod. This does not include any custom teams created in custom gamemodes. Enumerations to use with @Player:Team",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "TEAM",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param TEAM_CONNECTING - Connecting team ID, set when player connects to the server"
        ],
        "context": "TEAM",
        "type": "enum",
        "name": "TEAM_CONNECTING",
        "typing": "0"
      },
      {
        "comments": [
          "@param TEAM_UNASSIGNED - Unassigned team ID, set right after player connected"
        ],
        "context": "TEAM",
        "type": "enum",
        "name": "TEAM_UNASSIGNED",
        "typing": "1001"
      },
      {
        "comments": [
          "@param TEAM_SPECTATOR - Spectator team ID"
        ],
        "context": "TEAM",
        "type": "enum",
        "name": "TEAM_SPECTATOR",
        "typing": "1002"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/SURF",
      "@enum SURF",
      "@description Surface flags, used by the @TraceResult structure.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "SURF",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param SURF_LIGHT - Value will hold the light strength"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_LIGHT",
        "typing": "1"
      },
      {
        "comments": [
          "@param SURF_SKY2D - The surface is a 2D skybox"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_SKY2D",
        "typing": "2"
      },
      {
        "comments": [
          "@param SURF_SKY - This surface is a skybox, equivalent to HitSky in @TraceResult structure"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_SKY",
        "typing": "4"
      },
      {
        "comments": [
          "@param SURF_WARP - This surface is animated water"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_WARP",
        "typing": "8"
      },
      {
        "comments": [
          "@param SURF_TRANS - This surface is translucent"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_TRANS",
        "typing": "16"
      },
      {
        "comments": [
          "@param SURF_NOPORTAL - This surface cannot have portals placed on, used by Portal's gun"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_NOPORTAL",
        "typing": "32"
      },
      {
        "comments": [
          "@param SURF_TRIGGER - This surface is a trigger"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_TRIGGER",
        "typing": "64"
      },
      {
        "comments": [
          "@param SURF_NODRAW - This surface is an invisible entity, equivalent to HitNoDraw in @TraceResult structure"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_NODRAW",
        "typing": "128"
      },
      {
        "comments": [
          "@param SURF_HINT - Make a primary bsp splitter"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_HINT",
        "typing": "256"
      },
      {
        "comments": [
          "@param SURF_SKIP - This surface can be ignored by impact effects"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_SKIP",
        "typing": "512"
      },
      {
        "comments": [
          "@param SURF_NOLIGHT - This surface has no lights calculated"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_NOLIGHT",
        "typing": "1024"
      },
      {
        "comments": [
          "@param SURF_BUMPLIGHT - Calculate three lightmaps for the surface for bumpmapping"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_BUMPLIGHT",
        "typing": "2048"
      },
      {
        "comments": [
          "@param SURF_NOSHADOWS - No shadows are cast on this surface"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_NOSHADOWS",
        "typing": "4096"
      },
      {
        "comments": [
          "@param SURF_NODECALS - No decals are applied to this surface"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_NODECALS",
        "typing": "8192"
      },
      {
        "comments": [
          "@param SURF_NOCHOP - Don't subdivide patches on this surface"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_NOCHOP",
        "typing": "16384"
      },
      {
        "comments": [
          "@param SURF_HITBOX - This surface is part of an entity's hitbox"
        ],
        "context": "SURF",
        "type": "enum",
        "name": "SURF_HITBOX",
        "typing": "32768"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/STUDIO",
      "@enum STUDIO",
      "@description Used by @EntityHooks:Draw and @EntityHooks:DrawTranslucent.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "STUDIO",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param STUDIO_RENDER - no description"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_RENDER",
        "typing": "1"
      },
      {
        "comments": [
          "@param STUDIO_VIEWXFORMATTACHMENTS - no description"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_VIEWXFORMATTACHMENTS",
        "typing": "2"
      },
      {
        "comments": [
          "@param STUDIO_DRAWTRANSLUCENTSUBMODELS - no description"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_DRAWTRANSLUCENTSUBMODELS",
        "typing": "4"
      },
      {
        "comments": [
          "@param STUDIO_TWOPASS - no description"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_TWOPASS",
        "typing": "8"
      },
      {
        "comments": [
          "@param STUDIO_STATIC_LIGHTING - no description"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_STATIC_LIGHTING",
        "typing": "16"
      },
      {
        "comments": [
          "@param STUDIO_WIREFRAME - no description"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_WIREFRAME",
        "typing": "32"
      },
      {
        "comments": [
          "@param STUDIO_ITEM_BLINK - no description"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_ITEM_BLINK",
        "typing": "64"
      },
      {
        "comments": [
          "@param STUDIO_NOSHADOWS - no description"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_NOSHADOWS",
        "typing": "128"
      },
      {
        "comments": [
          "@param STUDIO_WIREFRAME_VCOLLIDE - no description"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_WIREFRAME_VCOLLIDE",
        "typing": "256"
      },
      {
        "comments": [
          "@param STUDIO_GENERATE_STATS - Not a studio flag, but used to flag when we want studio stats"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_GENERATE_STATS",
        "typing": "16777216"
      },
      {
        "comments": [
          "@param STUDIO_SSAODEPTHTEXTURE - Not a studio flag, but used to flag model as using shadow depth material override"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_SSAODEPTHTEXTURE",
        "typing": "134217728"
      },
      {
        "comments": [
          "@param STUDIO_SHADOWDEPTHTEXTURE - Not a studio flag, but used to flag model as using shadow depth material override"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_SHADOWDEPTHTEXTURE",
        "typing": "1073741824"
      },
      {
        "comments": [
          "@param STUDIO_TRANSPARENCY - Not a studio flag, but used to flag model as a non-sorting brush model"
        ],
        "context": "STUDIO",
        "type": "enum",
        "name": "STUDIO_TRANSPARENCY",
        "typing": "2147483648"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/STEPSOUNDTIME",
      "@enum STEPSOUNDTIME",
      "@description Enumerations used in @GamemodeHooks:PlayerStepSoundTime hook.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "STEPSOUNDTIME",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param STEPSOUNDTIME_NORMAL - Normal step"
        ],
        "context": "STEPSOUNDTIME",
        "type": "enum",
        "name": "STEPSOUNDTIME_NORMAL",
        "typing": "0"
      },
      {
        "comments": [
          "@param STEPSOUNDTIME_ON_LADDER - Step on ladder"
        ],
        "context": "STEPSOUNDTIME",
        "type": "enum",
        "name": "STEPSOUNDTIME_ON_LADDER",
        "typing": "1"
      },
      {
        "comments": [
          "@param STEPSOUNDTIME_WATER_KNEE - Step in water, with water reaching knee"
        ],
        "context": "STEPSOUNDTIME",
        "type": "enum",
        "name": "STEPSOUNDTIME_WATER_KNEE",
        "typing": "2"
      },
      {
        "comments": [
          "@param STEPSOUNDTIME_WATER_FOOT - Step in water, with water reaching foot"
        ],
        "context": "STEPSOUNDTIME",
        "type": "enum",
        "name": "STEPSOUNDTIME_WATER_FOOT",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/STENCILOPERATION",
      "@note These enumerations are also mirrored as @STENCIL enum.",
      "@enum STENCILOPERATION",
      "@description Enumerations for use with @render.SetStencilPassOperation, @render.SetStencilFailOperation and @render.SetStencilZFailOperation. Clientside only.\nThese enumerations are mirrors of @STENCILOPERATION enum.\nAlso see this corresponding MSDN entry: http://msdn.microsoft.com/en-us/library/windows/desktop/ff476219%28v=vs.85%29.aspx.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "STENCILOPERATION",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param STENCILOPERATION_KEEP - Preserves the existing stencil buffer value."
        ],
        "context": "STENCILOPERATION",
        "type": "enum",
        "name": "STENCILOPERATION_KEEP",
        "typing": "1"
      },
      {
        "comments": [
          "@param STENCILOPERATION_ZERO - Sets the value in the stencil buffer to 0."
        ],
        "context": "STENCILOPERATION",
        "type": "enum",
        "name": "STENCILOPERATION_ZERO",
        "typing": "2"
      },
      {
        "comments": [
          "@param STENCILOPERATION_REPLACE - Sets the value in the stencil buffer to the reference value, set using @render.SetStencilReferenceValue."
        ],
        "context": "STENCILOPERATION",
        "type": "enum",
        "name": "STENCILOPERATION_REPLACE",
        "typing": "3"
      },
      {
        "comments": [
          "@param STENCILOPERATION_INCRSAT - Increments the value in the stencil buffer by 1, clamping the result."
        ],
        "context": "STENCILOPERATION",
        "type": "enum",
        "name": "STENCILOPERATION_INCRSAT",
        "typing": "4"
      },
      {
        "comments": [
          "@param STENCILOPERATION_DECRSAT - Decrements the value in the stencil buffer by 1, clamping the result."
        ],
        "context": "STENCILOPERATION",
        "type": "enum",
        "name": "STENCILOPERATION_DECRSAT",
        "typing": "5"
      },
      {
        "comments": [
          "@param STENCILOPERATION_INVERT - Inverts the value in the stencil buffer."
        ],
        "context": "STENCILOPERATION",
        "type": "enum",
        "name": "STENCILOPERATION_INVERT",
        "typing": "6"
      },
      {
        "comments": [
          "@param STENCILOPERATION_INCR - Increments the value in the stencil buffer by 1, wrapping around on overflow."
        ],
        "context": "STENCILOPERATION",
        "type": "enum",
        "name": "STENCILOPERATION_INCR",
        "typing": "7"
      },
      {
        "comments": [
          "@param STENCILOPERATION_DECR - Decrements the value in the stencil buffer by 1, wrapping around on overflow."
        ],
        "context": "STENCILOPERATION",
        "type": "enum",
        "name": "STENCILOPERATION_DECR",
        "typing": "8"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/STENCILCOMPARISONFUNCTION",
      "@note These enumerations are also mirrored as @STENCIL enum.",
      "@enum STENCILCOMPARISONFUNCTION",
      "@description Enumerations for use with @render.SetStencilCompareFunction.\nThe comparison is between the reference value set by @render.SetStencilReferenceValue, and the value of each pixel in the stencil buffer.\nClientside only.\nThese enumerations are mirrors of @STENCILCOMPARISONFUNCTION enum.\nAlso see this corresponding MSDN entry: http://msdn.microsoft.com/en-us/library/windows/desktop/ff476101%28v=vs.85%29.aspx.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "STENCILCOMPARISONFUNCTION",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param STENCILCOMPARISONFUNCTION_NEVER - Never passes."
        ],
        "context": "STENCILCOMPARISONFUNCTION",
        "type": "enum",
        "name": "STENCILCOMPARISONFUNCTION_NEVER",
        "typing": "1"
      },
      {
        "comments": [
          "@param STENCILCOMPARISONFUNCTION_LESS - Passes where the reference value is less than the stencil value."
        ],
        "context": "STENCILCOMPARISONFUNCTION",
        "type": "enum",
        "name": "STENCILCOMPARISONFUNCTION_LESS",
        "typing": "2"
      },
      {
        "comments": [
          "@param STENCILCOMPARISONFUNCTION_EQUAL - Passes where the reference value is equal to the stencil value."
        ],
        "context": "STENCILCOMPARISONFUNCTION",
        "type": "enum",
        "name": "STENCILCOMPARISONFUNCTION_EQUAL",
        "typing": "3"
      },
      {
        "comments": [
          "@param STENCILCOMPARISONFUNCTION_LESSEQUAL - Passes where the reference value is less than or equal to the stencil value."
        ],
        "context": "STENCILCOMPARISONFUNCTION",
        "type": "enum",
        "name": "STENCILCOMPARISONFUNCTION_LESSEQUAL",
        "typing": "4"
      },
      {
        "comments": [
          "@param STENCILCOMPARISONFUNCTION_GREATER - Passes where the reference value is greater than the stencil value."
        ],
        "context": "STENCILCOMPARISONFUNCTION",
        "type": "enum",
        "name": "STENCILCOMPARISONFUNCTION_GREATER",
        "typing": "5"
      },
      {
        "comments": [
          "@param STENCILCOMPARISONFUNCTION_NOTEQUAL - Passes where the reference value is not equal to the stencil value."
        ],
        "context": "STENCILCOMPARISONFUNCTION",
        "type": "enum",
        "name": "STENCILCOMPARISONFUNCTION_NOTEQUAL",
        "typing": "6"
      },
      {
        "comments": [
          "@param STENCILCOMPARISONFUNCTION_GREATEREQUAL - Passes where the reference value is greater than or equal to the stencil value."
        ],
        "context": "STENCILCOMPARISONFUNCTION",
        "type": "enum",
        "name": "STENCILCOMPARISONFUNCTION_GREATEREQUAL",
        "typing": "7"
      },
      {
        "comments": [
          "@param STENCILCOMPARISONFUNCTION_ALWAYS - Always passes."
        ],
        "context": "STENCILCOMPARISONFUNCTION",
        "type": "enum",
        "name": "STENCILCOMPARISONFUNCTION_ALWAYS",
        "typing": "8"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/SOLID",
      "@note No Physics Object will be created when using this.",
      "@note Seems to be broken.",
      "@enum SOLID",
      "@description For use with @EntityFuncs:PhysicsInit, @EntityFuncs:SetSolid and @EntityFuncs:GetSolid.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "SOLID",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param SOLID_NONE - Does not collide with anything"
        ],
        "context": "SOLID",
        "type": "enum",
        "name": "SOLID_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param SOLID_BSP - The entity has a brush model defined by the map. Does not collide with other SOLID_BSP entities."
        ],
        "context": "SOLID",
        "type": "enum",
        "name": "SOLID_BSP",
        "typing": "1"
      },
      {
        "comments": [
          "@param SOLID_BBOX - Uses the entity's axis-aligned bounding box for collisions"
        ],
        "context": "SOLID",
        "type": "enum",
        "name": "SOLID_BBOX",
        "typing": "2"
      },
      {
        "comments": [
          "@param SOLID_OBB - Uses the entity's object-aligned bounding box for collisions"
        ],
        "context": "SOLID",
        "type": "enum",
        "name": "SOLID_OBB",
        "typing": "3"
      },
      {
        "comments": [
          "@param SOLID_OBB_YAW - Same as SOLID_OBB but restricts orientation to the Z-axis"
        ],
        "context": "SOLID",
        "type": "enum",
        "name": "SOLID_OBB_YAW",
        "typing": "4"
      },
      {
        "comments": [
          "@param SOLID_CUSTOM - Always call into the entity for tests"
        ],
        "context": "SOLID",
        "type": "enum",
        "name": "SOLID_CUSTOM",
        "typing": "5"
      },
      {
        "comments": [
          "@param SOLID_VPHYSICS - Uses the @PhysObj typeects of the entity"
        ],
        "context": "SOLID",
        "type": "enum",
        "name": "SOLID_VPHYSICS",
        "typing": "6"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/SNDLVL",
      "@validate",
      "@warning These enumerations do not exist in the game and are listed here purely for reference purposes only.",
      "@enum SNDLVL",
      "@description The sound's attenuation; how fast it drops away, enumerations used by @EmitSound function and @EntityFuncs:EmitSound.\nThe engine starts running into trouble below 60dB.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "SNDLVL",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param SNDLVL_NONE - Sound plays everywhere"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param SNDLVL_20dB - Rustling leaves"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_20dB",
        "typing": "20"
      },
      {
        "comments": [
          "@param SNDLVL_25dB - Whispering"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_25dB",
        "typing": "25"
      },
      {
        "comments": [
          "@param SNDLVL_30dB - Library"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_30dB",
        "typing": "30"
      },
      {
        "comments": [
          "@param SNDLVL_35dB - no description"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_35dB",
        "typing": "35"
      },
      {
        "comments": [
          "@param SNDLVL_40dB - no description"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_40dB",
        "typing": "40"
      },
      {
        "comments": [
          "@param SNDLVL_45dB - Refrigerator"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_45dB",
        "typing": "45"
      },
      {
        "comments": [
          "@param SNDLVL_50dB - Average home"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_50dB",
        "typing": "50"
      },
      {
        "comments": [
          "@param SNDLVL_55dB - Stop the sound"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_55dB",
        "typing": "55"
      },
      {
        "comments": [
          "@param SNDLVL_60dBSNDLVL_IDLE - Normal conversation, clothes dryer"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_60dBSNDLVL_IDLE",
        "typing": "60"
      },
      {
        "comments": [
          "@param SNDLVL_65dB - Washing machine, dishwasher"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_65dB",
        "typing": "65"
      },
      {
        "comments": [
          "@param SNDLVL_STATIC - no description"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_STATIC",
        "typing": "66"
      },
      {
        "comments": [
          "@param SNDLVL_70dB - Car, vacuum cleaner, mixer, electric sewing machine"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_70dB",
        "typing": "70"
      },
      {
        "comments": [
          "@param SNDLVL_75dBSNDLVL_NORM - Busy traffic"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_75dBSNDLVL_NORM",
        "typing": "75"
      },
      {
        "comments": [
          "@param SNDLVL_80dBSNDLVL_TALKING - Mini-bike, alarm clock, noisy restaurant, office tabulator, outboard motor, passing snowmobile"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_80dBSNDLVL_TALKING",
        "typing": "80"
      },
      {
        "comments": [
          "@param SNDLVL_85dB - Average factory, electric shaver"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_85dB",
        "typing": "85"
      },
      {
        "comments": [
          "@param SNDLVL_90dB - Screaming child, passing motorcycle, convertible ride on freeway"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_90dB",
        "typing": "90"
      },
      {
        "comments": [
          "@param SNDLVL_95dB - no description"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_95dB",
        "typing": "95"
      },
      {
        "comments": [
          "@param SNDLVL_100dB - Subway train, diesel truck, woodworking shop, pneumatic drill, boiler shop, jackhammer"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_100dB",
        "typing": "100"
      },
      {
        "comments": [
          "@param SNDLVL_105dB - Helicopter, power mower"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_105dB",
        "typing": "105"
      },
      {
        "comments": [
          "@param SNDLVL_110dB - Snowmobile (drivers seat), inboard motorboat, sandblasting"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_110dB",
        "typing": "110"
      },
      {
        "comments": [
          "@param SNDLVL_120dB - Car horn, propeller aircraft"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_120dB",
        "typing": "120"
      },
      {
        "comments": [
          "@param SNDLVL_130dB - Air raid siren"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_130dB",
        "typing": "130"
      },
      {
        "comments": [
          "@param SNDLVL_140dBSNDLVL_GUNFIRE - Threshold of pain, gunshot, jet engine"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_140dBSNDLVL_GUNFIRE",
        "typing": "140"
      },
      {
        "comments": [
          "@param SNDLVL_150dB - no description"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_150dB",
        "typing": "150"
      },
      {
        "comments": [
          "@param SNDLVL_180dB - Rocket launching"
        ],
        "context": "SNDLVL",
        "type": "enum",
        "name": "SNDLVL_180dB",
        "typing": "180"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/SND",
      "@enum SND",
      "@description Sound flags used by @EmitSound function and @EntityFuncs:EmitSound.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "SND",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param SND_NOFLAGS - To keep the compiler happy"
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_NOFLAGS",
        "typing": "0"
      },
      {
        "comments": [
          "@param SND_CHANGE_VOL - Change sound vol"
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_CHANGE_VOL",
        "typing": "1"
      },
      {
        "comments": [
          "@param SND_CHANGE_PITCH - Change sound pitch"
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_CHANGE_PITCH",
        "typing": "2"
      },
      {
        "comments": [
          "@param SND_STOP - Stop the sound"
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_STOP",
        "typing": "4"
      },
      {
        "comments": [
          "@param SND_SPAWNING - We're spawning, used in some cases for ambients. Not sent over net, only a param between dll and server."
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_SPAWNING",
        "typing": "8"
      },
      {
        "comments": [
          "@param SND_DELAY - Sound has an initial delay"
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_DELAY",
        "typing": "16"
      },
      {
        "comments": [
          "@param SND_STOP_LOOPING - Stop all looping sounds on the entity."
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_STOP_LOOPING",
        "typing": "32"
      },
      {
        "comments": [
          "@param SND_SHOULDPAUSE - This sound should be paused if the game is paused"
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_SHOULDPAUSE",
        "typing": "128"
      },
      {
        "comments": [
          "@param SND_IGNORE_PHONEMES - no description"
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_IGNORE_PHONEMES",
        "typing": "256"
      },
      {
        "comments": [
          "@param SND_IGNORE_NAME - Used to change all sounds emitted by an entity, regardless of scriptname"
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_IGNORE_NAME",
        "typing": "512"
      },
      {
        "comments": [
          "@param SND_DO_NOT_OVERWRITE_EXISTING_ON_CHANNEL - no description"
        ],
        "context": "SND",
        "type": "enum",
        "name": "SND_DO_NOT_OVERWRITE_EXISTING_ON_CHANNEL",
        "typing": "1024"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/SIM",
      "@enum SIM",
      "@description Enumerations used by @EntityHooks:PhysicsSimulate.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "SIM",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param SIM_NOTHING - Don't simulate physics"
        ],
        "context": "SIM",
        "type": "enum",
        "name": "SIM_NOTHING",
        "typing": "0"
      },
      {
        "comments": [
          "@param SIM_LOCAL_ACCELERATION - Vectors in local coordinate system"
        ],
        "context": "SIM",
        "type": "enum",
        "name": "SIM_LOCAL_ACCELERATION",
        "typing": "1"
      },
      {
        "comments": [
          "@param SIM_LOCAL_FORCE - Vectors in local coordinate system"
        ],
        "context": "SIM",
        "type": "enum",
        "name": "SIM_LOCAL_FORCE",
        "typing": "2"
      },
      {
        "comments": [
          "@param SIM_GLOBAL_ACCELERATION - Vectors in world coordinate system"
        ],
        "context": "SIM",
        "type": "enum",
        "name": "SIM_GLOBAL_ACCELERATION",
        "typing": "3"
      },
      {
        "comments": [
          "@param SIM_GLOBAL_FORCE - Vectors in world coordinate system"
        ],
        "context": "SIM",
        "type": "enum",
        "name": "SIM_GLOBAL_FORCE",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/SF",
      "@note This is not a full list of available spawnflags, there are *a lot* more, each unique to each entity, you can find out more on the [Valve Developer Community](https://developer.valvesoftware.com/wiki/Main_Page) website for the entities in question.",
      "@enum SF",
      "@description Enumerations describing certain spawnflags. Everything except for SF_PHYS* is serverside only.\nSpawnflags are set using @EntityFuncs:SetKeyValue with **\"spawnflags\"** as the key.\n* SF_CITIZEN_* spawnflags represent spawnflags only usable on [npc_citizen](https://developer.valvesoftware.com/wiki/Npc_citizen).\n* SF_NPC_* - Usable on all NPCs\n* SF_PHYSBOX_* - Usable on [func_physbox](https://developer.valvesoftware.com/wiki/Func_physbox)\n* SF_PHYSPROP_* - Usable on [prop_physics](https://developer.valvesoftware.com/wiki/Prop_physics) entities",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "SF",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param SF_CITIZEN_AMMORESUPPLIER - Citizen that resupplies ammo"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_CITIZEN_AMMORESUPPLIER",
        "typing": "524288"
      },
      {
        "comments": [
          "@param SF_CITIZEN_FOLLOW - \"Follow the player as soon as I spawn\""
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_CITIZEN_FOLLOW",
        "typing": "65536"
      },
      {
        "comments": [
          "@param SF_CITIZEN_IGNORE_SEMAPHORE - \"Work outside the speech semaphore system\""
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_CITIZEN_IGNORE_SEMAPHORE",
        "typing": "2097152"
      },
      {
        "comments": [
          "@param SF_CITIZEN_MEDIC - Makes the citizen a medic"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_CITIZEN_MEDIC",
        "typing": "131072"
      },
      {
        "comments": [
          "@param SF_CITIZEN_NOT_COMMANDABLE - Citizen cannot join players squad, and will not able to be commanded by the Half-Life 2 command system for Citizens"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_CITIZEN_NOT_COMMANDABLE",
        "typing": "1048576"
      },
      {
        "comments": [
          "@param SF_CITIZEN_RANDOM_HEAD - Gives the citizen a random head"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_CITIZEN_RANDOM_HEAD",
        "typing": "262144"
      },
      {
        "comments": [
          "@param SF_CITIZEN_RANDOM_HEAD_FEMALE - Gives the citizen a random female head"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_CITIZEN_RANDOM_HEAD_FEMALE",
        "typing": "8388608"
      },
      {
        "comments": [
          "@param SF_CITIZEN_RANDOM_HEAD_MALE - Gives the citizen a random male head"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_CITIZEN_RANDOM_HEAD_MALE",
        "typing": "4194304"
      },
      {
        "comments": [
          "@param SF_CITIZEN_USE_RENDER_BOUNDS - \"Use render bounds instead of human hull for guys sitting in chairs, etc\". Must be set before Spawn() is called to take effect"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_CITIZEN_USE_RENDER_BOUNDS",
        "typing": "16777216"
      },
      {
        "comments": [
          "@param SF_FLOOR_TURRET_CITIZEN - Makes the floor turret friendly"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_FLOOR_TURRET_CITIZEN",
        "typing": "512"
      },
      {
        "comments": [
          "@param SF_NPC_ALTCOLLISION - Do Alternate collision for this NPC (player avoidance)"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_ALTCOLLISION",
        "typing": "4096"
      },
      {
        "comments": [
          "@param SF_NPC_ALWAYSTHINK - [Think outside PVS](https://developer.valvesoftware.com/wiki/NPC_Sensing)"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_ALWAYSTHINK",
        "typing": "1024"
      },
      {
        "comments": [
          "@param SF_NPC_DROP_HEALTHKIT - NPC Drops health kit when it dies"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_DROP_HEALTHKIT",
        "typing": "8"
      },
      {
        "comments": [
          "@param SF_NPC_FADE_CORPSE - Fade Corpse"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_FADE_CORPSE",
        "typing": "512"
      },
      {
        "comments": [
          "@param SF_NPC_FALL_TO_GROUND - If not set, means *teleport* to ground"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_FALL_TO_GROUND",
        "typing": "4"
      },
      {
        "comments": [
          "@param SF_NPC_GAG - No IDLE sounds until angry"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_GAG",
        "typing": "2"
      },
      {
        "comments": [
          "@param SF_NPC_LONG_RANGE - Long Visibility/Shoot"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_LONG_RANGE",
        "typing": "256"
      },
      {
        "comments": [
          "@param SF_NPC_NO_PLAYER_PUSHAWAY - Ignore player push - Don't give way to player"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_NO_PLAYER_PUSHAWAY",
        "typing": "16384"
      },
      {
        "comments": [
          "@param SF_NPC_NO_WEAPON_DROP - NPC Doesn't drop weapon on death"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_NO_WEAPON_DROP",
        "typing": "8192"
      },
      {
        "comments": [
          "@param SF_NPC_START_EFFICIENT - Don't acquire enemies or avoid obstacles"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_START_EFFICIENT",
        "typing": "16"
      },
      {
        "comments": [
          "@param SF_NPC_TEMPLATE - This entity is a template for the [npc_template_maker](https://developer.valvesoftware.com/wiki/Npc_template_maker). It will not spawn automatically and cannot be used with [point_template](https://developer.valvesoftware.com/wiki/Point_template)."
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_TEMPLATE",
        "typing": "2048"
      },
      {
        "comments": [
          "@param SF_NPC_WAIT_FOR_SCRIPT - Wait for script"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_WAIT_FOR_SCRIPT",
        "typing": "128"
      },
      {
        "comments": [
          "@param SF_NPC_WAIT_TILL_SEEN - Wait till seen"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_NPC_WAIT_TILL_SEEN",
        "typing": "1"
      },
      {
        "comments": [
          "@param SF_PHYSBOX_MOTIONDISABLED - If set, calls @PhysObj:EnableMotion( false ) on the func_physbox when the physics are created"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_PHYSBOX_MOTIONDISABLED",
        "typing": "32768"
      },
      {
        "comments": [
          "@param SF_PHYSBOX_NEVER_PICK_UP - Gravity gun is NOT allowed to pick this up."
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_PHYSBOX_NEVER_PICK_UP",
        "typing": "2097152"
      },
      {
        "comments": [
          "@param SF_PHYSPROP_MOTIONDISABLED - If set, calls @PhysObj:EnableMotion( false ) on the func_physbox when the physics are created. See [Physics optimization](https://developer.valvesoftware.com/wiki/Physics_optimization)"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_PHYSPROP_MOTIONDISABLED",
        "typing": "8"
      },
      {
        "comments": [
          "@param SF_PHYSPROP_PREVENT_PICKUP - Prevent that physbox from being picked up"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_PHYSPROP_PREVENT_PICKUP",
        "typing": "512"
      },
      {
        "comments": [
          "@param SF_ROLLERMINE_FRIENDLY - Makes the rollermine friendly"
        ],
        "context": "SF",
        "type": "enum",
        "name": "SF_ROLLERMINE_FRIENDLY",
        "typing": "65536"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/SENSORBONE",
      "@enum SENSORBONE",
      "@description Enumerations used by Kinect SDK bindings."
    ],
    "type": "enum",
    "context": "Enums",
    "name": "SENSORBONE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param SHOULDER_RIGHT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "SHOULDER_RIGHT",
        "typing": "8"
      },
      {
        "comments": [
          "@param SHOULDER_LEFT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "SHOULDER_LEFT",
        "typing": "4"
      },
      {
        "comments": [
          "@param HIP - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "HIP",
        "typing": "0"
      },
      {
        "comments": [
          "@param ELBOW_RIGHT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "ELBOW_RIGHT",
        "typing": "9"
      },
      {
        "comments": [
          "@param KNEE_RIGHT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "KNEE_RIGHT",
        "typing": "17"
      },
      {
        "comments": [
          "@param WRIST_RIGHT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "WRIST_RIGHT",
        "typing": "10"
      },
      {
        "comments": [
          "@param ANKLE_LEFT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "ANKLE_LEFT",
        "typing": "14"
      },
      {
        "comments": [
          "@param FOOT_LEFT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "FOOT_LEFT",
        "typing": "15"
      },
      {
        "comments": [
          "@param WRIST_LEFT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "WRIST_LEFT",
        "typing": "6"
      },
      {
        "comments": [
          "@param FOOT_RIGHT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "FOOT_RIGHT",
        "typing": "19"
      },
      {
        "comments": [
          "@param HAND_RIGHT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "HAND_RIGHT",
        "typing": "11"
      },
      {
        "comments": [
          "@param SHOULDER - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "SHOULDER",
        "typing": "2"
      },
      {
        "comments": [
          "@param HIP_LEFT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "HIP_LEFT",
        "typing": "12"
      },
      {
        "comments": [
          "@param HIP_RIGHT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "HIP_RIGHT",
        "typing": "16"
      },
      {
        "comments": [
          "@param HAND_LEFT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "HAND_LEFT",
        "typing": "7"
      },
      {
        "comments": [
          "@param ANKLE_RIGHT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "ANKLE_RIGHT",
        "typing": "18"
      },
      {
        "comments": [
          "@param SPINE - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "SPINE",
        "typing": "1"
      },
      {
        "comments": [
          "@param ELBOW_LEFT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "ELBOW_LEFT",
        "typing": "5"
      },
      {
        "comments": [
          "@param KNEE_LEFT - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "KNEE_LEFT",
        "typing": "13"
      },
      {
        "comments": [
          "@param HEAD - no description"
        ],
        "context": "SENSORBONE",
        "type": "enum",
        "name": "HEAD",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/SCREENFADE",
      "@enum SCREENFADE",
      "@description Enumerations used by @Player:ScreenFade."
    ],
    "type": "enum",
    "context": "Enums",
    "name": "SCREENFADE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param IN - Fade out after the hold time has passed"
        ],
        "context": "SCREENFADE",
        "type": "enum",
        "name": "IN",
        "typing": "1"
      },
      {
        "comments": [
          "@param OUT - Fade in, hold time passes, disappear"
        ],
        "context": "SCREENFADE",
        "type": "enum",
        "name": "OUT",
        "typing": "2"
      },
      {
        "comments": [
          "@param MODULATE - With white color, turns the screen black"
        ],
        "context": "SCREENFADE",
        "type": "enum",
        "name": "MODULATE",
        "typing": "4"
      },
      {
        "comments": [
          "@param STAYOUT - No effects, never disappear"
        ],
        "context": "SCREENFADE",
        "type": "enum",
        "name": "STAYOUT",
        "typing": "8"
      },
      {
        "comments": [
          "@param PURGE - Appear, Disappear, no effects"
        ],
        "context": "SCREENFADE",
        "type": "enum",
        "name": "PURGE",
        "typing": "16"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/SCHED",
      "@enum SCHED",
      "@description Enumerations for NPC schedules, used by @EntityHooks:StartEngineSchedule and @NPC:SetSchedule. Serverside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "SCHED",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param LAST_SHARED_SCHEDULE - The schedule enum limit"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "LAST_SHARED_SCHEDULE",
        "typing": "88"
      },
      {
        "comments": [
          "@param SCHED_AISCRIPT - Begins AI script based on NPC's *m_hCine* save value."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_AISCRIPT",
        "typing": "56"
      },
      {
        "comments": [
          "@param SCHED_ALERT_FACE - Idle stance and face ideal yaw angles."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_ALERT_FACE",
        "typing": "5"
      },
      {
        "comments": [
          "@param SCHED_ALERT_FACE_BESTSOUND - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_ALERT_FACE_BESTSOUND",
        "typing": "6"
      },
      {
        "comments": [
          "@param SCHED_ALERT_REACT_TO_COMBAT_SOUND - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_ALERT_REACT_TO_COMBAT_SOUND",
        "typing": "7"
      },
      {
        "comments": [
          "@param SCHED_ALERT_SCAN - Rotate 180 degrees and back to check for enemies."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_ALERT_SCAN",
        "typing": "8"
      },
      {
        "comments": [
          "@param SCHED_ALERT_STAND - Remain idle until an enemy is heard or found."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_ALERT_STAND",
        "typing": "9"
      },
      {
        "comments": [
          "@param SCHED_ALERT_WALK - Walk until an enemy is heard or found."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_ALERT_WALK",
        "typing": "10"
      },
      {
        "comments": [
          "@param SCHED_AMBUSH - Remain idle until provoked or an enemy is found."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_AMBUSH",
        "typing": "52"
      },
      {
        "comments": [
          "@param SCHED_ARM_WEAPON - Performs ACT_ARM."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_ARM_WEAPON",
        "typing": "48"
      },
      {
        "comments": [
          "@param SCHED_BACK_AWAY_FROM_ENEMY - Back away from enemy. If not possible to back away then go behind enemy."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_BACK_AWAY_FROM_ENEMY",
        "typing": "24"
      },
      {
        "comments": [
          "@param SCHED_BACK_AWAY_FROM_SAVE_POSITION - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_BACK_AWAY_FROM_SAVE_POSITION",
        "typing": "26"
      },
      {
        "comments": [
          "@param SCHED_BIG_FLINCH - Heavy damage was taken for the first time in a while."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_BIG_FLINCH",
        "typing": "23"
      },
      {
        "comments": [
          "@param SCHED_CHASE_ENEMY - Begin chasing an enemy."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_CHASE_ENEMY",
        "typing": "17"
      },
      {
        "comments": [
          "@param SCHED_CHASE_ENEMY_FAILED - Failed to chase enemy."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_CHASE_ENEMY_FAILED",
        "typing": "18"
      },
      {
        "comments": [
          "@param SCHED_COMBAT_FACE - Face current enemy."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_COMBAT_FACE",
        "typing": "12"
      },
      {
        "comments": [
          "@param SCHED_COMBAT_PATROL - Will walk around patrolling an area until an enemy is found."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_COMBAT_PATROL",
        "typing": "75"
      },
      {
        "comments": [
          "@param SCHED_COMBAT_STAND - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_COMBAT_STAND",
        "typing": "15"
      },
      {
        "comments": [
          "@param SCHED_COMBAT_SWEEP - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_COMBAT_SWEEP",
        "typing": "13"
      },
      {
        "comments": [
          "@param SCHED_COMBAT_WALK - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_COMBAT_WALK",
        "typing": "16"
      },
      {
        "comments": [
          "@param SCHED_COWER - When not moving, will perform ACT_COWER."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_COWER",
        "typing": "40"
      },
      {
        "comments": [
          "@param SCHED_DIE - Regular NPC death."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_DIE",
        "typing": "53"
      },
      {
        "comments": [
          "@param SCHED_DIE_RAGDOLL - Plays NPC death sound (doesn't kill NPC)."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_DIE_RAGDOLL",
        "typing": "54"
      },
      {
        "comments": [
          "@param SCHED_DISARM_WEAPON - Holsters active weapon. (Only works with NPC's that can holster weapons)"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_DISARM_WEAPON",
        "typing": "49"
      },
      {
        "comments": [
          "@param SCHED_DROPSHIP_DUSTOFF - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_DROPSHIP_DUSTOFF",
        "typing": "79"
      },
      {
        "comments": [
          "@param SCHED_DUCK_DODGE - Preform Ducking animation. (Only works with npc_alyx)"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_DUCK_DODGE",
        "typing": "84"
      },
      {
        "comments": [
          "@param SCHED_ESTABLISH_LINE_OF_FIRE - Search for a place to shoot current enemy."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_ESTABLISH_LINE_OF_FIRE",
        "typing": "35"
      },
      {
        "comments": [
          "@param SCHED_ESTABLISH_LINE_OF_FIRE_FALLBACK - Fallback from an established line of fire."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_ESTABLISH_LINE_OF_FIRE_FALLBACK",
        "typing": "36"
      },
      {
        "comments": [
          "@param SCHED_FAIL - Failed doing current schedule."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_FAIL",
        "typing": "81"
      },
      {
        "comments": [
          "@param SCHED_FAIL_ESTABLISH_LINE_OF_FIRE - Failed to establish a line of fire."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_FAIL_ESTABLISH_LINE_OF_FIRE",
        "typing": "38"
      },
      {
        "comments": [
          "@param SCHED_FAIL_NOSTOP - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_FAIL_NOSTOP",
        "typing": "82"
      },
      {
        "comments": [
          "@param SCHED_FAIL_TAKE_COVER - Failed to take cover."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_FAIL_TAKE_COVER",
        "typing": "31"
      },
      {
        "comments": [
          "@param SCHED_FALL_TO_GROUND - Fall to ground when in the air."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_FALL_TO_GROUND",
        "typing": "78"
      },
      {
        "comments": [
          "@param SCHED_FEAR_FACE - Will express fear face. (Only works on NPCs with expressions)"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_FEAR_FACE",
        "typing": "14"
      },
      {
        "comments": [
          "@param SCHED_FLEE_FROM_BEST_SOUND - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_FLEE_FROM_BEST_SOUND",
        "typing": "29"
      },
      {
        "comments": [
          "@param SCHED_FLINCH_PHYSICS - Plays ACT_FLINCH_PHYSICS."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_FLINCH_PHYSICS",
        "typing": "80"
      },
      {
        "comments": [
          "@param SCHED_FORCED_GO - Force walk to position (debug)."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_FORCED_GO",
        "typing": "71"
      },
      {
        "comments": [
          "@param SCHED_FORCED_GO_RUN - Force run to position (debug)."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_FORCED_GO_RUN",
        "typing": "72"
      },
      {
        "comments": [
          "@param SCHED_GET_HEALTHKIT - Pick up item if within a radius of 5 units."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_GET_HEALTHKIT",
        "typing": "66"
      },
      {
        "comments": [
          "@param SCHED_HIDE_AND_RELOAD - Take cover and reload weapon."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_HIDE_AND_RELOAD",
        "typing": "50"
      },
      {
        "comments": [
          "@param SCHED_IDLE_STAND - Idle stance"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_IDLE_STAND",
        "typing": "1"
      },
      {
        "comments": [
          "@param SCHED_IDLE_WALK - Walk to position."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_IDLE_WALK",
        "typing": "2"
      },
      {
        "comments": [
          "@param SCHED_IDLE_WANDER - Walk to random position within a radius of 200 units."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_IDLE_WANDER",
        "typing": "3"
      },
      {
        "comments": [
          "@param SCHED_INTERACTION_MOVE_TO_PARTNER - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_INTERACTION_MOVE_TO_PARTNER",
        "typing": "85"
      },
      {
        "comments": [
          "@param SCHED_INTERACTION_WAIT_FOR_PARTNER - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_INTERACTION_WAIT_FOR_PARTNER",
        "typing": "86"
      },
      {
        "comments": [
          "@param SCHED_INVESTIGATE_SOUND - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_INVESTIGATE_SOUND",
        "typing": "11"
      },
      {
        "comments": [
          "@param SCHED_MELEE_ATTACK1 - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_MELEE_ATTACK1",
        "typing": "41"
      },
      {
        "comments": [
          "@param SCHED_MELEE_ATTACK2 - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_MELEE_ATTACK2",
        "typing": "42"
      },
      {
        "comments": [
          "@param SCHED_MOVE_AWAY - Move away from player."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_MOVE_AWAY",
        "typing": "68"
      },
      {
        "comments": [
          "@param SCHED_MOVE_AWAY_END - Stop moving and continue enemy scan."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_MOVE_AWAY_END",
        "typing": "70"
      },
      {
        "comments": [
          "@param SCHED_MOVE_AWAY_FAIL - Failed to move away; stop moving."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_MOVE_AWAY_FAIL",
        "typing": "69"
      },
      {
        "comments": [
          "@param SCHED_MOVE_AWAY_FROM_ENEMY - Move away from enemy while facing it and checking for new enemies."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_MOVE_AWAY_FROM_ENEMY",
        "typing": "25"
      },
      {
        "comments": [
          "@param SCHED_MOVE_TO_WEAPON_RANGE - Move to the range the weapon is preferably used at."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_MOVE_TO_WEAPON_RANGE",
        "typing": "34"
      },
      {
        "comments": [
          "@param SCHED_NEW_WEAPON - Pick up a new weapon if within a radius of 5 units."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_NEW_WEAPON",
        "typing": "63"
      },
      {
        "comments": [
          "@param SCHED_NEW_WEAPON_CHEAT - Fail safe: Create the weapon that the NPC went to pick up if it was removed during pick up schedule."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_NEW_WEAPON_CHEAT",
        "typing": "64"
      },
      {
        "comments": [
          "@param SCHED_NONE - No schedule is being performed."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param SCHED_NPC_FREEZE - Prevents movement until COND_NPC_UNFREEZE(68) is set."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_NPC_FREEZE",
        "typing": "73"
      },
      {
        "comments": [
          "@param SCHED_PATROL_RUN - Run to random position and stop if enemy is heard or found."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_PATROL_RUN",
        "typing": "76"
      },
      {
        "comments": [
          "@param SCHED_PATROL_WALK - Walk to random position and stop if enemy is heard or found."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_PATROL_WALK",
        "typing": "74"
      },
      {
        "comments": [
          "@param SCHED_PRE_FAIL_ESTABLISH_LINE_OF_FIRE - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_PRE_FAIL_ESTABLISH_LINE_OF_FIRE",
        "typing": "37"
      },
      {
        "comments": [
          "@param SCHED_RANGE_ATTACK1 - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_RANGE_ATTACK1",
        "typing": "43"
      },
      {
        "comments": [
          "@param SCHED_RANGE_ATTACK2 - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_RANGE_ATTACK2",
        "typing": "44"
      },
      {
        "comments": [
          "@param SCHED_RELOAD - Stop moving and reload until danger is heard."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_RELOAD",
        "typing": "51"
      },
      {
        "comments": [
          "@param SCHED_RUN_FROM_ENEMY - Retreat from the established enemy."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_RUN_FROM_ENEMY",
        "typing": "32"
      },
      {
        "comments": [
          "@param SCHED_RUN_FROM_ENEMY_FALLBACK - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_RUN_FROM_ENEMY_FALLBACK",
        "typing": "33"
      },
      {
        "comments": [
          "@param SCHED_RUN_FROM_ENEMY_MOB - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_RUN_FROM_ENEMY_MOB",
        "typing": "83"
      },
      {
        "comments": [
          "@param SCHED_RUN_RANDOM - Run to random position within a radius of 500 units."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_RUN_RANDOM",
        "typing": "77"
      },
      {
        "comments": [
          "@param SCHED_SCENE_GENERIC - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SCENE_GENERIC",
        "typing": "62"
      },
      {
        "comments": [
          "@param SCHED_SCRIPTED_CUSTOM_MOVE - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SCRIPTED_CUSTOM_MOVE",
        "typing": "59"
      },
      {
        "comments": [
          "@param SCHED_SCRIPTED_FACE - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SCRIPTED_FACE",
        "typing": "61"
      },
      {
        "comments": [
          "@param SCHED_SCRIPTED_RUN - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SCRIPTED_RUN",
        "typing": "58"
      },
      {
        "comments": [
          "@param SCHED_SCRIPTED_WAIT - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SCRIPTED_WAIT",
        "typing": "60"
      },
      {
        "comments": [
          "@param SCHED_SCRIPTED_WALK - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SCRIPTED_WALK",
        "typing": "57"
      },
      {
        "comments": [
          "@param SCHED_SHOOT_ENEMY_COVER - Shoot cover that the enemy is behind."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SHOOT_ENEMY_COVER",
        "typing": "39"
      },
      {
        "comments": [
          "@param SCHED_SLEEP - Sets the NPC to a sleep-like state."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SLEEP",
        "typing": "87"
      },
      {
        "comments": [
          "@param SCHED_SMALL_FLINCH - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SMALL_FLINCH",
        "typing": "22"
      },
      {
        "comments": [
          "@param SCHED_SPECIAL_ATTACK1 - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SPECIAL_ATTACK1",
        "typing": "45"
      },
      {
        "comments": [
          "@param SCHED_SPECIAL_ATTACK2 - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SPECIAL_ATTACK2",
        "typing": "46"
      },
      {
        "comments": [
          "@param SCHED_STANDOFF - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_STANDOFF",
        "typing": "47"
      },
      {
        "comments": [
          "@param SCHED_SWITCH_TO_PENDING_WEAPON - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_SWITCH_TO_PENDING_WEAPON",
        "typing": "65"
      },
      {
        "comments": [
          "@param SCHED_TAKE_COVER_FROM_BEST_SOUND - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_TAKE_COVER_FROM_BEST_SOUND",
        "typing": "28"
      },
      {
        "comments": [
          "@param SCHED_TAKE_COVER_FROM_ENEMY - Take cover from current enemy."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_TAKE_COVER_FROM_ENEMY",
        "typing": "27"
      },
      {
        "comments": [
          "@param SCHED_TAKE_COVER_FROM_ORIGIN - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_TAKE_COVER_FROM_ORIGIN",
        "typing": "30"
      },
      {
        "comments": [
          "@param SCHED_TARGET_CHASE - Chase set NPC target."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_TARGET_CHASE",
        "typing": "21"
      },
      {
        "comments": [
          "@param SCHED_TARGET_FACE - Face NPC target."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_TARGET_FACE",
        "typing": "20"
      },
      {
        "comments": [
          "@param SCHED_VICTORY_DANCE - Human victory dance."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_VICTORY_DANCE",
        "typing": "19"
      },
      {
        "comments": [
          "@param SCHED_WAIT_FOR_SCRIPT - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_WAIT_FOR_SCRIPT",
        "typing": "55"
      },
      {
        "comments": [
          "@param SCHED_WAIT_FOR_SPEAK_FINISH - no description"
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_WAIT_FOR_SPEAK_FINISH",
        "typing": "67"
      },
      {
        "comments": [
          "@param SCHED_WAKE_ANGRY - Spot an enemy and go from an idle state to combat state."
        ],
        "context": "SCHED",
        "type": "enum",
        "name": "SCHED_WAKE_ANGRY",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/RT SIZE",
      "@enum RT_SIZE",
      "@description Enumerations used by @GetRenderTargetEx function. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "RT_SIZE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param RT_SIZE_NO_CHANGE - Only allowed for render targets that don't want a depth buffer (because if they have a depth buffer, the render target must be less than or equal to the size of the framebuffer)."
        ],
        "context": "RT_SIZE",
        "type": "enum",
        "name": "RT_SIZE_NO_CHANGE",
        "typing": "0"
      },
      {
        "comments": [
          "@param RT_SIZE_DEFAULT - Don't play with the specified width and height other than making sure it fits in the framebuffer."
        ],
        "context": "RT_SIZE",
        "type": "enum",
        "name": "RT_SIZE_DEFAULT",
        "typing": "1"
      },
      {
        "comments": [
          "@param RT_SIZE_PICMIP - Apply picmip to the render target's width and height."
        ],
        "context": "RT_SIZE",
        "type": "enum",
        "name": "RT_SIZE_PICMIP",
        "typing": "2"
      },
      {
        "comments": [
          "@param RT_SIZE_HDR - frame_buffer_width / 4"
        ],
        "context": "RT_SIZE",
        "type": "enum",
        "name": "RT_SIZE_HDR",
        "typing": "3"
      },
      {
        "comments": [
          "@param RT_SIZE_FULL_FRAME_BUFFER - Same size as frame buffer, or next lower power of 2 if we can't do that."
        ],
        "context": "RT_SIZE",
        "type": "enum",
        "name": "RT_SIZE_FULL_FRAME_BUFFER",
        "typing": "4"
      },
      {
        "comments": [
          "@param RT_SIZE_OFFSCREEN - Target of specified size, don't mess with dimensions"
        ],
        "context": "RT_SIZE",
        "type": "enum",
        "name": "RT_SIZE_OFFSCREEN",
        "typing": "5"
      },
      {
        "comments": [
          "@param RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP - Same size as the frame buffer, rounded up if necessary for systems that can't do non-power of two textures."
        ],
        "context": "RT_SIZE",
        "type": "enum",
        "name": "RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP",
        "typing": "6"
      },
      {
        "comments": [
          "@param RT_SIZE_REPLAY_SCREENSHOT - Rounded down to power of 2, essentially"
        ],
        "context": "RT_SIZE",
        "type": "enum",
        "name": "RT_SIZE_REPLAY_SCREENSHOT",
        "typing": "7"
      },
      {
        "comments": [
          "@param RT_SIZE_LITERAL - Use the size passed in. Don't clamp it to the frame buffer size. Really."
        ],
        "context": "RT_SIZE",
        "type": "enum",
        "name": "RT_SIZE_LITERAL",
        "typing": "8"
      },
      {
        "comments": [
          "@param RT_SIZE_LITERAL_PICMIP - no description"
        ],
        "context": "RT_SIZE",
        "type": "enum",
        "name": "RT_SIZE_LITERAL_PICMIP",
        "typing": "9"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/RENDERMODE",
      "@enum RENDERMODE",
      "@description Enumerations used by @EntityFuncs:SetRenderMode and @EntityFuncs:GetRenderMode.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "RENDERMODE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param RENDERMODE_NORMAL - Default render mode. Transparently has no effect."
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_NORMAL",
        "typing": "0"
      },
      {
        "comments": [
          "@param RENDERMODE_TRANSCOLOR - Supports transparency."
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_TRANSCOLOR",
        "typing": "1"
      },
      {
        "comments": [
          "@param RENDERMODE_TRANSTEXTURE - no description"
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_TRANSTEXTURE",
        "typing": "2"
      },
      {
        "comments": [
          "@param RENDERMODE_GLOW - Intended for glowing sprites. Allows transparency, and forces the sprite or model to be rendered unlit.\nThe size of a sprite rendered with Glow is consistent with the screen size (unlike the alternative World Space Glow), making it appear larger at a distance, in comparison to the world.\nThe GlowProxySize keyvalue affects this Render Mode on sprites."
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_GLOW",
        "typing": "3"
      },
      {
        "comments": [
          "@param RENDERMODE_TRANSALPHA - Enables Alphatesting. Legacy port from Goldsource. Obsolete in Source due to Alphatesting being handled in materials. Does not allow transparency.\nUse this to make alpha of @Color function work for your entity. For players, it must be set for their active weapon aswell."
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_TRANSALPHA",
        "typing": "4"
      },
      {
        "comments": [
          "@param RENDERMODE_TRANSADD - Add the material's color values to the existing image, instead of performing a multiplication. Sprites will appear through world geometry and the sprite/model will always brighten the world. Allows transparency."
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_TRANSADD",
        "typing": "5"
      },
      {
        "comments": [
          "@param RENDERMODE_ENVIROMENTAL - Causes the material to be not be drawn at all, similarly to Don't Render."
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_ENVIROMENTAL",
        "typing": "6"
      },
      {
        "comments": [
          "@param RENDERMODE_TRANSADDFRAMEBLEND - Functions like Additive, but also blends between animation frames. Requires the material to have a functioning animating texture. Allows transparency."
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_TRANSADDFRAMEBLEND",
        "typing": "7"
      },
      {
        "comments": [
          "@param RENDERMODE_TRANSALPHADD - Functions similarly to Additive, except that the alpha channel controls the opacity of the sprite. An example of use is for dark sprites, with an example material being sprites/strider_blackball.vmt."
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_TRANSALPHADD",
        "typing": "8"
      },
      {
        "comments": [
          "@param RENDERMODE_WORLDGLOW - Functions similarly to Glow, with the exception that the size of the sprite is relative to the world rather than the screen.\nThe GlowProxySize keyvalue affects this Render Mode on sprites."
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_WORLDGLOW",
        "typing": "9"
      },
      {
        "comments": [
          "@param RENDERMODE_NONE - The entity is still being drawn and networked albeit invisible, therefore not making this Render Mode ideal for performance reasons.\nTo completely avoid drawing and networking an entity, see EF_NODRAW."
        ],
        "context": "RENDERMODE",
        "type": "enum",
        "name": "RENDERMODE_NONE",
        "typing": "10"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/RENDERGROUP",
      "@enum RENDERGROUP",
      "@description Enumerations used by @ClientsideModel function, ENT.RenderGroup in @IEntity structure and @EntityFuncs:GetRenderGroup.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "RENDERGROUP",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param RENDERGROUP_STATIC_HUGE - Huge static prop, possibly leftover from goldsrc"
        ],
        "context": "RENDERGROUP",
        "type": "enum",
        "name": "RENDERGROUP_STATIC_HUGE",
        "typing": "0"
      },
      {
        "comments": [
          "@param RENDERGROUP_OPAQUE_HUGE - Huge opaque entity, possibly leftover from goldsrc"
        ],
        "context": "RENDERGROUP",
        "type": "enum",
        "name": "RENDERGROUP_OPAQUE_HUGE",
        "typing": "1"
      },
      {
        "comments": [
          "@param RENDERGROUP_STATIC - Static props?"
        ],
        "context": "RENDERGROUP",
        "type": "enum",
        "name": "RENDERGROUP_STATIC",
        "typing": "6"
      },
      {
        "comments": [
          "@param RENDERGROUP_OPAQUE - For non transparent/solid entities.\nFor scripted entities, this will have @EntityHooks:Draw called"
        ],
        "context": "RENDERGROUP",
        "type": "enum",
        "name": "RENDERGROUP_OPAQUE",
        "typing": "7"
      },
      {
        "comments": [
          "@param RENDERGROUP_TRANSLUCENT - For translucent/transparent entities\nFor scripted entities, this will have @EntityHooks:DrawTranslucent called"
        ],
        "context": "RENDERGROUP",
        "type": "enum",
        "name": "RENDERGROUP_TRANSLUCENT",
        "typing": "8"
      },
      {
        "comments": [
          "@param RENDERGROUP_BOTH - For both translucent/transparent and opaque/solid anim entities\nFor scripted entities, this will have both, @EntityHooks:Draw and @EntityHooks:DrawTranslucent called"
        ],
        "context": "RENDERGROUP",
        "type": "enum",
        "name": "RENDERGROUP_BOTH",
        "typing": "9"
      },
      {
        "comments": [
          "@param RENDERGROUP_VIEWMODEL - Solid weapon view models"
        ],
        "context": "RENDERGROUP",
        "type": "enum",
        "name": "RENDERGROUP_VIEWMODEL",
        "typing": "10"
      },
      {
        "comments": [
          "@param RENDERGROUP_VIEWMODEL_TRANSLUCENT - Transparent overlays etc"
        ],
        "context": "RENDERGROUP",
        "type": "enum",
        "name": "RENDERGROUP_VIEWMODEL_TRANSLUCENT",
        "typing": "11"
      },
      {
        "comments": [
          "@param RENDERGROUP_OPAQUE_BRUSH - For brush entities"
        ],
        "context": "RENDERGROUP",
        "type": "enum",
        "name": "RENDERGROUP_OPAQUE_BRUSH",
        "typing": "12"
      },
      {
        "comments": [
          "@param RENDERGROUP_OTHER - Unclassfied. Won't get drawn."
        ],
        "context": "RENDERGROUP",
        "type": "enum",
        "name": "RENDERGROUP_OTHER",
        "typing": "13"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/PLAYER",
      "@enum PLAYER_ANIM",
      "@description Enumerations used by @EntityFuncs:SetAnimation",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "PLAYER_ANIM",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param PLAYER_IDLE - no description"
        ],
        "context": "PLAYER_ANIM",
        "type": "enum",
        "name": "PLAYER_IDLE",
        "typing": "0"
      },
      {
        "comments": [
          "@param PLAYER_WALK - no description"
        ],
        "context": "PLAYER_ANIM",
        "type": "enum",
        "name": "PLAYER_WALK",
        "typing": "1"
      },
      {
        "comments": [
          "@param PLAYER_JUMP - no description"
        ],
        "context": "PLAYER_ANIM",
        "type": "enum",
        "name": "PLAYER_JUMP",
        "typing": "2"
      },
      {
        "comments": [
          "@param PLAYER_SUPERJUMP - no description"
        ],
        "context": "PLAYER_ANIM",
        "type": "enum",
        "name": "PLAYER_SUPERJUMP",
        "typing": "3"
      },
      {
        "comments": [
          "@param PLAYER_DIE - no description"
        ],
        "context": "PLAYER_ANIM",
        "type": "enum",
        "name": "PLAYER_DIE",
        "typing": "4"
      },
      {
        "comments": [
          "@param PLAYER_ATTACK1 - Player attack according to current hold type, used in SWEPs"
        ],
        "context": "PLAYER_ANIM",
        "type": "enum",
        "name": "PLAYER_ATTACK1",
        "typing": "5"
      },
      {
        "comments": [
          "@param PLAYER_IN_VEHICLE - no description"
        ],
        "context": "PLAYER_ANIM",
        "type": "enum",
        "name": "PLAYER_IN_VEHICLE",
        "typing": "6"
      },
      {
        "comments": [
          "@param PLAYER_RELOAD - Player reload according to current hold type, used in SWEPs"
        ],
        "context": "PLAYER_ANIM",
        "type": "enum",
        "name": "PLAYER_RELOAD",
        "typing": "7"
      },
      {
        "comments": [
          "@param PLAYER_START_AIMING - no description"
        ],
        "context": "PLAYER_ANIM",
        "type": "enum",
        "name": "PLAYER_START_AIMING",
        "typing": "8"
      },
      {
        "comments": [
          "@param PLAYER_LEAVE_AIMING - no description"
        ],
        "context": "PLAYER_ANIM",
        "type": "enum",
        "name": "PLAYER_LEAVE_AIMING",
        "typing": "9"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/PLAYERANIMEVENT",
      "@enum PLAYERANIMEVENT",
      "@description Used by @GamemodeHooks:DoAnimationEvent and @Player:DoCustomAnimEvent.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "PLAYERANIMEVENT",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param PLAYERANIMEVENT_ATTACK_PRIMARY - Primary attack"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_ATTACK_PRIMARY",
        "typing": "0"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_ATTACK_SECONDARY - Secondary attack"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_ATTACK_SECONDARY",
        "typing": "1"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_ATTACK_GRENADE - Grenade throw"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_ATTACK_GRENADE",
        "typing": "2"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_RELOAD - Reload"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_RELOAD",
        "typing": "3"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_RELOAD_LOOP - Looping reload (single-reload shotguns)"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_RELOAD_LOOP",
        "typing": "4"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_RELOAD_END - Looping reload end"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_RELOAD_END",
        "typing": "5"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_JUMP - Jump"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_JUMP",
        "typing": "6"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_SWIM - Swim"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_SWIM",
        "typing": "7"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_DIE - Die"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_DIE",
        "typing": "8"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_FLINCH_CHEST - no description"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_FLINCH_CHEST",
        "typing": "9"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_FLINCH_HEAD - no description"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_FLINCH_HEAD",
        "typing": "10"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_FLINCH_LEFTARM - no description"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_FLINCH_LEFTARM",
        "typing": "11"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_FLINCH_RIGHTARM - no description"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_FLINCH_RIGHTARM",
        "typing": "12"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_FLINCH_LEFTLEG - no description"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_FLINCH_LEFTLEG",
        "typing": "13"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_FLINCH_RIGHTLEG - no description"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_FLINCH_RIGHTLEG",
        "typing": "14"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_DOUBLEJUMP - no description"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_DOUBLEJUMP",
        "typing": "15"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_CANCEL - no description"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_CANCEL",
        "typing": "16"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_SPAWN - Spawn"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_SPAWN",
        "typing": "17"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_SNAP_YAW - no description"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_SNAP_YAW",
        "typing": "18"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_CUSTOM - Custom activity"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_CUSTOM",
        "typing": "19"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_CUSTOM_GESTURE - Play activity in gesture slot"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_CUSTOM_GESTURE",
        "typing": "20"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_CUSTOM_SEQUENCE - Play sequence"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_CUSTOM_SEQUENCE",
        "typing": "21"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_CUSTOM_GESTURE_SEQUENCE - Play sequence in gesture slot"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_CUSTOM_GESTURE_SEQUENCE",
        "typing": "22"
      },
      {
        "comments": [
          "@param PLAYERANIMEVENT_CANCEL_RELOAD - Cancel reload animation"
        ],
        "context": "PLAYERANIMEVENT",
        "type": "enum",
        "name": "PLAYERANIMEVENT_CANCEL_RELOAD",
        "typing": "23"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/PATTACH",
      "@enum PATTACH",
      "@description Enumerations used by @ParticleEffectAttach function.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "PATTACH",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param PATTACH_ABSORIGIN - Particle spawns in entity's origin and does not follow it"
        ],
        "context": "PATTACH",
        "type": "enum",
        "name": "PATTACH_ABSORIGIN",
        "typing": "0"
      },
      {
        "comments": [
          "@param PATTACH_ABSORIGIN_FOLLOW - Particle attaches to entity's origin and follows the entity"
        ],
        "context": "PATTACH",
        "type": "enum",
        "name": "PATTACH_ABSORIGIN_FOLLOW",
        "typing": "1"
      },
      {
        "comments": [
          "@param PATTACH_CUSTOMORIGIN - Create at a custom origin, but don't follow"
        ],
        "context": "PATTACH",
        "type": "enum",
        "name": "PATTACH_CUSTOMORIGIN",
        "typing": "2"
      },
      {
        "comments": [
          "@param PATTACH_POINT - Particle attaches to passed to @ParticleEffectAttach function attachment id, but does not follow the entity"
        ],
        "context": "PATTACH",
        "type": "enum",
        "name": "PATTACH_POINT",
        "typing": "3"
      },
      {
        "comments": [
          "@param PATTACH_POINT_FOLLOW - Particle attaches to passed to @ParticleEffectAttach function attachment id and follows the entity"
        ],
        "context": "PATTACH",
        "type": "enum",
        "name": "PATTACH_POINT_FOLLOW",
        "typing": "4"
      },
      {
        "comments": [
          "@param PATTACH_WORLDORIGIN - Particle spawns in the beginning of coordinates ( Vector( 0, 0, 0 ) ), used for control points that don't attach to an entity"
        ],
        "context": "PATTACH",
        "type": "enum",
        "name": "PATTACH_WORLDORIGIN",
        "typing": "5"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/OBS MODE",
      "@enum OBS_MODE",
      "@description Enumerations used by @Player:SetObserverMode, @Player:GetObserverMode and @Player:Spectate.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "OBS_MODE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param OBS_MODE_NONE - Not spectating"
        ],
        "context": "OBS_MODE",
        "type": "enum",
        "name": "OBS_MODE_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param OBS_MODE_DEATHCAM - no description"
        ],
        "context": "OBS_MODE",
        "type": "enum",
        "name": "OBS_MODE_DEATHCAM",
        "typing": "1"
      },
      {
        "comments": [
          "@param OBS_MODE_FREEZECAM - TF2-like freezecam"
        ],
        "context": "OBS_MODE",
        "type": "enum",
        "name": "OBS_MODE_FREEZECAM",
        "typing": "2"
      },
      {
        "comments": [
          "@param OBS_MODE_FIXED - Same as OBS_MODE_CHASE, but you can't rotate the view"
        ],
        "context": "OBS_MODE",
        "type": "enum",
        "name": "OBS_MODE_FIXED",
        "typing": "3"
      },
      {
        "comments": [
          "@param OBS_MODE_IN_EYE - First person cam"
        ],
        "context": "OBS_MODE",
        "type": "enum",
        "name": "OBS_MODE_IN_EYE",
        "typing": "4"
      },
      {
        "comments": [
          "@param OBS_MODE_CHASE - Chase cam, 3rd person cam, free rotation around the spectated target"
        ],
        "context": "OBS_MODE",
        "type": "enum",
        "name": "OBS_MODE_CHASE",
        "typing": "5"
      },
      {
        "comments": [
          "@param OBS_MODE_ROAMING - Free roam/noclip-alike. Does not work from @GamemodeHooks:PlayerDeath"
        ],
        "context": "OBS_MODE",
        "type": "enum",
        "name": "OBS_MODE_ROAMING",
        "typing": "6"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/NUM",
      "@note These only exist serverside.",
      "@enum NUM",
      "@description Various count enums.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "NUM",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param NUM_AI_CLASSES - Amount of @CLASS enum. Used by @Add_NPC_Class function."
        ],
        "context": "NUM",
        "type": "enum",
        "name": "NUM_AI_CLASSES",
        "typing": "36"
      },
      {
        "comments": [
          "@param NUM_HULLS - Amount of @HULL enum."
        ],
        "context": "NUM",
        "type": "enum",
        "name": "NUM_HULLS",
        "typing": "10"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/NPC STATE",
      "@enum NPC_STATE",
      "@description Enumerations used by @NPC:SetNPCState. Serverside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "NPC_STATE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param NPC_STATE_INVALID - Invalid state"
        ],
        "context": "NPC_STATE",
        "type": "enum",
        "name": "NPC_STATE_INVALID",
        "typing": "-1"
      },
      {
        "comments": [
          "@param NPC_STATE_NONE - NPC default state"
        ],
        "context": "NPC_STATE",
        "type": "enum",
        "name": "NPC_STATE_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param NPC_STATE_IDLE - NPC is idle"
        ],
        "context": "NPC_STATE",
        "type": "enum",
        "name": "NPC_STATE_IDLE",
        "typing": "1"
      },
      {
        "comments": [
          "@param NPC_STATE_ALERT - NPC is alert and searching for enemies"
        ],
        "context": "NPC_STATE",
        "type": "enum",
        "name": "NPC_STATE_ALERT",
        "typing": "2"
      },
      {
        "comments": [
          "@param NPC_STATE_COMBAT - NPC is in combat"
        ],
        "context": "NPC_STATE",
        "type": "enum",
        "name": "NPC_STATE_COMBAT",
        "typing": "3"
      },
      {
        "comments": [
          "@param NPC_STATE_SCRIPT - NPC is executing scripted sequence"
        ],
        "context": "NPC_STATE",
        "type": "enum",
        "name": "NPC_STATE_SCRIPT",
        "typing": "4"
      },
      {
        "comments": [
          "@param NPC_STATE_PLAYDEAD - NPC is playing dead (used for expressions)"
        ],
        "context": "NPC_STATE",
        "type": "enum",
        "name": "NPC_STATE_PLAYDEAD",
        "typing": "5"
      },
      {
        "comments": [
          "@param NPC_STATE_PRONE - NPC is prone to death"
        ],
        "context": "NPC_STATE",
        "type": "enum",
        "name": "NPC_STATE_PRONE",
        "typing": "6"
      },
      {
        "comments": [
          "@param NPC_STATE_DEAD - NPC is dead"
        ],
        "context": "NPC_STATE",
        "type": "enum",
        "name": "NPC_STATE_DEAD",
        "typing": "7"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/NOTIFY",
      "@enum NOTIFY",
      "@description Enumerations used by @notification.AddLegacy. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "NOTIFY",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param NOTIFY_GENERIC - [middle](https://wiki.garrysmod.com/page/File:NOTIFY_GENERIC_PREVIEW.png) Generic notification"
        ],
        "context": "NOTIFY",
        "type": "enum",
        "name": "NOTIFY_GENERIC",
        "typing": "0"
      },
      {
        "comments": [
          "@param NOTIFY_ERROR - [middle](https://wiki.garrysmod.com/page/File:NOTIFY_ERROR_PREVIEW.png) Error notification"
        ],
        "context": "NOTIFY",
        "type": "enum",
        "name": "NOTIFY_ERROR",
        "typing": "1"
      },
      {
        "comments": [
          "@param NOTIFY_UNDO - [middle](https://wiki.garrysmod.com/page/File:NOTIFY_UNDO_PREVIEW.png) Undo notification"
        ],
        "context": "NOTIFY",
        "type": "enum",
        "name": "NOTIFY_UNDO",
        "typing": "2"
      },
      {
        "comments": [
          "@param NOTIFY_HINT - [middle](https://wiki.garrysmod.com/page/File:NOTIFY_HINT_PREVIEW.png) Hint notification"
        ],
        "context": "NOTIFY",
        "type": "enum",
        "name": "NOTIFY_HINT",
        "typing": "3"
      },
      {
        "comments": [
          "@param NOTIFY_CLEANUP - [middle](https://wiki.garrysmod.com/page/File:NOTIFY_CLEANUP_PREVIEW.png) Cleanup notification"
        ],
        "context": "NOTIFY",
        "type": "enum",
        "name": "NOTIFY_CLEANUP",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/NAV MESH",
      "@enum NAV_MESH",
      "@description Enumerations used by @CNavArea:GetAttributes and @CNavArea:HasAttributes.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "NAV_MESH",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param NAV_MESH_INVALID - The nav area is invalid."
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_INVALID",
        "typing": "0"
      },
      {
        "comments": [
          "@param NAV_MESH_CROUCH - Must crouch to use this node/area"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_CROUCH",
        "typing": "1"
      },
      {
        "comments": [
          "@param NAV_MESH_JUMP - Must jump to traverse this area (only used during generation)"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_JUMP",
        "typing": "2"
      },
      {
        "comments": [
          "@param NAV_MESH_PRECISE - Do not adjust for obstacles, just move along area"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_PRECISE",
        "typing": "4"
      },
      {
        "comments": [
          "@param NAV_MESH_NO_JUMP - Inhibit discontinuity jumping"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_NO_JUMP",
        "typing": "8"
      },
      {
        "comments": [
          "@param NAV_MESH_STOP - Must stop when entering this area"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_STOP",
        "typing": "16"
      },
      {
        "comments": [
          "@param NAV_MESH_RUN - Must run to traverse this area"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_RUN",
        "typing": "32"
      },
      {
        "comments": [
          "@param NAV_MESH_WALK - Must walk to traverse this area"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_WALK",
        "typing": "64"
      },
      {
        "comments": [
          "@param NAV_MESH_AVOID - Avoid this area unless alternatives are too dangerous"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_AVOID",
        "typing": "128"
      },
      {
        "comments": [
          "@param NAV_MESH_TRANSIENT - Area may become blocked, and should be periodically checked"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_TRANSIENT",
        "typing": "256"
      },
      {
        "comments": [
          "@param NAV_MESH_DONT_HIDE - Area should not be considered for hiding spot generation"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_DONT_HIDE",
        "typing": "512"
      },
      {
        "comments": [
          "@param NAV_MESH_STAND - Bots hiding in this area should stand"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_STAND",
        "typing": "1024"
      },
      {
        "comments": [
          "@param NAV_MESH_NO_HOSTAGES - Hostages shouldn't use this area"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_NO_HOSTAGES",
        "typing": "2048"
      },
      {
        "comments": [
          "@param NAV_MESH_STAIRS - This area represents stairs, do not attempt to climb or jump them - just walk up"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_STAIRS",
        "typing": "4096"
      },
      {
        "comments": [
          "@param NAV_MESH_NO_MERGE - Don't merge this area with adjacent areas"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_NO_MERGE",
        "typing": "8192"
      },
      {
        "comments": [
          "@param NAV_MESH_OBSTACLE_TOP - This nav area is the climb point on the tip of an obstacle"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_OBSTACLE_TOP",
        "typing": "16384"
      },
      {
        "comments": [
          "@param NAV_MESH_CLIFF - This nav area is adjacent to a drop of at least CliffHeight"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_CLIFF",
        "typing": "32768"
      },
      {
        "comments": [
          "@param NAV_MESH_FUNC_COST - Area has designer specified cost controlled by func_nav_cost entities"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_FUNC_COST",
        "typing": "536870912"
      },
      {
        "comments": [
          "@param NAV_MESH_HAS_ELEVATOR - Area is in an elevator's path"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_HAS_ELEVATOR",
        "typing": "1073741824"
      },
      {
        "comments": [
          "@param NAV_MESH_NAV_BLOCKER - no description"
        ],
        "context": "NAV_MESH",
        "type": "enum",
        "name": "NAV_MESH_NAV_BLOCKER",
        "typing": "-2147483648"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/NavTraverseType",
      "@note These enumerations do not exist in game and are listed here only for reference!",
      "@enum NavTraverseType",
      "@description Enumerations used by @CNavArea:GetParentHow.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "NavTraverseType",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param GO_NORTH - no description"
        ],
        "context": "NavTraverseType",
        "type": "enum",
        "name": "GO_NORTH",
        "typing": "0"
      },
      {
        "comments": [
          "@param GO_EAST - no description"
        ],
        "context": "NavTraverseType",
        "type": "enum",
        "name": "GO_EAST",
        "typing": "1"
      },
      {
        "comments": [
          "@param GO_SOUTH - no description"
        ],
        "context": "NavTraverseType",
        "type": "enum",
        "name": "GO_SOUTH",
        "typing": "2"
      },
      {
        "comments": [
          "@param GO_WEST - no description"
        ],
        "context": "NavTraverseType",
        "type": "enum",
        "name": "GO_WEST",
        "typing": "3"
      },
      {
        "comments": [
          "@param GO_LADDER_UP - no description"
        ],
        "context": "NavTraverseType",
        "type": "enum",
        "name": "GO_LADDER_UP",
        "typing": "4"
      },
      {
        "comments": [
          "@param GO_LADDER_DOWN - no description"
        ],
        "context": "NavTraverseType",
        "type": "enum",
        "name": "GO_LADDER_DOWN",
        "typing": "5"
      },
      {
        "comments": [
          "@param GO_JUMP - no description"
        ],
        "context": "NavTraverseType",
        "type": "enum",
        "name": "GO_JUMP",
        "typing": "6"
      },
      {
        "comments": [
          "@param GO_ELEVATOR_UP - no description"
        ],
        "context": "NavTraverseType",
        "type": "enum",
        "name": "GO_ELEVATOR_UP",
        "typing": "7"
      },
      {
        "comments": [
          "@param GO_ELEVATOR_DOWN - no description"
        ],
        "context": "NavTraverseType",
        "type": "enum",
        "name": "GO_ELEVATOR_DOWN",
        "typing": "8"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/NavDir",
      "@note These enumerations do not exist in game and are listed here only for reference!",
      "@enum NavDir",
      "@description Enumerations used by @CNavArea type methods.\nThese Enums correspond to each side of a @CNavArea type",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "NavDir",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param NORTH - North from given @CNavArea type"
        ],
        "context": "NavDir",
        "type": "enum",
        "name": "NORTH",
        "typing": "0"
      },
      {
        "comments": [
          "@param EAST - East from given @CNavArea type"
        ],
        "context": "NavDir",
        "type": "enum",
        "name": "EAST",
        "typing": "1"
      },
      {
        "comments": [
          "@param SOUTH - South from given @CNavArea type"
        ],
        "context": "NavDir",
        "type": "enum",
        "name": "SOUTH",
        "typing": "2"
      },
      {
        "comments": [
          "@param WEST - West from given @CNavArea type"
        ],
        "context": "NavDir",
        "type": "enum",
        "name": "WEST",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/NavCorner",
      "@note These enumerations do not exist in game and are listed here only for reference!",
      "@enum NavCorner",
      "@description Enumerations used by @CNavArea type methods.\nThese Enums correspond to each corner of a @CNavArea type",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "NavCorner",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param NORTH_WEST - North West Corner"
        ],
        "context": "NavCorner",
        "type": "enum",
        "name": "NORTH_WEST",
        "typing": "0"
      },
      {
        "comments": [
          "@param NORTH_EAST - North East Corner"
        ],
        "context": "NavCorner",
        "type": "enum",
        "name": "NORTH_EAST",
        "typing": "1"
      },
      {
        "comments": [
          "@param SOUTH_EAST - South East Corner"
        ],
        "context": "NavCorner",
        "type": "enum",
        "name": "SOUTH_EAST",
        "typing": "2"
      },
      {
        "comments": [
          "@param SOUTH_WEST - South West Corner"
        ],
        "context": "NavCorner",
        "type": "enum",
        "name": "SOUTH_WEST",
        "typing": "3"
      },
      {
        "comments": [
          "@param NUM_CORNERS - Represents all corners, only applicable to certain functions, such as @CNavArea:PlaceOnGround."
        ],
        "context": "NavCorner",
        "type": "enum",
        "name": "NUM_CORNERS",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/MOVETYPE",
      "@enum MOVETYPE",
      "@description Enumerations used by @EntityFuncs:SetMoveType and @EntityFuncs:GetMoveType.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "MOVETYPE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param MOVETYPE_NONE - Don't move"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param MOVETYPE_ISOMETRIC - For players, in TF2 commander view, etc"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_ISOMETRIC",
        "typing": "1"
      },
      {
        "comments": [
          "@param MOVETYPE_WALK - Player only, moving on the ground"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_WALK",
        "typing": "2"
      },
      {
        "comments": [
          "@param MOVETYPE_STEP - Monster/NPC movement"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_STEP",
        "typing": "3"
      },
      {
        "comments": [
          "@param MOVETYPE_FLY - Fly, no gravity"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_FLY",
        "typing": "4"
      },
      {
        "comments": [
          "@param MOVETYPE_FLYGRAVITY - Fly, with gravity"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_FLYGRAVITY",
        "typing": "5"
      },
      {
        "comments": [
          "@param MOVETYPE_VPHYSICS - Physics movetype"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_VPHYSICS",
        "typing": "6"
      },
      {
        "comments": [
          "@param MOVETYPE_PUSH - No clip to world, but pushes and crushes things"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_PUSH",
        "typing": "7"
      },
      {
        "comments": [
          "@param MOVETYPE_NOCLIP - Noclip"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_NOCLIP",
        "typing": "8"
      },
      {
        "comments": [
          "@param MOVETYPE_LADDER - For players, when moving on a ladder"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_LADDER",
        "typing": "9"
      },
      {
        "comments": [
          "@param MOVETYPE_OBSERVER - Spectator movetype. DO **NOT** use this to make player spectate"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_OBSERVER",
        "typing": "10"
      },
      {
        "comments": [
          "@param MOVETYPE_CUSTOM - Custom movetype, can be applied to the player to prevent the default movement code from running, while still calling the related hooks"
        ],
        "context": "MOVETYPE",
        "type": "enum",
        "name": "MOVETYPE_CUSTOM",
        "typing": "11"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/MOVECOLLIDE",
      "@enum MOVECOLLIDE",
      "@description Enumerations used by @EntityFuncs:SetMoveCollide and @EntityFuncs:GetMoveCollide.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "MOVECOLLIDE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param MOVECOLLIDE_DEFAULT - Default behavior"
        ],
        "context": "MOVECOLLIDE",
        "type": "enum",
        "name": "MOVECOLLIDE_DEFAULT",
        "typing": "0"
      },
      {
        "comments": [
          "@param MOVECOLLIDE_FLY_BOUNCE - Entity bounces, reflects, based on elasticity of surface and object - applies friction (adjust velocity)"
        ],
        "context": "MOVECOLLIDE",
        "type": "enum",
        "name": "MOVECOLLIDE_FLY_BOUNCE",
        "typing": "1"
      },
      {
        "comments": [
          "@param MOVECOLLIDE_FLY_CUSTOM - @EntityHooks:Touch will modify the velocity however it likes"
        ],
        "context": "MOVECOLLIDE",
        "type": "enum",
        "name": "MOVECOLLIDE_FLY_CUSTOM",
        "typing": "2"
      },
      {
        "comments": [
          "@param MOVECOLLIDE_FLY_SLIDE - Entity slides along surfaces (no bounce) - applies friciton (adjusts velocity)"
        ],
        "context": "MOVECOLLIDE",
        "type": "enum",
        "name": "MOVECOLLIDE_FLY_SLIDE",
        "typing": "3"
      },
      {
        "comments": [
          "@param MOVECOLLIDE_COUNT - Number of different movecollides"
        ],
        "context": "MOVECOLLIDE",
        "type": "enum",
        "name": "MOVECOLLIDE_COUNT",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/MOUSE",
      "@enum MOUSE",
      "@description Enumerations used by:\n* @input.IsMouseDown\n* @input.WasMousePressed\n* @input.WasMouseDoublePressed\nIt's also part of the @BUTTON_CODE enum.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "MOUSE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param MOUSE_FIRST - First mouse button"
        ],
        "context": "MOUSE",
        "type": "enum",
        "name": "MOUSE_FIRST",
        "typing": "107"
      },
      {
        "comments": [
          "@param MOUSE_LEFT - Left mouse button"
        ],
        "context": "MOUSE",
        "type": "enum",
        "name": "MOUSE_LEFT",
        "typing": "107"
      },
      {
        "comments": [
          "@param MOUSE_RIGHT - Right mouse button"
        ],
        "context": "MOUSE",
        "type": "enum",
        "name": "MOUSE_RIGHT",
        "typing": "108"
      },
      {
        "comments": [
          "@param MOUSE_MIDDLE - Middle mouse button, aka the wheel press"
        ],
        "context": "MOUSE",
        "type": "enum",
        "name": "MOUSE_MIDDLE",
        "typing": "109"
      },
      {
        "comments": [
          "@param MOUSE_4 - Mouse 4 button ( Sometimes, mouse wheel tilt left )"
        ],
        "context": "MOUSE",
        "type": "enum",
        "name": "MOUSE_4",
        "typing": "110"
      },
      {
        "comments": [
          "@param MOUSE_5 - Mouse 5 button ( Sometimes, mouse wheel tilt right )"
        ],
        "context": "MOUSE",
        "type": "enum",
        "name": "MOUSE_5",
        "typing": "111"
      },
      {
        "comments": [
          "@param MOUSE_WHEEL_UP - Mouse wheel scroll up"
        ],
        "context": "MOUSE",
        "type": "enum",
        "name": "MOUSE_WHEEL_UP",
        "typing": "112"
      },
      {
        "comments": [
          "@param MOUSE_WHEEL_DOWN - Mouse wheel scroll down"
        ],
        "context": "MOUSE",
        "type": "enum",
        "name": "MOUSE_WHEEL_DOWN",
        "typing": "113"
      },
      {
        "comments": [
          "@param MOUSE_LAST - Last mouse button"
        ],
        "context": "MOUSE",
        "type": "enum",
        "name": "MOUSE_LAST",
        "typing": "113"
      },
      {
        "comments": [
          "@param MOUSE_COUNT - Mouse button count"
        ],
        "context": "MOUSE",
        "type": "enum",
        "name": "MOUSE_COUNT",
        "typing": "7"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/MATERIAL RT DEPTH",
      "@enum MATERIAL_RT_DEPTH",
      "@description Enumerations used by @GetRenderTargetEx function. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "MATERIAL_RT_DEPTH",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param MATERIAL_RT_DEPTH_SHARED - Do not create a depth-stencil buffer.\nUse the default depth-stencil buffer if used as render target 0."
        ],
        "context": "MATERIAL_RT_DEPTH",
        "type": "enum",
        "name": "MATERIAL_RT_DEPTH_SHARED",
        "typing": "0"
      },
      {
        "comments": [
          "@param MATERIAL_RT_DEPTH_SEPARATE - Create a depth-stencil buffer.\nUse the created depth-stencil buffer if used as render target 0."
        ],
        "context": "MATERIAL_RT_DEPTH",
        "type": "enum",
        "name": "MATERIAL_RT_DEPTH_SEPARATE",
        "typing": "1"
      },
      {
        "comments": [
          "@param MATERIAL_RT_DEPTH_NONE - Do not create a depth-stencil buffer.\nDisable depth and stencil buffer usage if used as render target 0."
        ],
        "context": "MATERIAL_RT_DEPTH",
        "type": "enum",
        "name": "MATERIAL_RT_DEPTH_NONE",
        "typing": "2"
      },
      {
        "comments": [
          "@param MATERIAL_RT_DEPTH_ONLY - Create a depth-stencil buffer.\nUse the created depth-stencil buffer if used as render target 0.\nCreates a color texture despite the name.\nSeems to behave the same as MATERIAL_RT_DEPTH_SEPARATE."
        ],
        "context": "MATERIAL_RT_DEPTH",
        "type": "enum",
        "name": "MATERIAL_RT_DEPTH_ONLY",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/MATERIAL LIGHT",
      "@enum MATERIAL_LIGHT",
      "@description Enumerations used by @render.SetLocalModelLights. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "MATERIAL_LIGHT",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param MATERIAL_LIGHT_DISABLE - No light"
        ],
        "context": "MATERIAL_LIGHT",
        "type": "enum",
        "name": "MATERIAL_LIGHT_DISABLE",
        "typing": "0"
      },
      {
        "comments": [
          "@param MATERIAL_LIGHT_POINT - Point light"
        ],
        "context": "MATERIAL_LIGHT",
        "type": "enum",
        "name": "MATERIAL_LIGHT_POINT",
        "typing": "1"
      },
      {
        "comments": [
          "@param MATERIAL_LIGHT_DIRECTIONAL - Directional light"
        ],
        "context": "MATERIAL_LIGHT",
        "type": "enum",
        "name": "MATERIAL_LIGHT_DIRECTIONAL",
        "typing": "2"
      },
      {
        "comments": [
          "@param MATERIAL_LIGHT_SPOT - Spot light"
        ],
        "context": "MATERIAL_LIGHT",
        "type": "enum",
        "name": "MATERIAL_LIGHT_SPOT",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/MATERIAL FOG",
      "@enum MATERIAL_FOG",
      "@description Enumerations used by @render.GetFogMode and @render.FogMode. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "MATERIAL_FOG",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param MATERIAL_FOG_NONE - No fog"
        ],
        "context": "MATERIAL_FOG",
        "type": "enum",
        "name": "MATERIAL_FOG_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param MATERIAL_FOG_LINEAR - Linear fog"
        ],
        "context": "MATERIAL_FOG",
        "type": "enum",
        "name": "MATERIAL_FOG_LINEAR",
        "typing": "1"
      },
      {
        "comments": [
          "@param MATERIAL_FOG_LINEAR_BELOW_FOG_Z - For use in conjunction with @render.SetFogZ. Does not work if start distance is bigger than end distance. Ignores density setting. Seems to be broken? Used for underwater fog by the engine."
        ],
        "context": "MATERIAL_FOG",
        "type": "enum",
        "name": "MATERIAL_FOG_LINEAR_BELOW_FOG_Z",
        "typing": "2"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/MATERIAL",
      "@enum MATERIAL",
      "@description Enumerations used by @mesh.Begin. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "MATERIAL",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param MATERIAL_LINES - no description"
        ],
        "context": "MATERIAL",
        "type": "enum",
        "name": "MATERIAL_LINES",
        "typing": "1"
      },
      {
        "comments": [
          "@param MATERIAL_LINE_LOOP - no description"
        ],
        "context": "MATERIAL",
        "type": "enum",
        "name": "MATERIAL_LINE_LOOP",
        "typing": "5"
      },
      {
        "comments": [
          "@param MATERIAL_LINE_STRIP - no description"
        ],
        "context": "MATERIAL",
        "type": "enum",
        "name": "MATERIAL_LINE_STRIP",
        "typing": "4"
      },
      {
        "comments": [
          "@param MATERIAL_POINTS - no description"
        ],
        "context": "MATERIAL",
        "type": "enum",
        "name": "MATERIAL_POINTS",
        "typing": "0"
      },
      {
        "comments": [
          "@param MATERIAL_POLYGON - no description"
        ],
        "context": "MATERIAL",
        "type": "enum",
        "name": "MATERIAL_POLYGON",
        "typing": "6"
      },
      {
        "comments": [
          "@param MATERIAL_QUADS - no description"
        ],
        "context": "MATERIAL",
        "type": "enum",
        "name": "MATERIAL_QUADS",
        "typing": "7"
      },
      {
        "comments": [
          "@param MATERIAL_TRIANGLES - no description"
        ],
        "context": "MATERIAL",
        "type": "enum",
        "name": "MATERIAL_TRIANGLES",
        "typing": "2"
      },
      {
        "comments": [
          "@param MATERIAL_TRIANGLE_STRIP - no description"
        ],
        "context": "MATERIAL",
        "type": "enum",
        "name": "MATERIAL_TRIANGLE_STRIP",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/MATERIAL CULLMODE",
      "@enum MATERIAL_CULLMODE",
      "@description Enumerations used by @render.CullMode. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "MATERIAL_CULLMODE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param MATERIAL_CULLMODE_CCW - Counter clock wise cull mode"
        ],
        "context": "MATERIAL_CULLMODE",
        "type": "enum",
        "name": "MATERIAL_CULLMODE_CCW",
        "typing": "0"
      },
      {
        "comments": [
          "@param MATERIAL_CULLMODE_CW - Clock wise cull mode"
        ],
        "context": "MATERIAL_CULLMODE",
        "type": "enum",
        "name": "MATERIAL_CULLMODE_CW",
        "typing": "1"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/MAT",
      "@enum MAT",
      "@description Enumerations used in @TraceResult structure and by @EntityFuncs:GetMaterialType.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "MAT",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param MAT_ANTLION - Antlions"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_ANTLION",
        "typing": "65"
      },
      {
        "comments": [
          "@param MAT_BLOODYFLESH - Similar to MAT_FLESH, only used by \"bloodyflesh\" surface property, has different impact sound"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_BLOODYFLESH",
        "typing": "66"
      },
      {
        "comments": [
          "@param MAT_CONCRETE - Concrete"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_CONCRETE",
        "typing": "67"
      },
      {
        "comments": [
          "@param MAT_DIRT - Dirt"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_DIRT",
        "typing": "68"
      },
      {
        "comments": [
          "@param MAT_EGGSHELL - The egg sacs in the antlion tunnels in HL2: EP2"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_EGGSHELL",
        "typing": "69"
      },
      {
        "comments": [
          "@param MAT_FLESH - Flesh"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_FLESH",
        "typing": "70"
      },
      {
        "comments": [
          "@param MAT_GRATE - Grates, chainlink fences"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_GRATE",
        "typing": "71"
      },
      {
        "comments": [
          "@param MAT_ALIENFLESH - Alien flesh - headcrabs and vortigaunts"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_ALIENFLESH",
        "typing": "72"
      },
      {
        "comments": [
          "@param MAT_CLIP - Unused"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_CLIP",
        "typing": "73"
      },
      {
        "comments": [
          "@param MAT_SNOW - Snow"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_SNOW",
        "typing": "74"
      },
      {
        "comments": [
          "@param MAT_PLASTIC - Plastic"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_PLASTIC",
        "typing": "76"
      },
      {
        "comments": [
          "@param MAT_METAL - Metal"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_METAL",
        "typing": "77"
      },
      {
        "comments": [
          "@param MAT_SAND - Sand"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_SAND",
        "typing": "78"
      },
      {
        "comments": [
          "@param MAT_FOLIAGE - Plants, only used by the \"foliage\" surface property"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_FOLIAGE",
        "typing": "79"
      },
      {
        "comments": [
          "@param MAT_COMPUTER - Electronics, only used by \"computer\" surface property"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_COMPUTER",
        "typing": "80"
      },
      {
        "comments": [
          "@param MAT_SLOSH - Water, slime"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_SLOSH",
        "typing": "83"
      },
      {
        "comments": [
          "@param MAT_TILE - Floor tiles"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_TILE",
        "typing": "84"
      },
      {
        "comments": [
          "@param MAT_GRASS - Grass"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_GRASS",
        "typing": "85"
      },
      {
        "comments": [
          "@param MAT_VENT - Metallic vents"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_VENT",
        "typing": "86"
      },
      {
        "comments": [
          "@param MAT_WOOD - Wood"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_WOOD",
        "typing": "87"
      },
      {
        "comments": [
          "@param MAT_DEFAULT - Skybox or nodraw texture"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_DEFAULT",
        "typing": "88"
      },
      {
        "comments": [
          "@param MAT_GLASS - Glass"
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_GLASS",
        "typing": "89"
      },
      {
        "comments": [
          "@param MAT_WARPSHIELD - \"wierd-looking jello effect for advisor shield.\""
        ],
        "context": "MAT",
        "type": "enum",
        "name": "MAT_WARPSHIELD",
        "typing": "90"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/MASK",
      "@enum MASK",
      "@description Enumerations used as trace masks in @Trace structure and @HullTrace structure. These enumerations are simply combinations of @CONTENTS enum.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "MASK",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param MASK_ALL - Anything that is not empty space"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_ALL",
        "typing": "4294967295"
      },
      {
        "comments": [
          "@param MASK_BLOCKLOS - Anything that blocks line of sight for AI"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_BLOCKLOS",
        "typing": "16449"
      },
      {
        "comments": [
          "@param MASK_BLOCKLOS_AND_NPCS - Anything that blocks line of sight for AI or NPCs"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_BLOCKLOS_AND_NPCS",
        "typing": "33570881"
      },
      {
        "comments": [
          "@param MASK_CURRENT - Water that is moving (may not work)"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_CURRENT",
        "typing": "16515072"
      },
      {
        "comments": [
          "@param MASK_DEADSOLID - Anything that blocks corpse movement"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_DEADSOLID",
        "typing": "65547"
      },
      {
        "comments": [
          "@param MASK_NPCSOLID - Anything that blocks NPC movement"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_NPCSOLID",
        "typing": "33701899"
      },
      {
        "comments": [
          "@param MASK_NPCSOLID_BRUSHONLY - Anything that blocks NPC movement, except other NPCs"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_NPCSOLID_BRUSHONLY",
        "typing": "147467"
      },
      {
        "comments": [
          "@param MASK_NPCWORLDSTATIC - The world entity"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_NPCWORLDSTATIC",
        "typing": "131083"
      },
      {
        "comments": [
          "@param MASK_OPAQUE - Anything that blocks lighting"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_OPAQUE",
        "typing": "16513"
      },
      {
        "comments": [
          "@param MASK_OPAQUE_AND_NPCS - Anything that blocks lighting, including NPCs"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_OPAQUE_AND_NPCS",
        "typing": "33570945"
      },
      {
        "comments": [
          "@param MASK_PLAYERSOLID - Anything that blocks player movement"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_PLAYERSOLID",
        "typing": "33636363"
      },
      {
        "comments": [
          "@param MASK_PLAYERSOLID_BRUSHONLY - World + Brushes + Player Clips"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_PLAYERSOLID_BRUSHONLY",
        "typing": "81931"
      },
      {
        "comments": [
          "@param MASK_SHOT - Anything that stops a bullet (including hitboxes)"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_SHOT",
        "typing": "1174421507"
      },
      {
        "comments": [
          "@param MASK_SHOT_HULL - Anything that stops a bullet (excluding hitboxes)"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_SHOT_HULL",
        "typing": "100679691"
      },
      {
        "comments": [
          "@param MASK_SHOT_PORTAL - Solids except for grates"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_SHOT_PORTAL",
        "typing": "33570819"
      },
      {
        "comments": [
          "@param MASK_SOLID - Anything that is (normally) solid"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_SOLID",
        "typing": "33570827"
      },
      {
        "comments": [
          "@param MASK_SOLID_BRUSHONLY - World + Brushes"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_SOLID_BRUSHONLY",
        "typing": "16395"
      },
      {
        "comments": [
          "@param MASK_SPLITAREAPORTAL - Things that split area portals"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_SPLITAREAPORTAL",
        "typing": "48"
      },
      {
        "comments": [
          "@param MASK_VISIBLE - Anything that blocks line of sight for players"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_VISIBLE",
        "typing": "24705"
      },
      {
        "comments": [
          "@param MASK_VISIBLE_AND_NPCS - Anything that blocks line of sight for players, including NPCs"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_VISIBLE_AND_NPCS",
        "typing": "33579137"
      },
      {
        "comments": [
          "@param MASK_WATER - Anything that has water-like physics"
        ],
        "context": "MASK",
        "type": "enum",
        "name": "MASK_WATER",
        "typing": "16432"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/kRenderFx",
      "@enum kRenderFx",
      "@description Used by @EntityFuncs:SetRenderFX and returned by @EntityFuncs:GetRenderFX.\nMost of these require alpha value of entitys color to be less than 255 to have any visible effect.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "kRenderFx",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param kRenderFxNone - None. No change."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxNone",
        "typing": "0"
      },
      {
        "comments": [
          "@param kRenderFxPulseSlow - Slowly pulses the entitys transparency, +-15 to the current alpha."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxPulseSlow",
        "typing": "1"
      },
      {
        "comments": [
          "@param kRenderFxPulseFast - Quickly pulses the entitys transparency, +-15 to the current alpha."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxPulseFast",
        "typing": "2"
      },
      {
        "comments": [
          "@param kRenderFxPulseSlowWide - Slowly pulses the entitys transparency, +-60 to the current alpha."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxPulseSlowWide",
        "typing": "3"
      },
      {
        "comments": [
          "@param kRenderFxPulseFastWide - Quickly pulses the entitys transparency, +-60 to the current alpha."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxPulseFastWide",
        "typing": "4"
      },
      {
        "comments": [
          "@param kRenderFxFadeSlow - Slowly fades away the entity, making it completely invisible.Starts from whatever alpha the entity currently has set."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxFadeSlow",
        "typing": "5"
      },
      {
        "comments": [
          "@param kRenderFxFadeFast - Quickly fades away the entity, making it completely invisible.Starts from whatever alpha the entity currently has set."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxFadeFast",
        "typing": "6"
      },
      {
        "comments": [
          "@param kRenderFxSolidSlow - Slowly solidifies the entity, making it fully opaque.Starts from whatever alpha the entity currently has set."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxSolidSlow",
        "typing": "7"
      },
      {
        "comments": [
          "@param kRenderFxSolidFast - Quickly solidifies the entity, making it fully opaque.Starts from whatever alpha the entity currently has set."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxSolidFast",
        "typing": "8"
      },
      {
        "comments": [
          "@param kRenderFxStrobeSlow - Slowly switches the entitys transparency between its alpha and 0."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxStrobeSlow",
        "typing": "9"
      },
      {
        "comments": [
          "@param kRenderFxStrobeFast - Quickly switches the entitys transparency between its alpha and 0."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxStrobeFast",
        "typing": "10"
      },
      {
        "comments": [
          "@param kRenderFxStrobeFaster - Very quickly switches the entitys transparency between its alpha and 0."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxStrobeFaster",
        "typing": "11"
      },
      {
        "comments": [
          "@param kRenderFxFlickerSlow - Same as Strobe Slow, but the interval is more randomized."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxFlickerSlow",
        "typing": "12"
      },
      {
        "comments": [
          "@param kRenderFxFlickerFast - Same as Strobe Fast, but the interval is more randomized."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxFlickerFast",
        "typing": "13"
      },
      {
        "comments": [
          "@param kRenderFxNoDissipation - no description"
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxNoDissipation",
        "typing": "14"
      },
      {
        "comments": [
          "@param kRenderFxDistort - Flickers ( randomizes ) the entitys transparency"
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxDistort",
        "typing": "15"
      },
      {
        "comments": [
          "@param kRenderFxHologram - Same as Distort, but fades the entity away the farther you are from it."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxHologram",
        "typing": "16"
      },
      {
        "comments": [
          "@param kRenderFxExplode - no description"
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxExplode",
        "typing": "17"
      },
      {
        "comments": [
          "@param kRenderFxGlowShell - no description"
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxGlowShell",
        "typing": "18"
      },
      {
        "comments": [
          "@param kRenderFxClampMinScale - no description"
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxClampMinScale",
        "typing": "19"
      },
      {
        "comments": [
          "@param kRenderFxEnvRain - no description"
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxEnvRain",
        "typing": "20"
      },
      {
        "comments": [
          "@param kRenderFxEnvSnow - no description"
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxEnvSnow",
        "typing": "21"
      },
      {
        "comments": [
          "@param kRenderFxSpotlight - no description"
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxSpotlight",
        "typing": "22"
      },
      {
        "comments": [
          "@param kRenderFxRagdoll - no description"
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxRagdoll",
        "typing": "23"
      },
      {
        "comments": [
          "@param kRenderFxPulseFastWider - Quickly pulses the entitys transparency, from 0 to 255."
        ],
        "context": "kRenderFx",
        "type": "enum",
        "name": "kRenderFxPulseFastWider",
        "typing": "24"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/JOYSTICK",
      "@enum JOYSTICK",
      "@description Enumerations used by @input.IsButtonDown.\nIt's also part of the @BUTTON_CODE enum.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "JOYSTICK",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param JOYSTICK_FIRST - no description"
        ],
        "context": "JOYSTICK",
        "type": "enum",
        "name": "JOYSTICK_FIRST",
        "typing": "114"
      },
      {
        "comments": [
          "@param JOYSTICK_FIRST_BUTTON - rowspan=2*Joystick buttons are in this range, but don't have individual enum names."
        ],
        "context": "JOYSTICK",
        "type": "enum",
        "name": "JOYSTICK_FIRST_BUTTON",
        "typing": "114"
      },
      {
        "comments": [
          "@param JOYSTICK_LAST_BUTTON - style=\"display:none\"*"
        ],
        "context": "JOYSTICK",
        "type": "enum",
        "name": "JOYSTICK_LAST_BUTTON",
        "typing": "145"
      },
      {
        "comments": [
          "@param JOYSTICK_FIRST_POV_BUTTON - rowspan=2*Joystick POV buttons are in this range, but don't have individual enum names."
        ],
        "context": "JOYSTICK",
        "type": "enum",
        "name": "JOYSTICK_FIRST_POV_BUTTON",
        "typing": "146"
      },
      {
        "comments": [
          "@param JOYSTICK_LAST_POV_BUTTON - style=\"display:none\"*"
        ],
        "context": "JOYSTICK",
        "type": "enum",
        "name": "JOYSTICK_LAST_POV_BUTTON",
        "typing": "149"
      },
      {
        "comments": [
          "@param JOYSTICK_FIRST_AXIS_BUTTON - rowspan=2*Joystick axis buttons are in this range, but don't have individual enum names."
        ],
        "context": "JOYSTICK",
        "type": "enum",
        "name": "JOYSTICK_FIRST_AXIS_BUTTON",
        "typing": "150"
      },
      {
        "comments": [
          "@param JOYSTICK_LAST_AXIS_BUTTON - style=\"display:none\"*"
        ],
        "context": "JOYSTICK",
        "type": "enum",
        "name": "JOYSTICK_LAST_AXIS_BUTTON",
        "typing": "161"
      },
      {
        "comments": [
          "@param JOYSTICK_LAST - no description"
        ],
        "context": "JOYSTICK",
        "type": "enum",
        "name": "JOYSTICK_LAST",
        "typing": "161"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/KEY",
      "@enum KEY",
      "@description Enumerations used by:\n* @input.IsKeyDown\n* @input.WasKeyPressed\n* @input.WasKeyReleased\n* @input.WasKeyTyped\n* @input.IsKeyTrapping\n* @input.GetKeyName\n* @input.LookupBinding\n* @PanelHooks:OnKeyCodePressed\n* @PanelHooks:OnKeyCodeReleased\nIt's also part of the @BUTTON_CODE enum.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "KEY",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param KEY_FIRST - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_FIRST",
        "typing": "0"
      },
      {
        "comments": [
          "@param KEY_NONE - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param KEY_0 - Normal number 0 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_0",
        "typing": "1"
      },
      {
        "comments": [
          "@param KEY_1 - Normal number 1 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_1",
        "typing": "2"
      },
      {
        "comments": [
          "@param KEY_2 - Normal number 2 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_2",
        "typing": "3"
      },
      {
        "comments": [
          "@param KEY_3 - Normal number 3 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_3",
        "typing": "4"
      },
      {
        "comments": [
          "@param KEY_4 - Normal number 4 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_4",
        "typing": "5"
      },
      {
        "comments": [
          "@param KEY_5 - Normal number 5 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_5",
        "typing": "6"
      },
      {
        "comments": [
          "@param KEY_6 - Normal number 6 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_6",
        "typing": "7"
      },
      {
        "comments": [
          "@param KEY_7 - Normal number 7 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_7",
        "typing": "8"
      },
      {
        "comments": [
          "@param KEY_8 - Normal number 8 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_8",
        "typing": "9"
      },
      {
        "comments": [
          "@param KEY_9 - Normal number 9 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_9",
        "typing": "10"
      },
      {
        "comments": [
          "@param KEY_A - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_A",
        "typing": "11"
      },
      {
        "comments": [
          "@param KEY_B - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_B",
        "typing": "12"
      },
      {
        "comments": [
          "@param KEY_C - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_C",
        "typing": "13"
      },
      {
        "comments": [
          "@param KEY_D - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_D",
        "typing": "14"
      },
      {
        "comments": [
          "@param KEY_E - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_E",
        "typing": "15"
      },
      {
        "comments": [
          "@param KEY_F - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F",
        "typing": "16"
      },
      {
        "comments": [
          "@param KEY_G - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_G",
        "typing": "17"
      },
      {
        "comments": [
          "@param KEY_H - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_H",
        "typing": "18"
      },
      {
        "comments": [
          "@param KEY_I - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_I",
        "typing": "19"
      },
      {
        "comments": [
          "@param KEY_J - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_J",
        "typing": "20"
      },
      {
        "comments": [
          "@param KEY_K - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_K",
        "typing": "21"
      },
      {
        "comments": [
          "@param KEY_L - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_L",
        "typing": "22"
      },
      {
        "comments": [
          "@param KEY_M - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_M",
        "typing": "23"
      },
      {
        "comments": [
          "@param KEY_N - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_N",
        "typing": "24"
      },
      {
        "comments": [
          "@param KEY_O - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_O",
        "typing": "25"
      },
      {
        "comments": [
          "@param KEY_P - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_P",
        "typing": "26"
      },
      {
        "comments": [
          "@param KEY_Q - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_Q",
        "typing": "27"
      },
      {
        "comments": [
          "@param KEY_R - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_R",
        "typing": "28"
      },
      {
        "comments": [
          "@param KEY_S - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_S",
        "typing": "29"
      },
      {
        "comments": [
          "@param KEY_T - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_T",
        "typing": "30"
      },
      {
        "comments": [
          "@param KEY_U - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_U",
        "typing": "31"
      },
      {
        "comments": [
          "@param KEY_V - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_V",
        "typing": "32"
      },
      {
        "comments": [
          "@param KEY_W - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_W",
        "typing": "33"
      },
      {
        "comments": [
          "@param KEY_X - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_X",
        "typing": "34"
      },
      {
        "comments": [
          "@param KEY_Y - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_Y",
        "typing": "35"
      },
      {
        "comments": [
          "@param KEY_Z - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_Z",
        "typing": "36"
      },
      {
        "comments": [
          "@param KEY_PAD_0 - Keypad number 0 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_0",
        "typing": "37"
      },
      {
        "comments": [
          "@param KEY_PAD_1 - Keypad number 1 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_1",
        "typing": "38"
      },
      {
        "comments": [
          "@param KEY_PAD_2 - Keypad number 2 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_2",
        "typing": "39"
      },
      {
        "comments": [
          "@param KEY_PAD_3 - Keypad number 3 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_3",
        "typing": "40"
      },
      {
        "comments": [
          "@param KEY_PAD_4 - Keypad number 4 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_4",
        "typing": "41"
      },
      {
        "comments": [
          "@param KEY_PAD_5 - Keypad number 5 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_5",
        "typing": "42"
      },
      {
        "comments": [
          "@param KEY_PAD_6 - Keypad number 6 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_6",
        "typing": "43"
      },
      {
        "comments": [
          "@param KEY_PAD_7 - Keypad number 7 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_7",
        "typing": "44"
      },
      {
        "comments": [
          "@param KEY_PAD_8 - Keypad number 8 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_8",
        "typing": "45"
      },
      {
        "comments": [
          "@param KEY_PAD_9 - Keypad number 9 key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_9",
        "typing": "46"
      },
      {
        "comments": [
          "@param KEY_PAD_DIVIDE - Keypad division/slash key (/)"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_DIVIDE",
        "typing": "47"
      },
      {
        "comments": [
          "@param KEY_PAD_MULTIPLY - Keypad asterisk key (*)"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_MULTIPLY",
        "typing": "48"
      },
      {
        "comments": [
          "@param KEY_PAD_MINUS - Keypad minus key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_MINUS",
        "typing": "49"
      },
      {
        "comments": [
          "@param KEY_PAD_PLUS - Keypad plus key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_PLUS",
        "typing": "50"
      },
      {
        "comments": [
          "@param KEY_PAD_ENTER - Keypad enter key"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_ENTER",
        "typing": "51"
      },
      {
        "comments": [
          "@param KEY_PAD_DECIMAL - Keypad dot key (.)"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAD_DECIMAL",
        "typing": "52"
      },
      {
        "comments": [
          "@param KEY_LBRACKET - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_LBRACKET",
        "typing": "53"
      },
      {
        "comments": [
          "@param KEY_RBRACKET - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_RBRACKET",
        "typing": "54"
      },
      {
        "comments": [
          "@param KEY_SEMICOLON - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_SEMICOLON",
        "typing": "55"
      },
      {
        "comments": [
          "@param KEY_APOSTROPHE - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_APOSTROPHE",
        "typing": "56"
      },
      {
        "comments": [
          "@param KEY_BACKQUOTE - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_BACKQUOTE",
        "typing": "57"
      },
      {
        "comments": [
          "@param KEY_COMMA - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_COMMA",
        "typing": "58"
      },
      {
        "comments": [
          "@param KEY_PERIOD - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PERIOD",
        "typing": "59"
      },
      {
        "comments": [
          "@param KEY_SLASH - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_SLASH",
        "typing": "60"
      },
      {
        "comments": [
          "@param KEY_BACKSLASH - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_BACKSLASH",
        "typing": "61"
      },
      {
        "comments": [
          "@param KEY_MINUS - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_MINUS",
        "typing": "62"
      },
      {
        "comments": [
          "@param KEY_EQUAL - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_EQUAL",
        "typing": "63"
      },
      {
        "comments": [
          "@param KEY_ENTER - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_ENTER",
        "typing": "64"
      },
      {
        "comments": [
          "@param KEY_SPACE - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_SPACE",
        "typing": "65"
      },
      {
        "comments": [
          "@param KEY_BACKSPACE - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_BACKSPACE",
        "typing": "66"
      },
      {
        "comments": [
          "@param KEY_TAB - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_TAB",
        "typing": "67"
      },
      {
        "comments": [
          "@param KEY_CAPSLOCK - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_CAPSLOCK",
        "typing": "68"
      },
      {
        "comments": [
          "@param KEY_NUMLOCK - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_NUMLOCK",
        "typing": "69"
      },
      {
        "comments": [
          "@param KEY_ESCAPE - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_ESCAPE",
        "typing": "70"
      },
      {
        "comments": [
          "@param KEY_SCROLLLOCK - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_SCROLLLOCK",
        "typing": "71"
      },
      {
        "comments": [
          "@param KEY_INSERT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_INSERT",
        "typing": "72"
      },
      {
        "comments": [
          "@param KEY_DELETE - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_DELETE",
        "typing": "73"
      },
      {
        "comments": [
          "@param KEY_HOME - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_HOME",
        "typing": "74"
      },
      {
        "comments": [
          "@param KEY_END - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_END",
        "typing": "75"
      },
      {
        "comments": [
          "@param KEY_PAGEUP - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAGEUP",
        "typing": "76"
      },
      {
        "comments": [
          "@param KEY_PAGEDOWN - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_PAGEDOWN",
        "typing": "77"
      },
      {
        "comments": [
          "@param KEY_BREAK - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_BREAK",
        "typing": "78"
      },
      {
        "comments": [
          "@param KEY_LSHIFT - The left Shift key, has been seen to be triggered by Right Shift in @PanelHooks:OnKeyCodePressed"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_LSHIFT",
        "typing": "79"
      },
      {
        "comments": [
          "@param KEY_RSHIFT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_RSHIFT",
        "typing": "80"
      },
      {
        "comments": [
          "@param KEY_LALT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_LALT",
        "typing": "81"
      },
      {
        "comments": [
          "@param KEY_RALT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_RALT",
        "typing": "82"
      },
      {
        "comments": [
          "@param KEY_LCONTROL - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_LCONTROL",
        "typing": "83"
      },
      {
        "comments": [
          "@param KEY_RCONTROL - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_RCONTROL",
        "typing": "84"
      },
      {
        "comments": [
          "@param KEY_LWIN - The left Windows key or the Command key on Mac OSX"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_LWIN",
        "typing": "85"
      },
      {
        "comments": [
          "@param KEY_RWIN - The right Windows key or the Command key on Mac OSX"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_RWIN",
        "typing": "86"
      },
      {
        "comments": [
          "@param KEY_APP - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_APP",
        "typing": "87"
      },
      {
        "comments": [
          "@param KEY_UP - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_UP",
        "typing": "88"
      },
      {
        "comments": [
          "@param KEY_LEFT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_LEFT",
        "typing": "89"
      },
      {
        "comments": [
          "@param KEY_DOWN - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_DOWN",
        "typing": "90"
      },
      {
        "comments": [
          "@param KEY_RIGHT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_RIGHT",
        "typing": "91"
      },
      {
        "comments": [
          "@param KEY_F1 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F1",
        "typing": "92"
      },
      {
        "comments": [
          "@param KEY_F2 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F2",
        "typing": "93"
      },
      {
        "comments": [
          "@param KEY_F3 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F3",
        "typing": "94"
      },
      {
        "comments": [
          "@param KEY_F4 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F4",
        "typing": "95"
      },
      {
        "comments": [
          "@param KEY_F5 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F5",
        "typing": "96"
      },
      {
        "comments": [
          "@param KEY_F6 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F6",
        "typing": "97"
      },
      {
        "comments": [
          "@param KEY_F7 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F7",
        "typing": "98"
      },
      {
        "comments": [
          "@param KEY_F8 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F8",
        "typing": "99"
      },
      {
        "comments": [
          "@param KEY_F9 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F9",
        "typing": "100"
      },
      {
        "comments": [
          "@param KEY_F10 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F10",
        "typing": "101"
      },
      {
        "comments": [
          "@param KEY_F11 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F11",
        "typing": "102"
      },
      {
        "comments": [
          "@param KEY_F12 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_F12",
        "typing": "103"
      },
      {
        "comments": [
          "@param KEY_CAPSLOCKTOGGLE - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_CAPSLOCKTOGGLE",
        "typing": "104"
      },
      {
        "comments": [
          "@param KEY_NUMLOCKTOGGLE - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_NUMLOCKTOGGLE",
        "typing": "105"
      },
      {
        "comments": [
          "@param KEY_LAST - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_LAST",
        "typing": "106"
      },
      {
        "comments": [
          "@param KEY_SCROLLLOCKTOGGLE - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_SCROLLLOCKTOGGLE",
        "typing": "106"
      },
      {
        "comments": [
          "@param KEY_COUNT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_COUNT",
        "typing": "107"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_A - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_A",
        "typing": "114"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_B - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_B",
        "typing": "115"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_X - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_X",
        "typing": "116"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_Y - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_Y",
        "typing": "117"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_LEFT_SHOULDER - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_LEFT_SHOULDER",
        "typing": "118"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_RIGHT_SHOULDER - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_RIGHT_SHOULDER",
        "typing": "119"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_BACK - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_BACK",
        "typing": "120"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_START - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_START",
        "typing": "121"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_STICK1 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_STICK1",
        "typing": "122"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_STICK2 - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_STICK2",
        "typing": "123"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_UP - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_UP",
        "typing": "146"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_RIGHT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_RIGHT",
        "typing": "147"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_DOWN - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_DOWN",
        "typing": "148"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_LEFT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_LEFT",
        "typing": "149"
      },
      {
        "comments": [
          "@param KEY_XSTICK1_RIGHT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XSTICK1_RIGHT",
        "typing": "150"
      },
      {
        "comments": [
          "@param KEY_XSTICK1_LEFT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XSTICK1_LEFT",
        "typing": "151"
      },
      {
        "comments": [
          "@param KEY_XSTICK1_DOWN - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XSTICK1_DOWN",
        "typing": "152"
      },
      {
        "comments": [
          "@param KEY_XSTICK1_UP - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XSTICK1_UP",
        "typing": "153"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_LTRIGGER - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_LTRIGGER",
        "typing": "154"
      },
      {
        "comments": [
          "@param KEY_XBUTTON_RTRIGGER - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XBUTTON_RTRIGGER",
        "typing": "155"
      },
      {
        "comments": [
          "@param KEY_XSTICK2_RIGHT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XSTICK2_RIGHT",
        "typing": "156"
      },
      {
        "comments": [
          "@param KEY_XSTICK2_LEFT - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XSTICK2_LEFT",
        "typing": "157"
      },
      {
        "comments": [
          "@param KEY_XSTICK2_DOWN - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XSTICK2_DOWN",
        "typing": "158"
      },
      {
        "comments": [
          "@param KEY_XSTICK2_UP - no description"
        ],
        "context": "KEY",
        "type": "enum",
        "name": "KEY_XSTICK2_UP",
        "typing": "159"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/IN",
      "@enum IN",
      "@description Unlike @BUTTON_CODE enum, these enums are abstracted to allow the user to bind actions to any key they might prefer.\nKeybinds using these actions work with two console commands, one starting with a plus and one with a minus symbol. A key press or release will call either the plus or minus command, adding or removing the corresponding enum in the current @CUserCmd type.\nEnumerations used by:\n* @Player:KeyDown\n* @Player:KeyDownLast\n* @Player:KeyPressed\n* @Player:KeyReleased\n* @CMoveData:AddKey\n* @CMoveData:GetButtons\n* @CMoveData:GetOldButtons\n* @CMoveData:KeyDown\n* @CMoveData:KeyPressed\n* @CMoveData:KeyReleased\n* @CMoveData:KeyWasDown\n* @CMoveData:SetButtons\n* @CMoveData:SetOldButtons\n* @CUserCmd:GetButtons\n* @CUserCmd:KeyDown\n* @CUserCmd:RemoveKey\n* @CUserCmd:SetButtons\n* @GamemodeHooks:KeyPress\n* @GamemodeHooks:KeyRelease",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "IN",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param IN_ATTACK - +attack bound key ( Default: Left Mouse Button )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_ATTACK",
        "typing": "1"
      },
      {
        "comments": [
          "@param IN_JUMP - +jump bound key ( Default: Space )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_JUMP",
        "typing": "2"
      },
      {
        "comments": [
          "@param IN_DUCK - +duck bound key ( Default: CTRL )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_DUCK",
        "typing": "4"
      },
      {
        "comments": [
          "@param IN_FORWARD - +forward bound key ( Default: W )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_FORWARD",
        "typing": "8"
      },
      {
        "comments": [
          "@param IN_BACK - +back bound key ( Default: S )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_BACK",
        "typing": "16"
      },
      {
        "comments": [
          "@param IN_USE - +use bound key ( Default: E )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_USE",
        "typing": "32"
      },
      {
        "comments": [
          "@param IN_CANCEL - no description"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_CANCEL",
        "typing": "64"
      },
      {
        "comments": [
          "@param IN_LEFT - +left bound key ( Look left )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_LEFT",
        "typing": "128"
      },
      {
        "comments": [
          "@param IN_RIGHT - +right bound key ( Look right )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_RIGHT",
        "typing": "256"
      },
      {
        "comments": [
          "@param IN_MOVELEFT - +moveleft bound key ( Default: A )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_MOVELEFT",
        "typing": "512"
      },
      {
        "comments": [
          "@param IN_MOVERIGHT - +moveright bound key ( Default: D )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_MOVERIGHT",
        "typing": "1024"
      },
      {
        "comments": [
          "@param IN_ATTACK2 - +attack2 bound key ( Default: Right Mouse Button )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_ATTACK2",
        "typing": "2048"
      },
      {
        "comments": [
          "@param IN_RUN - no description"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_RUN",
        "typing": "4096"
      },
      {
        "comments": [
          "@param IN_RELOAD - +reload bound key ( Default: R )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_RELOAD",
        "typing": "8192"
      },
      {
        "comments": [
          "@param IN_ALT1 - +alt1 bound key"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_ALT1",
        "typing": "16384"
      },
      {
        "comments": [
          "@param IN_ALT2 - +alt2 bound key"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_ALT2",
        "typing": "32768"
      },
      {
        "comments": [
          "@param IN_SCORE - +showscores bound key ( Default: Tab )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_SCORE",
        "typing": "65536"
      },
      {
        "comments": [
          "@param IN_SPEED - +speed bound key ( Default: Shift )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_SPEED",
        "typing": "131072"
      },
      {
        "comments": [
          "@param IN_WALK - +walk bound key ( Slow walk )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_WALK",
        "typing": "262144"
      },
      {
        "comments": [
          "@param IN_ZOOM - +zoom bound key ( Suit Zoom )"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_ZOOM",
        "typing": "524288"
      },
      {
        "comments": [
          "@param IN_WEAPON1 - For use in weapons. Set in the physgun when scrolling an object away from you."
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_WEAPON1",
        "typing": "1048576"
      },
      {
        "comments": [
          "@param IN_WEAPON2 - For use in weapons. Set in the physgun when scrolling an object towards you."
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_WEAPON2",
        "typing": "2097152"
      },
      {
        "comments": [
          "@param IN_BULLRUSH - no description"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_BULLRUSH",
        "typing": "4194304"
      },
      {
        "comments": [
          "@param IN_GRENADE1 - +grenade1 bound key"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_GRENADE1",
        "typing": "8388608"
      },
      {
        "comments": [
          "@param IN_GRENADE2 - +grenade2 bound key"
        ],
        "context": "IN",
        "type": "enum",
        "name": "IN_GRENADE2",
        "typing": "16777216"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/IMAGE FORMAT",
      "@enum IMAGE_FORMAT",
      "@description Enumerations used by @GetRenderTargetEx function. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "IMAGE_FORMAT",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param IMAGE_FORMAT_DEFAULT - no description"
        ],
        "context": "IMAGE_FORMAT",
        "type": "enum",
        "name": "IMAGE_FORMAT_DEFAULT",
        "typing": "-1"
      },
      {
        "comments": [
          "@param IMAGE_FORMAT_RGBA8888 - no description"
        ],
        "context": "IMAGE_FORMAT",
        "type": "enum",
        "name": "IMAGE_FORMAT_RGBA8888",
        "typing": "0"
      },
      {
        "comments": [
          "@param IMAGE_FORMAT_ABGR8888 - no description"
        ],
        "context": "IMAGE_FORMAT",
        "type": "enum",
        "name": "IMAGE_FORMAT_ABGR8888",
        "typing": "1"
      },
      {
        "comments": [
          "@param IMAGE_FORMAT_RGB888 - no description"
        ],
        "context": "IMAGE_FORMAT",
        "type": "enum",
        "name": "IMAGE_FORMAT_RGB888",
        "typing": "2"
      },
      {
        "comments": [
          "@param IMAGE_FORMAT_BGR888 - no description"
        ],
        "context": "IMAGE_FORMAT",
        "type": "enum",
        "name": "IMAGE_FORMAT_BGR888",
        "typing": "3"
      },
      {
        "comments": [
          "@param IMAGE_FORMAT_RGB565 - no description"
        ],
        "context": "IMAGE_FORMAT",
        "type": "enum",
        "name": "IMAGE_FORMAT_RGB565",
        "typing": "4"
      },
      {
        "comments": [
          "@param IMAGE_FORMAT_ARGB8888 - no description"
        ],
        "context": "IMAGE_FORMAT",
        "type": "enum",
        "name": "IMAGE_FORMAT_ARGB8888",
        "typing": "11"
      },
      {
        "comments": [
          "@param IMAGE_FORMAT_BGRA8888 - no description"
        ],
        "context": "IMAGE_FORMAT",
        "type": "enum",
        "name": "IMAGE_FORMAT_BGRA8888",
        "typing": "12"
      },
      {
        "comments": [
          "@param IMAGE_FORMAT_RGBA16161616 - no description"
        ],
        "context": "IMAGE_FORMAT",
        "type": "enum",
        "name": "IMAGE_FORMAT_RGBA16161616",
        "typing": "25"
      },
      {
        "comments": [
          "@param IMAGE_FORMAT_RGBA16161616F - no description"
        ],
        "context": "IMAGE_FORMAT",
        "type": "enum",
        "name": "IMAGE_FORMAT_RGBA16161616F",
        "typing": "24"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/HULL",
      "@enum HULL",
      "@description Enumerations used by @NPC:SetHullType and  @NPC:GetHullType. Serverside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "HULL",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param HULL_HUMAN - Hull of a Citizen"
        ],
        "context": "HULL",
        "type": "enum",
        "name": "HULL_HUMAN",
        "typing": "0"
      },
      {
        "comments": [
          "@param HULL_SMALL_CENTERED - no description"
        ],
        "context": "HULL",
        "type": "enum",
        "name": "HULL_SMALL_CENTERED",
        "typing": "1"
      },
      {
        "comments": [
          "@param HULL_WIDE_HUMAN - no description"
        ],
        "context": "HULL",
        "type": "enum",
        "name": "HULL_WIDE_HUMAN",
        "typing": "2"
      },
      {
        "comments": [
          "@param HULL_TINY - no description"
        ],
        "context": "HULL",
        "type": "enum",
        "name": "HULL_TINY",
        "typing": "3"
      },
      {
        "comments": [
          "@param HULL_WIDE_SHORT - no description"
        ],
        "context": "HULL",
        "type": "enum",
        "name": "HULL_WIDE_SHORT",
        "typing": "4"
      },
      {
        "comments": [
          "@param HULL_MEDIUM - no description"
        ],
        "context": "HULL",
        "type": "enum",
        "name": "HULL_MEDIUM",
        "typing": "5"
      },
      {
        "comments": [
          "@param HULL_TINY_CENTERED - no description"
        ],
        "context": "HULL",
        "type": "enum",
        "name": "HULL_TINY_CENTERED",
        "typing": "6"
      },
      {
        "comments": [
          "@param HULL_LARGE - no description"
        ],
        "context": "HULL",
        "type": "enum",
        "name": "HULL_LARGE",
        "typing": "7"
      },
      {
        "comments": [
          "@param HULL_LARGE_CENTERED - no description"
        ],
        "context": "HULL",
        "type": "enum",
        "name": "HULL_LARGE_CENTERED",
        "typing": "8"
      },
      {
        "comments": [
          "@param HULL_MEDIUM_TALL - no description"
        ],
        "context": "HULL",
        "type": "enum",
        "name": "HULL_MEDIUM_TALL",
        "typing": "9"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/HUD",
      "@enum HUD",
      "@description Enumerations used by @Player:PrintMessage and @PrintMessage function.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "HUD",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param HUD_PRINTNOTIFY - No longer works; now same as HUD_PRINTCONSOLE"
        ],
        "context": "HUD",
        "type": "enum",
        "name": "HUD_PRINTNOTIFY",
        "typing": "1"
      },
      {
        "comments": [
          "@param HUD_PRINTCONSOLE - Console"
        ],
        "context": "HUD",
        "type": "enum",
        "name": "HUD_PRINTCONSOLE",
        "typing": "2"
      },
      {
        "comments": [
          "@param HUD_PRINTTALK - Chat, also prints to console"
        ],
        "context": "HUD",
        "type": "enum",
        "name": "HUD_PRINTTALK",
        "typing": "3"
      },
      {
        "comments": [
          "@param HUD_PRINTCENTER - Center of the screen"
        ],
        "context": "HUD",
        "type": "enum",
        "name": "HUD_PRINTCENTER",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/HITGROUP",
      "@enum HITGROUP",
      "@description Enumerations used by @GamemodeHooks:ScalePlayerDamage and @GamemodeHooks:ScaleNPCDamage and returned by @Player:LastHitGroup.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "HITGROUP",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param HITGROUP_GENERIC - 1:1 damage. Melee weapons typically hit this hitgroup.\nThis hitgroup is not present on default player models.It is unknown how this is generated in @GamemodeHooks:ScalePlayerDamage, but it occurs when shot by NPCs ( npc_combine_s ) for example."
        ],
        "context": "HITGROUP",
        "type": "enum",
        "name": "HITGROUP_GENERIC",
        "typing": "0"
      },
      {
        "comments": [
          "@param HITGROUP_HEAD - Head"
        ],
        "context": "HITGROUP",
        "type": "enum",
        "name": "HITGROUP_HEAD",
        "typing": "1"
      },
      {
        "comments": [
          "@param HITGROUP_CHEST - Chest"
        ],
        "context": "HITGROUP",
        "type": "enum",
        "name": "HITGROUP_CHEST",
        "typing": "2"
      },
      {
        "comments": [
          "@param HITGROUP_STOMACH - Stomach"
        ],
        "context": "HITGROUP",
        "type": "enum",
        "name": "HITGROUP_STOMACH",
        "typing": "3"
      },
      {
        "comments": [
          "@param HITGROUP_LEFTARM - Left arm"
        ],
        "context": "HITGROUP",
        "type": "enum",
        "name": "HITGROUP_LEFTARM",
        "typing": "4"
      },
      {
        "comments": [
          "@param HITGROUP_RIGHTARM - Right arm"
        ],
        "context": "HITGROUP",
        "type": "enum",
        "name": "HITGROUP_RIGHTARM",
        "typing": "5"
      },
      {
        "comments": [
          "@param HITGROUP_LEFTLEG - Left leg"
        ],
        "context": "HITGROUP",
        "type": "enum",
        "name": "HITGROUP_LEFTLEG",
        "typing": "6"
      },
      {
        "comments": [
          "@param HITGROUP_RIGHTLEG - Right leg"
        ],
        "context": "HITGROUP",
        "type": "enum",
        "name": "HITGROUP_RIGHTLEG",
        "typing": "7"
      },
      {
        "comments": [
          "@param HITGROUP_GEAR - Gear. Supposed to be belt area.This hitgroup is not present on default player models."
        ],
        "context": "HITGROUP",
        "type": "enum",
        "name": "HITGROUP_GEAR",
        "typing": "10"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/GMOD CHANNEL",
      "@enum GMOD_CHANNEL",
      "@description Enumerations used by @IGModAudioChannel:GetState. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "GMOD_CHANNEL",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param GMOD_CHANNEL_STOPPED - The channel is stopped"
        ],
        "context": "GMOD_CHANNEL",
        "type": "enum",
        "name": "GMOD_CHANNEL_STOPPED",
        "typing": "0"
      },
      {
        "comments": [
          "@param GMOD_CHANNEL_PLAYING - The channel is playing"
        ],
        "context": "GMOD_CHANNEL",
        "type": "enum",
        "name": "GMOD_CHANNEL_PLAYING",
        "typing": "1"
      },
      {
        "comments": [
          "@param GMOD_CHANNEL_PAUSED - The channel is paused"
        ],
        "context": "GMOD_CHANNEL",
        "type": "enum",
        "name": "GMOD_CHANNEL_PAUSED",
        "typing": "2"
      },
      {
        "comments": [
          "@param GMOD_CHANNEL_STALLED - The channel is buffering"
        ],
        "context": "GMOD_CHANNEL",
        "type": "enum",
        "name": "GMOD_CHANNEL_STALLED",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/GLOBAL",
      "@enum GLOBAL",
      "@description Enumerations used by @game.SetGlobalState and @game.GetGlobalState.\nServerside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "GLOBAL",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param GLOBAL_OFF - Initial state, the global state is off."
        ],
        "context": "GLOBAL",
        "type": "enum",
        "name": "GLOBAL_OFF",
        "typing": "0"
      },
      {
        "comments": [
          "@param GLOBAL_ON - The global state is enabled."
        ],
        "context": "GLOBAL",
        "type": "enum",
        "name": "GLOBAL_ON",
        "typing": "1"
      },
      {
        "comments": [
          "@param GLOBAL_DEAD - The global state is dead and is no longer active. It will be cleared."
        ],
        "context": "GLOBAL",
        "type": "enum",
        "name": "GLOBAL_DEAD",
        "typing": "2"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/GESTURE SLOT",
      "@enum GESTURE_SLOT",
      "@description Enumerations used by @Player:AnimResetGestureSlot and @Player:AnimRestartGesture.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "GESTURE_SLOT",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param GESTURE_SLOT_ATTACK_AND_RELOAD - Slot for weapon gestures"
        ],
        "context": "GESTURE_SLOT",
        "type": "enum",
        "name": "GESTURE_SLOT_ATTACK_AND_RELOAD",
        "typing": "0"
      },
      {
        "comments": [
          "@param GESTURE_SLOT_GRENADE - no description"
        ],
        "context": "GESTURE_SLOT",
        "type": "enum",
        "name": "GESTURE_SLOT_GRENADE",
        "typing": "1"
      },
      {
        "comments": [
          "@param GESTURE_SLOT_JUMP - Slot for jump gestures"
        ],
        "context": "GESTURE_SLOT",
        "type": "enum",
        "name": "GESTURE_SLOT_JUMP",
        "typing": "2"
      },
      {
        "comments": [
          "@param GESTURE_SLOT_SWIM - Slot for swimming gestures"
        ],
        "context": "GESTURE_SLOT",
        "type": "enum",
        "name": "GESTURE_SLOT_SWIM",
        "typing": "3"
      },
      {
        "comments": [
          "@param GESTURE_SLOT_FLINCH - Slot for flinching gestures"
        ],
        "context": "GESTURE_SLOT",
        "type": "enum",
        "name": "GESTURE_SLOT_FLINCH",
        "typing": "4"
      },
      {
        "comments": [
          "@param GESTURE_SLOT_VCD - no description"
        ],
        "context": "GESTURE_SLOT",
        "type": "enum",
        "name": "GESTURE_SLOT_VCD",
        "typing": "5"
      },
      {
        "comments": [
          "@param GESTURE_SLOT_CUSTOM - Slot for custom gestures"
        ],
        "context": "GESTURE_SLOT",
        "type": "enum",
        "name": "GESTURE_SLOT_CUSTOM",
        "typing": "6"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/FVPHYSICS",
      "@enum FVPHYSICS",
      "@description Enumerations used by @PhysObj:AddGameFlag, @PhysObj:HasGameFlag and @PhysObj:ClearGameFlag.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "FVPHYSICS",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param FVPHYSICS_CONSTRAINT_STATIC - Won't receive physics forces from collisions and won't collide with other @PhysObj type with the same flag set."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_CONSTRAINT_STATIC",
        "typing": "2"
      },
      {
        "comments": [
          "@param FVPHYSICS_DMG_DISSOLVE - Colliding with entities will cause 1000 damage with DMG_DISSOLVE as the damage type, but only if EFL_NO_DISSOLVE is not set."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_DMG_DISSOLVE",
        "typing": "512"
      },
      {
        "comments": [
          "@param FVPHYSICS_DMG_SLICE - Does slice damage, not just blunt damage."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_DMG_SLICE",
        "typing": "1"
      },
      {
        "comments": [
          "@param FVPHYSICS_HEAVY_OBJECT - Will deal high physics damage even with a small mass."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_HEAVY_OBJECT",
        "typing": "32"
      },
      {
        "comments": [
          "@param FVPHYSICS_MULTIOBJECT_ENTITY - This @PhysObj type is part of an entity with multiple @PhysObj type , such as a ragdoll or a vehicle , and will be considered during collision damage events."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_MULTIOBJECT_ENTITY",
        "typing": "16"
      },
      {
        "comments": [
          "@param FVPHYSICS_NO_IMPACT_DMG - Colliding with entities won't cause physics damage."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_NO_IMPACT_DMG",
        "typing": "1024"
      },
      {
        "comments": [
          "@param FVPHYSICS_NO_NPC_IMPACT_DMG - Like FVPHYSICS_NO_NPC_IMPACT_DMG, but only checks for NPCs. Usually set on Combine Balls fired by Combine Soldiers."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_NO_NPC_IMPACT_DMG",
        "typing": "2048"
      },
      {
        "comments": [
          "@param FVPHYSICS_NO_PLAYER_PICKUP - Doesn't allow the player to pick this @PhysObj type with the Gravity Gun or +use pickup."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_NO_PLAYER_PICKUP",
        "typing": "128"
      },
      {
        "comments": [
          "@param FVPHYSICS_NO_SELF_COLLISIONS - We won't collide with other @PhysObj type associated to the same entity, only used for vehicles and ragdolls held by the Super Gravity Gun."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_NO_SELF_COLLISIONS",
        "typing": "32768"
      },
      {
        "comments": [
          "@param FVPHYSICS_PART_OF_RAGDOLL - This @PhysObj type is part of a ragdoll."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_PART_OF_RAGDOLL",
        "typing": "8"
      },
      {
        "comments": [
          "@param FVPHYSICS_PENETRATING - Set by the physics engine when two @PhysObj type are penetrating each other. This is only automatically updated for non-static physics objects."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_PENETRATING",
        "typing": "64"
      },
      {
        "comments": [
          "@param FVPHYSICS_PLAYER_HELD - Set when the player is holding this @PhysObj type with the Gravity Gun or +use pickup."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_PLAYER_HELD",
        "typing": "4"
      },
      {
        "comments": [
          "@param FVPHYSICS_WAS_THROWN - This object was thrown by the Gravity Gun , stuns Antlion guards, Hunters, and squashes Antlion grubs."
        ],
        "context": "FVPHYSICS",
        "type": "enum",
        "name": "FVPHYSICS_WAS_THROWN",
        "typing": "256"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/FSOLID",
      "@enum FSOLID",
      "@description Enumerations used by @EntityFuncs:SetSolidFlags and @EntityFuncs:GetSolidFlags.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "FSOLID",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param FSOLID_CUSTOMRAYTEST - Ignore solid type + always call into the entity for ray tests"
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_CUSTOMRAYTEST",
        "typing": "1"
      },
      {
        "comments": [
          "@param FSOLID_CUSTOMBOXTEST - Ignore solid type + always call into the entity for swept box tests"
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_CUSTOMBOXTEST",
        "typing": "2"
      },
      {
        "comments": [
          "@param FSOLID_NOT_SOLID - The object is currently not solid"
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_NOT_SOLID",
        "typing": "4"
      },
      {
        "comments": [
          "@param FSOLID_TRIGGER - This is something may be collideable but fires touch functions even when it's not collideable (when the FSOLID_NOT_SOLID flag is set)"
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_TRIGGER",
        "typing": "8"
      },
      {
        "comments": [
          "@param FSOLID_NOT_STANDABLE - The player can't stand on this"
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_NOT_STANDABLE",
        "typing": "16"
      },
      {
        "comments": [
          "@param FSOLID_VOLUME_CONTENTS - Contains volumetric contents (like water)"
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_VOLUME_CONTENTS",
        "typing": "32"
      },
      {
        "comments": [
          "@param FSOLID_FORCE_WORLD_ALIGNED - Forces the collision representation to be world-aligned even if it's SOLID_BSP or SOLID_VPHYSICS"
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_FORCE_WORLD_ALIGNED",
        "typing": "64"
      },
      {
        "comments": [
          "@param FSOLID_USE_TRIGGER_BOUNDS - Uses a special trigger bounds separate from the normal OBB"
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_USE_TRIGGER_BOUNDS",
        "typing": "128"
      },
      {
        "comments": [
          "@param FSOLID_ROOT_PARENT_ALIGNED - Collisions are defined in root parent's local coordinate space"
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_ROOT_PARENT_ALIGNED",
        "typing": "256"
      },
      {
        "comments": [
          "@param FSOLID_TRIGGER_TOUCH_DEBRIS - This trigger will touch debris objects"
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_TRIGGER_TOUCH_DEBRIS",
        "typing": "512"
      },
      {
        "comments": [
          "@param FSOLID_MAX_BITS - The amount of bits needed to store the all the flags in a variable/sent over network."
        ],
        "context": "FSOLID",
        "type": "enum",
        "name": "FSOLID_MAX_BITS",
        "typing": "10"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/FORCE",
      "@enum FORCE",
      "@description Enumerations used by @AccessorFunc function.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "FORCE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param FORCE_STRING - Forces the function to take @string types only"
        ],
        "context": "FORCE",
        "type": "enum",
        "name": "FORCE_STRING",
        "typing": "1"
      },
      {
        "comments": [
          "@param FORCE_NUMBER - Forces the function to take @number types only"
        ],
        "context": "FORCE",
        "type": "enum",
        "name": "FORCE_NUMBER",
        "typing": "2"
      },
      {
        "comments": [
          "@param FORCE_BOOL - Forces the function to take @boolean types only"
        ],
        "context": "FORCE",
        "type": "enum",
        "name": "FORCE_BOOL",
        "typing": "3"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/FL",
      "@bug  Bots will still be able to look around.",
      "@enum FL",
      "@description Enumerations used by @EntityFuncs:AddFlags, @EntityFuncs:RemoveFlags and @EntityFuncs:IsFlagSet.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "FL",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param FL_ONGROUND - Is the entity on ground or not"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_ONGROUND",
        "typing": "1"
      },
      {
        "comments": [
          "@param FL_DUCKING - Is player ducking or not"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_DUCKING",
        "typing": "2"
      },
      {
        "comments": [
          "@param FL_ANIMDUCKING - Is the player in the process of ducking or standing up"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_ANIMDUCKING",
        "typing": "4"
      },
      {
        "comments": [
          "@param FL_WATERJUMP - The player is jumping out of water"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_WATERJUMP",
        "typing": "8"
      },
      {
        "comments": [
          "@param FL_ONTRAIN - This player is controlling a func_train"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_ONTRAIN",
        "typing": "16"
      },
      {
        "comments": [
          "@param FL_INRAIN - Indicates the entity is standing in rain"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_INRAIN",
        "typing": "32"
      },
      {
        "comments": [
          "@param FL_FROZEN - Completely freezes the player"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_FROZEN",
        "typing": "64"
      },
      {
        "comments": [
          "@param FL_ATCONTROLS - This player is controlling something UI related in the world, this prevents his movement, but doesn't freeze mouse movement, jumping, etc."
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_ATCONTROLS",
        "typing": "128"
      },
      {
        "comments": [
          "@param FL_CLIENT - Is this entity a player or not"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_CLIENT",
        "typing": "256"
      },
      {
        "comments": [
          "@param FL_FAKECLIENT - Bots have this flag"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_FAKECLIENT",
        "typing": "512"
      },
      {
        "comments": [
          "@param FL_INWATER - Is the player in water or not"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_INWATER",
        "typing": "1024"
      },
      {
        "comments": [
          "@param FL_FLY - This entity can fly"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_FLY",
        "typing": "2048"
      },
      {
        "comments": [
          "@param FL_SWIM - This entity can swim"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_SWIM",
        "typing": "4096"
      },
      {
        "comments": [
          "@param FL_CONVEYOR - This entity is a func_conveyor"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_CONVEYOR",
        "typing": "8192"
      },
      {
        "comments": [
          "@param FL_NPC - NPCs have this flag (NPC: Ignore player push)"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_NPC",
        "typing": "16384"
      },
      {
        "comments": [
          "@param FL_GODMODE - Whether the player has god mode enabled"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_GODMODE",
        "typing": "32768"
      },
      {
        "comments": [
          "@param FL_NOTARGET - Makes the entity invisible to AI"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_NOTARGET",
        "typing": "65536"
      },
      {
        "comments": [
          "@param FL_AIMTARGET - This entity can be aimed at"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_AIMTARGET",
        "typing": "131072"
      },
      {
        "comments": [
          "@param FL_PARTIALGROUND - Not all corners are valid"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_PARTIALGROUND",
        "typing": "262144"
      },
      {
        "comments": [
          "@param FL_STATICPROP - It's a static prop"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_STATICPROP",
        "typing": "524288"
      },
      {
        "comments": [
          "@param FL_GRAPHED - worldgraph has this ent listed as something that blocks a connection"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_GRAPHED",
        "typing": "1048576"
      },
      {
        "comments": [
          "@param FL_GRENADE - This entity is a grenade, unused"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_GRENADE",
        "typing": "2097152"
      },
      {
        "comments": [
          "@param FL_STEPMOVEMENT - Changes the SV_Movestep() behavior to not do any processing"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_STEPMOVEMENT",
        "typing": "4194304"
      },
      {
        "comments": [
          "@param FL_DONTTOUCH - Doesn't generate touch functions, calls @EntityHooks:EndTouch when this flag gets set during a touch callback"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_DONTTOUCH",
        "typing": "8388608"
      },
      {
        "comments": [
          "@param FL_BASEVELOCITY - Base velocity has been applied this frame (used to convert base velocity into momentum)"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_BASEVELOCITY",
        "typing": "16777216"
      },
      {
        "comments": [
          "@param FL_WORLDBRUSH - This entity is a brush and part of the world"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_WORLDBRUSH",
        "typing": "33554432"
      },
      {
        "comments": [
          "@param FL_OBJECT - This entity can be seen by NPCs"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_OBJECT",
        "typing": "67108864"
      },
      {
        "comments": [
          "@param FL_KILLME - This entity is about to get removed"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_KILLME",
        "typing": "134217728"
      },
      {
        "comments": [
          "@param FL_ONFIRE - This entity is on fire"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_ONFIRE",
        "typing": "268435456"
      },
      {
        "comments": [
          "@param FL_DISSOLVING - The entity is currently dissolving"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_DISSOLVING",
        "typing": "536870912"
      },
      {
        "comments": [
          "@param FL_TRANSRAGDOLL - This entity is about to become a ragdoll"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_TRANSRAGDOLL",
        "typing": "1073741824"
      },
      {
        "comments": [
          "@param FL_UNBLOCKABLE_BY_PLAYER - This moving door can't be blocked by the player"
        ],
        "context": "FL",
        "type": "enum",
        "name": "FL_UNBLOCKABLE_BY_PLAYER",
        "typing": "-2147483648"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/FFT",
      "@enum FFT",
      "@description Enumerations used by @IGModAudioChannel:FFT. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "FFT",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param FFT_256 - 128 levels"
        ],
        "context": "FFT",
        "type": "enum",
        "name": "FFT_256",
        "typing": "0"
      },
      {
        "comments": [
          "@param FFT_512 - 256 levels"
        ],
        "context": "FFT",
        "type": "enum",
        "name": "FFT_512",
        "typing": "1"
      },
      {
        "comments": [
          "@param FFT_1024 - 512 levels"
        ],
        "context": "FFT",
        "type": "enum",
        "name": "FFT_1024",
        "typing": "2"
      },
      {
        "comments": [
          "@param FFT_2048 - 1024 levels"
        ],
        "context": "FFT",
        "type": "enum",
        "name": "FFT_2048",
        "typing": "3"
      },
      {
        "comments": [
          "@param FFT_4096 - 2048 levels"
        ],
        "context": "FFT",
        "type": "enum",
        "name": "FFT_4096",
        "typing": "4"
      },
      {
        "comments": [
          "@param FFT_8192 - 4096 levels"
        ],
        "context": "FFT",
        "type": "enum",
        "name": "FFT_8192",
        "typing": "5"
      },
      {
        "comments": [
          "@param FFT_16384 - 8192 levels"
        ],
        "context": "FFT",
        "type": "enum",
        "name": "FFT_16384",
        "typing": "6"
      },
      {
        "comments": [
          "@param FFT_32768 - 16384 levels"
        ],
        "context": "FFT",
        "type": "enum",
        "name": "FFT_32768",
        "typing": "7"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/FCVAR",
      "@enum FCVAR",
      "@description Enumerations used by @concommand.Add, @CreateClientConVar function and @CreateConVar function.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "FCVAR",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param FCVAR_ARCHIVE - Save the @ConVar type value into config.cfg\nReported as \"a\" by *cvarlist*, except Lua @ConVar types"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_ARCHIVE",
        "typing": "128"
      },
      {
        "comments": [
          "@param FCVAR_ARCHIVE_XBOX - Save the @ConVar type value into config.cfg on XBox"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_ARCHIVE_XBOX",
        "typing": "16777216"
      },
      {
        "comments": [
          "@param FCVAR_CHEAT - Requires sv_cheats to be enabled to change the @ConVar type or run the command\nReported as \"cheat\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_CHEAT",
        "typing": "16384"
      },
      {
        "comments": [
          "@param FCVAR_CLIENTCMD_CAN_EXECUTE - IVEngineClient::ClientCmd is allowed to execute this command\nReported as \"clientcmd_can_execute\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_CLIENTCMD_CAN_EXECUTE",
        "typing": "1073741824"
      },
      {
        "comments": [
          "@param FCVAR_CLIENTDLL - @ConVar type is defined by the client DLL.This flag is set automatically\nReported as \"cl\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_CLIENTDLL",
        "typing": "8"
      },
      {
        "comments": [
          "@param FCVAR_DEMO - Force the @ConVar type to be recorded by demo recordings.\nReported as \"demo\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_DEMO",
        "typing": "65536"
      },
      {
        "comments": [
          "@param FCVAR_DONTRECORD - Opposite of FCVAR_DEMO, ensures the @ConVar type is not recorded in demos\nReported as \"norecord\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_DONTRECORD",
        "typing": "131072"
      },
      {
        "comments": [
          "@param FCVAR_GAMEDLL - @ConVar type is defined by the game DLL.This flag is set automatically\nReported as \"sv\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_GAMEDLL",
        "typing": "4"
      },
      {
        "comments": [
          "@param FCVAR_LUA_CLIENT - Set automatically on all ConVars and console commands created by the client Lua state.\nReported as \"lua_client\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_LUA_CLIENT",
        "typing": "262144"
      },
      {
        "comments": [
          "@param FCVAR_LUA_SERVER - Set automatically on all ConVars and console commands created by the server Lua state.\nReported as \"lua_server\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_LUA_SERVER",
        "typing": "524288"
      },
      {
        "comments": [
          "@param FCVAR_NEVER_AS_STRING - Tells the engine to never print this variable as a string.\nReported as \"numeric\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_NEVER_AS_STRING",
        "typing": "4096"
      },
      {
        "comments": [
          "@param FCVAR_NONE - No flags"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param FCVAR_NOTIFY - For serverside @ConVar types, notifies all players with blue chat text when the value gets changed\nReported as \"nf\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_NOTIFY",
        "typing": "256"
      },
      {
        "comments": [
          "@param FCVAR_NOT_CONNECTED - Makes the @ConVar type not changeable while connected to a server or in singleplayer"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_NOT_CONNECTED",
        "typing": "4194304"
      },
      {
        "comments": [
          "@param FCVAR_PRINTABLEONLY - Forces the @ConVar type to only have printable characters ( No control characters )\nReported as \"print\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_PRINTABLEONLY",
        "typing": "1024"
      },
      {
        "comments": [
          "@param FCVAR_PROTECTED - Makes the @ConVar type value hidden from all clients ( For example sv_password )\nReported as \"prot\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_PROTECTED",
        "typing": "32"
      },
      {
        "comments": [
          "@param FCVAR_REPLICATED - For serverside @ConVar types, it will send its value to all clients. The @ConVar type with the same name must also exist on the client!\nReported as \"rep\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_REPLICATED",
        "typing": "8192"
      },
      {
        "comments": [
          "@param FCVAR_SERVER_CANNOT_QUERY - Prevents the server from querying value of this @ConVar type"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_SERVER_CANNOT_QUERY",
        "typing": "536870912"
      },
      {
        "comments": [
          "@param FCVAR_SERVER_CAN_EXECUTE - The server is allowed to execute this command on clients.\nReported as \"server_can_execute\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_SERVER_CAN_EXECUTE",
        "typing": "268435456"
      },
      {
        "comments": [
          "@param FCVAR_SPONLY - Executing the command or changing the @ConVar type is only allowed in singleplayer\nReported as \"sp\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_SPONLY",
        "typing": "64"
      },
      {
        "comments": [
          "@param FCVAR_UNLOGGED - Don't log the @ConVar type changes to console/log files/users\nReported as \"log\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_UNLOGGED",
        "typing": "2048"
      },
      {
        "comments": [
          "@param FCVAR_UNREGISTERED - If this is set, the convar will become anonymous and won't show up in the 'find' results."
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_UNREGISTERED",
        "typing": "1"
      },
      {
        "comments": [
          "@param FCVAR_USERINFO - For clientside commands, sends the value to the server\nReported as \"user\" by *cvarlist*"
        ],
        "context": "FCVAR",
        "type": "enum",
        "name": "FCVAR_USERINFO",
        "typing": "512"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/EFL",
      "@warning You should never set this flag manually.",
      "@enum EFL",
      "@description Enumerations used by @EntityFuncs:AddEFlags, @EntityFuncs:RemoveEFlags and @EntityFuncs:IsEFlagSet.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "EFL",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param EFL_BOT_FROZEN - This is set on bots that are frozen"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_BOT_FROZEN",
        "typing": "256"
      },
      {
        "comments": [
          "@param EFL_CHECK_UNTOUCH - no description"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_CHECK_UNTOUCH",
        "typing": "16777216"
      },
      {
        "comments": [
          "@param EFL_DIRTY_ABSANGVELOCITY - Some dirty bits with respect to abs computations"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_DIRTY_ABSANGVELOCITY",
        "typing": "8192"
      },
      {
        "comments": [
          "@param EFL_DIRTY_ABSTRANSFORM - no description"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_DIRTY_ABSTRANSFORM",
        "typing": "2048"
      },
      {
        "comments": [
          "@param EFL_DIRTY_ABSVELOCITY - no description"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_DIRTY_ABSVELOCITY",
        "typing": "4096"
      },
      {
        "comments": [
          "@param EFL_DIRTY_SHADOWUPDATE - (Client only) need shadow manager to update the shadow"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_DIRTY_SHADOWUPDATE",
        "typing": "32"
      },
      {
        "comments": [
          "@param EFL_DIRTY_SPATIAL_PARTITION - no description"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_DIRTY_SPATIAL_PARTITION",
        "typing": "32768"
      },
      {
        "comments": [
          "@param EFL_DIRTY_SURROUNDING_COLLISION_BOUNDS - no description"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_DIRTY_SURROUNDING_COLLISION_BOUNDS",
        "typing": "16384"
      },
      {
        "comments": [
          "@param EFL_DONTBLOCKLOS - Entity shouldn't block NPC line-of-sight"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_DONTBLOCKLOS",
        "typing": "33554432"
      },
      {
        "comments": [
          "@param EFL_DONTWALKON - NPCs should not walk on this entity"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_DONTWALKON",
        "typing": "67108864"
      },
      {
        "comments": [
          "@param EFL_DORMANT - Entity is dormant, no updates to client"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_DORMANT",
        "typing": "2"
      },
      {
        "comments": [
          "@param EFL_FORCE_CHECK_TRANSMIT - The default behavior in ShouldTransmit is to not send an entity if it doesn't have a model. Certain entities want to be sent anyway because all the drawing logic is in the client DLL. They can set this flag and the engine will transmit them even if they don't have model"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_FORCE_CHECK_TRANSMIT",
        "typing": "128"
      },
      {
        "comments": [
          "@param EFL_HAS_PLAYER_CHILD - One of the child entities is a player"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_HAS_PLAYER_CHILD",
        "typing": "16"
      },
      {
        "comments": [
          "@param EFL_IN_SKYBOX - This is set if the entity detects that it's in the skybox. This forces it to pass the \"in PVS\" for transmission"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_IN_SKYBOX",
        "typing": "131072"
      },
      {
        "comments": [
          "@param EFL_IS_BEING_LIFTED_BY_BARNACLE - no description"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_IS_BEING_LIFTED_BY_BARNACLE",
        "typing": "1048576"
      },
      {
        "comments": [
          "@param EFL_KEEP_ON_RECREATE_ENTITIES - This is a special entity that should not be deleted when we restart entities only"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_KEEP_ON_RECREATE_ENTITIES",
        "typing": "16"
      },
      {
        "comments": [
          "@param EFL_KILLME - This entity is marked for death -- This allows the game to actually delete ents at a safe time."
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_KILLME",
        "typing": "1"
      },
      {
        "comments": [
          "@param EFL_NOCLIP_ACTIVE - Lets us know when the noclip command is active"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NOCLIP_ACTIVE",
        "typing": "4"
      },
      {
        "comments": [
          "@param EFL_NOTIFY - Another entity is watching events on this entity (used by teleport)"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NOTIFY",
        "typing": "64"
      },
      {
        "comments": [
          "@param EFL_NO_AUTO_EDICT_ATTACH - Don't attach the edict"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NO_AUTO_EDICT_ATTACH",
        "typing": "1024"
      },
      {
        "comments": [
          "@param EFL_NO_DAMAGE_FORCES - Doesn't accept forces from physics damage"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NO_DAMAGE_FORCES",
        "typing": "-2147483648"
      },
      {
        "comments": [
          "@param EFL_NO_DISSOLVE - Entitiy shouldn't dissolve"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NO_DISSOLVE",
        "typing": "134217728"
      },
      {
        "comments": [
          "@param EFL_NO_GAME_PHYSICS_SIMULATION - no description"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NO_GAME_PHYSICS_SIMULATION",
        "typing": "8388608"
      },
      {
        "comments": [
          "@param EFL_NO_MEGAPHYSCANNON_RAGDOLL - Mega physcannon can't ragdoll these guys"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NO_MEGAPHYSCANNON_RAGDOLL",
        "typing": "268435456"
      },
      {
        "comments": [
          "@param EFL_NO_PHYSCANNON_INTERACTION - Physcannon can't pick these up or punt them"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NO_PHYSCANNON_INTERACTION",
        "typing": "1073741824"
      },
      {
        "comments": [
          "@param EFL_NO_ROTORWASH_PUSH - no description"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NO_ROTORWASH_PUSH",
        "typing": "2097152"
      },
      {
        "comments": [
          "@param EFL_NO_THINK_FUNCTION - Avoid executing the entity's Think"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NO_THINK_FUNCTION",
        "typing": "4194304"
      },
      {
        "comments": [
          "@param EFL_NO_WATER_VELOCITY_CHANGE - Don't adjust this entity's velocity when transitioning into water"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_NO_WATER_VELOCITY_CHANGE",
        "typing": "536870912"
      },
      {
        "comments": [
          "@param EFL_SERVER_ONLY - Non-networked entity"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_SERVER_ONLY",
        "typing": "512"
      },
      {
        "comments": [
          "@param EFL_SETTING_UP_BONES - Set while a model is setting up its bones"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_SETTING_UP_BONES",
        "typing": "8"
      },
      {
        "comments": [
          "@param EFL_TOUCHING_FLUID - Used to determine if an entity is floating"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_TOUCHING_FLUID",
        "typing": "524288"
      },
      {
        "comments": [
          "@param EFL_USE_PARTITION_WHEN_NOT_SOLID - Entities with this flag set show up in the partition even when not solid"
        ],
        "context": "EFL",
        "type": "enum",
        "name": "EFL_USE_PARTITION_WHEN_NOT_SOLID",
        "typing": "262144"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/EF",
      "@enum EF",
      "@description Enumerations used by @EntityFuncs:AddEffects,  @EntityFuncs:RemoveEffects and  @EntityFuncs:IsEffectActive.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "EF",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param EF_BONEMERGE - Performs bone merge on client side"
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_BONEMERGE",
        "typing": "1"
      },
      {
        "comments": [
          "@param EF_BONEMERGE_FASTCULL - For use with EF_BONEMERGE. If this is set, then it places this ents origin at its parent and uses the parent's bbox + the max extents of the aiment. Otherwise, it sets up the parent's bones every frame to figure out where to place the aiment, which is inefficient because it'll setup the parent's bones even if the parent is not in the PVS."
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_BONEMERGE_FASTCULL",
        "typing": "128"
      },
      {
        "comments": [
          "@param EF_BRIGHTLIGHT - DLIGHT centered at entity origin"
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_BRIGHTLIGHT",
        "typing": "2"
      },
      {
        "comments": [
          "@param EF_DIMLIGHT - Player flashlight"
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_DIMLIGHT",
        "typing": "4"
      },
      {
        "comments": [
          "@param EF_NOINTERP - Don't interpolate the next frame"
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_NOINTERP",
        "typing": "8"
      },
      {
        "comments": [
          "@param EF_NOSHADOW - Disables shadow"
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_NOSHADOW",
        "typing": "16"
      },
      {
        "comments": [
          "@param EF_NODRAW - Prevents the entity from drawing and networking."
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_NODRAW",
        "typing": "32"
      },
      {
        "comments": [
          "@param EF_NORECEIVESHADOW - Don't receive shadows"
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_NORECEIVESHADOW",
        "typing": "64"
      },
      {
        "comments": [
          "@param EF_ITEM_BLINK - Makes the entity blink"
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_ITEM_BLINK",
        "typing": "256"
      },
      {
        "comments": [
          "@param EF_PARENT_ANIMATES - Always assume that the parent entity is animating"
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_PARENT_ANIMATES",
        "typing": "512"
      },
      {
        "comments": [
          "@param EF_FOLLOWBONE - Internal flag that is set by @EntityFuncs:FollowBone"
        ],
        "context": "EF",
        "type": "enum",
        "name": "EF_FOLLOWBONE",
        "typing": "1024"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/DOF",
      "@enum DOF",
      "@description Internal globals for SimpleDoF. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "DOF",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param DOF_OFFSET - no description"
        ],
        "context": "DOF",
        "type": "enum",
        "name": "DOF_OFFSET",
        "typing": "256"
      },
      {
        "comments": [
          "@param DOF_SPACING - no description"
        ],
        "context": "DOF",
        "type": "enum",
        "name": "DOF_SPACING",
        "typing": "512"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/DOCK",
      "@note These enumerations doesn't have DOCK_ prefix, this is an exception from all other enumerations.",
      "@enum DOCK",
      "@description Enumerations used by @Panel:Dock.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "DOCK",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param NODOCK - Don't dock"
        ],
        "context": "DOCK",
        "type": "enum",
        "name": "NODOCK",
        "typing": "0"
      },
      {
        "comments": [
          "@param FILL - Fill parent"
        ],
        "context": "DOCK",
        "type": "enum",
        "name": "FILL",
        "typing": "1"
      },
      {
        "comments": [
          "@param LEFT - Dock to the left"
        ],
        "context": "DOCK",
        "type": "enum",
        "name": "LEFT",
        "typing": "2"
      },
      {
        "comments": [
          "@param RIGHT - Dock to the right"
        ],
        "context": "DOCK",
        "type": "enum",
        "name": "RIGHT",
        "typing": "3"
      },
      {
        "comments": [
          "@param TOP - Dock to the top"
        ],
        "context": "DOCK",
        "type": "enum",
        "name": "TOP",
        "typing": "4"
      },
      {
        "comments": [
          "@param BOTTOM - Dock to the bottom"
        ],
        "context": "DOCK",
        "type": "enum",
        "name": "BOTTOM",
        "typing": "5"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/DMG",
      "@enum DMG",
      "@description Enumerations used by @CTakeDamageInfo:GetDamageType, @CTakeDamageInfo:SetDamageType and @CTakeDamageInfo:IsDamageType",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "DMG",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param DMG_GENERIC - Generic damage"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_GENERIC",
        "typing": "0"
      },
      {
        "comments": [
          "@param DMG_CRUSH - Caused by physics interaction. Ignored by airboat drivers. Used by the Crowbar"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_CRUSH",
        "typing": "1"
      },
      {
        "comments": [
          "@param DMG_BULLET - Bullet damage"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_BULLET",
        "typing": "2"
      },
      {
        "comments": [
          "@param DMG_SLASH - Sharp objects, such as Manhacks or other NPCs attacks"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_SLASH",
        "typing": "4"
      },
      {
        "comments": [
          "@param DMG_BURN - Damage from fire"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_BURN",
        "typing": "8"
      },
      {
        "comments": [
          "@param DMG_VEHICLE - Hit by a vehicle. This will need to be set for passengers of some vehicle to receive damage."
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_VEHICLE",
        "typing": "16"
      },
      {
        "comments": [
          "@param DMG_FALL - Fall damage"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_FALL",
        "typing": "32"
      },
      {
        "comments": [
          "@param DMG_BLAST - Explosion damage. Will be ignored by most vehicle passengers."
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_BLAST",
        "typing": "64"
      },
      {
        "comments": [
          "@param DMG_CLUB - Crowbar damage"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_CLUB",
        "typing": "128"
      },
      {
        "comments": [
          "@param DMG_SHOCK - Electrical damage, shows smoke at the damage position"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_SHOCK",
        "typing": "256"
      },
      {
        "comments": [
          "@param DMG_SONIC - Sonic damage,used by the Gargantua and Houndeye NPCs"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_SONIC",
        "typing": "512"
      },
      {
        "comments": [
          "@param DMG_ENERGYBEAM - Laser"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_ENERGYBEAM",
        "typing": "1024"
      },
      {
        "comments": [
          "@param DMG_PREVENT_PHYSICS_FORCE - Prevent a physics force"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_PREVENT_PHYSICS_FORCE",
        "typing": "2048"
      },
      {
        "comments": [
          "@param DMG_NEVERGIB - Never creates gibs. (Used by the crossbow)"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_NEVERGIB",
        "typing": "4096"
      },
      {
        "comments": [
          "@param DMG_ALWAYSGIB - Always create gibs"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_ALWAYSGIB",
        "typing": "8192"
      },
      {
        "comments": [
          "@param DMG_DROWN - Drown damage"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_DROWN",
        "typing": "16384"
      },
      {
        "comments": [
          "@param DMG_PARALYZE - Same as DMG_POISON"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_PARALYZE",
        "typing": "32768"
      },
      {
        "comments": [
          "@param DMG_NERVEGAS - Neurotoxin damage"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_NERVEGAS",
        "typing": "65536"
      },
      {
        "comments": [
          "@param DMG_POISON - Poison damage"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_POISON",
        "typing": "131072"
      },
      {
        "comments": [
          "@param DMG_RADIATION - Radiation. Will be ignored by most vehicle passengers."
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_RADIATION",
        "typing": "262144"
      },
      {
        "comments": [
          "@param DMG_DROWNRECOVER - Damage applied to the player to restore health after drowning"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_DROWNRECOVER",
        "typing": "524288"
      },
      {
        "comments": [
          "@param DMG_ACID - Toxic chemicals or acid burns"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_ACID",
        "typing": "1048576"
      },
      {
        "comments": [
          "@param DMG_SLOWBURN - In an oven"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_SLOWBURN",
        "typing": "2097152"
      },
      {
        "comments": [
          "@param DMG_REMOVENORAGDOLL - Don't create a ragdoll on death"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_REMOVENORAGDOLL",
        "typing": "4194304"
      },
      {
        "comments": [
          "@param DMG_PHYSGUN - Damage done by the gravity gun"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_PHYSGUN",
        "typing": "8388608"
      },
      {
        "comments": [
          "@param DMG_PLASMA - Plasma"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_PLASMA",
        "typing": "16777216"
      },
      {
        "comments": [
          "@param DMG_AIRBOAT - Airboat gun damage"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_AIRBOAT",
        "typing": "33554432"
      },
      {
        "comments": [
          "@param DMG_DISSOLVE - Forces the entity to dissolve on death. This is what the combine ball uses when it hits a target"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_DISSOLVE",
        "typing": "67108864"
      },
      {
        "comments": [
          "@param DMG_BLAST_SURFACE - This won't hurt the player underwater"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_BLAST_SURFACE",
        "typing": "134217728"
      },
      {
        "comments": [
          "@param DMG_DIRECT - Direct damage to the entity that does not go through any damage value modifications"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_DIRECT",
        "typing": "268435456"
      },
      {
        "comments": [
          "@param DMG_BUCKSHOT - The pellets fired from a shotgun"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_BUCKSHOT",
        "typing": "536870912"
      },
      {
        "comments": [
          "@param DMG_SNIPER - Damage from SniperRound/SniperPenetratedRound ammo types"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_SNIPER",
        "typing": "1073741824"
      },
      {
        "comments": [
          "@param DMG_MISSILEDEFENSE - Damage from npc_missiledefense, npc_combinegunship, or monster_mortar"
        ],
        "context": "DMG",
        "type": "enum",
        "name": "DMG_MISSILEDEFENSE",
        "typing": "2147483648"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/DISPSURF",
      "@enum DISPSURF",
      "@description Displacement surface flags, used by the @TraceResult structure.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "DISPSURF",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param DISPSURF_SURFACE - no description"
        ],
        "context": "DISPSURF",
        "type": "enum",
        "name": "DISPSURF_SURFACE",
        "typing": "1"
      },
      {
        "comments": [
          "@param DISPSURF_WALKABLE - no description"
        ],
        "context": "DISPSURF",
        "type": "enum",
        "name": "DISPSURF_WALKABLE",
        "typing": "2"
      },
      {
        "comments": [
          "@param DISPSURF_BUILDABLE - no description"
        ],
        "context": "DISPSURF",
        "type": "enum",
        "name": "DISPSURF_BUILDABLE",
        "typing": "4"
      },
      {
        "comments": [
          "@param DISPSURF_SURFPROP1 - no description"
        ],
        "context": "DISPSURF",
        "type": "enum",
        "name": "DISPSURF_SURFPROP1",
        "typing": "8"
      },
      {
        "comments": [
          "@param DISPSURF_SURFPROP2 - no description"
        ],
        "context": "DISPSURF",
        "type": "enum",
        "name": "DISPSURF_SURFPROP2",
        "typing": "16"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/CT",
      "@enum CT",
      "@description Citizen type, a KeyValue for npc_citizen( citizentype ), serverside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "CT",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param CT_DEFAULT - Default citizen"
        ],
        "context": "CT",
        "type": "enum",
        "name": "CT_DEFAULT",
        "typing": "0"
      },
      {
        "comments": [
          "@param CT_DOWNTRODDEN - no description"
        ],
        "context": "CT",
        "type": "enum",
        "name": "CT_DOWNTRODDEN",
        "typing": "1"
      },
      {
        "comments": [
          "@param CT_REFUGEE - Refugee"
        ],
        "context": "CT",
        "type": "enum",
        "name": "CT_REFUGEE",
        "typing": "2"
      },
      {
        "comments": [
          "@param CT_REBEL - Rebel"
        ],
        "context": "CT",
        "type": "enum",
        "name": "CT_REBEL",
        "typing": "3"
      },
      {
        "comments": [
          "@param CT_UNIQUE - Odessa?"
        ],
        "context": "CT",
        "type": "enum",
        "name": "CT_UNIQUE",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/CREATERENDERTARGETFLAGS",
      "@enum CREATERENDERTARGETFLAGS",
      "@description Enumerations used by @GetRenderTargetEx function. Clientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "CREATERENDERTARGETFLAGS",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param CREATERENDERTARGETFLAGS_HDR - no description"
        ],
        "context": "CREATERENDERTARGETFLAGS",
        "type": "enum",
        "name": "CREATERENDERTARGETFLAGS_HDR",
        "typing": "1"
      },
      {
        "comments": [
          "@param CREATERENDERTARGETFLAGS_AUTOMIPMAP - no description"
        ],
        "context": "CREATERENDERTARGETFLAGS",
        "type": "enum",
        "name": "CREATERENDERTARGETFLAGS_AUTOMIPMAP",
        "typing": "2"
      },
      {
        "comments": [
          "@param CREATERENDERTARGETFLAGS_UNFILTERABLE_OK - no description"
        ],
        "context": "CREATERENDERTARGETFLAGS",
        "type": "enum",
        "name": "CREATERENDERTARGETFLAGS_UNFILTERABLE_OK",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/D",
      "@enum D",
      "@description Enumerations used by @NPC:Disposition and @EntityHooks:GetRelationship.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "D",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param D_ER - Error"
        ],
        "context": "D",
        "type": "enum",
        "name": "D_ER",
        "typing": "0"
      },
      {
        "comments": [
          "@param D_HT - Hate"
        ],
        "context": "D",
        "type": "enum",
        "name": "D_HT",
        "typing": "1"
      },
      {
        "comments": [
          "@param D_FR - Frightened / Fear"
        ],
        "context": "D",
        "type": "enum",
        "name": "D_FR",
        "typing": "2"
      },
      {
        "comments": [
          "@param D_LI - Like"
        ],
        "context": "D",
        "type": "enum",
        "name": "D_LI",
        "typing": "3"
      },
      {
        "comments": [
          "@param D_NU - Neutral"
        ],
        "context": "D",
        "type": "enum",
        "name": "D_NU",
        "typing": "4"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/CONTENTS",
      "@enum CONTENTS",
      "@description Enumerations used by @util.PointContents and as tracer masks.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "CONTENTS",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param CONTENTS_EMPTY - Things that are not solid"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_EMPTY",
        "typing": "0"
      },
      {
        "comments": [
          "@param CONTENTS_SOLID - Things that are solid"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_SOLID",
        "typing": "1"
      },
      {
        "comments": [
          "@param CONTENTS_WINDOW - Glass"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_WINDOW",
        "typing": "2"
      },
      {
        "comments": [
          "@param CONTENTS_AUX - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_AUX",
        "typing": "4"
      },
      {
        "comments": [
          "@param CONTENTS_GRATE - Bullets go through, solids don't"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_GRATE",
        "typing": "8"
      },
      {
        "comments": [
          "@param CONTENTS_SLIME - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_SLIME",
        "typing": "16"
      },
      {
        "comments": [
          "@param CONTENTS_WATER - Hits world but not skybox"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_WATER",
        "typing": "32"
      },
      {
        "comments": [
          "@param CONTENTS_BLOCKLOS - Things that block line of sight"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_BLOCKLOS",
        "typing": "64"
      },
      {
        "comments": [
          "@param CONTENTS_OPAQUE - Things that block light"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_OPAQUE",
        "typing": "128"
      },
      {
        "comments": [
          "@param CONTENTS_TESTFOGVOLUME - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_TESTFOGVOLUME",
        "typing": "256"
      },
      {
        "comments": [
          "@param CONTENTS_TEAM4 - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_TEAM4",
        "typing": "512"
      },
      {
        "comments": [
          "@param CONTENTS_TEAM3 - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_TEAM3",
        "typing": "1024"
      },
      {
        "comments": [
          "@param CONTENTS_TEAM1 - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_TEAM1",
        "typing": "2048"
      },
      {
        "comments": [
          "@param CONTENTS_TEAM2 - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_TEAM2",
        "typing": "4096"
      },
      {
        "comments": [
          "@param CONTENTS_IGNORE_NODRAW_OPAQUE - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_IGNORE_NODRAW_OPAQUE",
        "typing": "8192"
      },
      {
        "comments": [
          "@param CONTENTS_MOVEABLE - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_MOVEABLE",
        "typing": "16384"
      },
      {
        "comments": [
          "@param CONTENTS_AREAPORTAL - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_AREAPORTAL",
        "typing": "32768"
      },
      {
        "comments": [
          "@param CONTENTS_PLAYERCLIP - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_PLAYERCLIP",
        "typing": "65536"
      },
      {
        "comments": [
          "@param CONTENTS_MONSTERCLIP - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_MONSTERCLIP",
        "typing": "131072"
      },
      {
        "comments": [
          "@param CONTENTS_CURRENT_0 - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_CURRENT_0",
        "typing": "262144"
      },
      {
        "comments": [
          "@param CONTENTS_CURRENT_180 - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_CURRENT_180",
        "typing": "1048576"
      },
      {
        "comments": [
          "@param CONTENTS_CURRENT_270 - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_CURRENT_270",
        "typing": "2097152"
      },
      {
        "comments": [
          "@param CONTENTS_CURRENT_90 - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_CURRENT_90",
        "typing": "524288"
      },
      {
        "comments": [
          "@param CONTENTS_CURRENT_DOWN - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_CURRENT_DOWN",
        "typing": "8388608"
      },
      {
        "comments": [
          "@param CONTENTS_CURRENT_UP - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_CURRENT_UP",
        "typing": "4194304"
      },
      {
        "comments": [
          "@param CONTENTS_DEBRIS - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_DEBRIS",
        "typing": "67108864"
      },
      {
        "comments": [
          "@param CONTENTS_DETAIL - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_DETAIL",
        "typing": "134217728"
      },
      {
        "comments": [
          "@param CONTENTS_HITBOX - Hitbox"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_HITBOX",
        "typing": "1073741824"
      },
      {
        "comments": [
          "@param CONTENTS_LADDER - Ladder"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_LADDER",
        "typing": "536870912"
      },
      {
        "comments": [
          "@param CONTENTS_MONSTER - NPCs"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_MONSTER",
        "typing": "33554432"
      },
      {
        "comments": [
          "@param CONTENTS_ORIGIN - no description"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_ORIGIN",
        "typing": "16777216"
      },
      {
        "comments": [
          "@param CONTENTS_TRANSLUCENT - Hits world but not skybox"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "CONTENTS_TRANSLUCENT",
        "typing": "268435456"
      },
      {
        "comments": [
          "@param LAST_VISIBLE_CONTENTS - Last visible contents enumeration"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "LAST_VISIBLE_CONTENTS",
        "typing": "128"
      },
      {
        "comments": [
          "@param ALL_VISIBLE_CONTENTS - Sum of all the visible contents enumerations"
        ],
        "context": "CONTENTS",
        "type": "enum",
        "name": "ALL_VISIBLE_CONTENTS",
        "typing": "255"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/COND",
      "@note There are more conditions than listed here after **COND_NO_CUSTOM_INTERRUPTS**(70) but the name depends on what's returned by @NPC:ConditionName",
      "@warning These enumerations do not exist in game, but are listed here anyway for reference",
      "@enum COND",
      "@description Enumerations for NPC conditions, used by @NPC:SetCondition. Serverside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "COND",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param COND_BEHIND_ENEMY - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_BEHIND_ENEMY",
        "typing": "29"
      },
      {
        "comments": [
          "@param COND_BETTER_WEAPON_AVAILABLE - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_BETTER_WEAPON_AVAILABLE",
        "typing": "46"
      },
      {
        "comments": [
          "@param COND_CAN_MELEE_ATTACK1 - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_CAN_MELEE_ATTACK1",
        "typing": "23"
      },
      {
        "comments": [
          "@param COND_CAN_MELEE_ATTACK2 - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_CAN_MELEE_ATTACK2",
        "typing": "24"
      },
      {
        "comments": [
          "@param COND_CAN_RANGE_ATTACK1 - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_CAN_RANGE_ATTACK1",
        "typing": "21"
      },
      {
        "comments": [
          "@param COND_CAN_RANGE_ATTACK2 - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_CAN_RANGE_ATTACK2",
        "typing": "22"
      },
      {
        "comments": [
          "@param COND_ENEMY_DEAD - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_ENEMY_DEAD",
        "typing": "30"
      },
      {
        "comments": [
          "@param COND_ENEMY_FACING_ME - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_ENEMY_FACING_ME",
        "typing": "28"
      },
      {
        "comments": [
          "@param COND_ENEMY_OCCLUDED - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_ENEMY_OCCLUDED",
        "typing": "13"
      },
      {
        "comments": [
          "@param COND_ENEMY_TOO_FAR - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_ENEMY_TOO_FAR",
        "typing": "27"
      },
      {
        "comments": [
          "@param COND_ENEMY_UNREACHABLE - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_ENEMY_UNREACHABLE",
        "typing": "31"
      },
      {
        "comments": [
          "@param COND_ENEMY_WENT_NULL - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_ENEMY_WENT_NULL",
        "typing": "12"
      },
      {
        "comments": [
          "@param COND_FLOATING_OFF_GROUND - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_FLOATING_OFF_GROUND",
        "typing": "61"
      },
      {
        "comments": [
          "@param COND_GIVE_WAY - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_GIVE_WAY",
        "typing": "48"
      },
      {
        "comments": [
          "@param COND_HAVE_ENEMY_LOS - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HAVE_ENEMY_LOS",
        "typing": "15"
      },
      {
        "comments": [
          "@param COND_HAVE_TARGET_LOS - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HAVE_TARGET_LOS",
        "typing": "16"
      },
      {
        "comments": [
          "@param COND_HEALTH_ITEM_AVAILABLE - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEALTH_ITEM_AVAILABLE",
        "typing": "47"
      },
      {
        "comments": [
          "@param COND_HEAR_BUGBAIT - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAR_BUGBAIT",
        "typing": "52"
      },
      {
        "comments": [
          "@param COND_HEAR_BULLET_IMPACT - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAR_BULLET_IMPACT",
        "typing": "56"
      },
      {
        "comments": [
          "@param COND_HEAR_COMBAT - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAR_COMBAT",
        "typing": "53"
      },
      {
        "comments": [
          "@param COND_HEAR_DANGER - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAR_DANGER",
        "typing": "50"
      },
      {
        "comments": [
          "@param COND_HEAR_MOVE_AWAY - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAR_MOVE_AWAY",
        "typing": "58"
      },
      {
        "comments": [
          "@param COND_HEAR_PHYSICS_DANGER - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAR_PHYSICS_DANGER",
        "typing": "57"
      },
      {
        "comments": [
          "@param COND_HEAR_PLAYER - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAR_PLAYER",
        "typing": "55"
      },
      {
        "comments": [
          "@param COND_HEAR_SPOOKY - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAR_SPOOKY",
        "typing": "59"
      },
      {
        "comments": [
          "@param COND_HEAR_THUMPER - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAR_THUMPER",
        "typing": "51"
      },
      {
        "comments": [
          "@param COND_HEAR_WORLD - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAR_WORLD",
        "typing": "54"
      },
      {
        "comments": [
          "@param COND_HEAVY_DAMAGE - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_HEAVY_DAMAGE",
        "typing": "18"
      },
      {
        "comments": [
          "@param COND_IDLE_INTERRUPT - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_IDLE_INTERRUPT",
        "typing": "2"
      },
      {
        "comments": [
          "@param COND_IN_PVS - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_IN_PVS",
        "typing": "1"
      },
      {
        "comments": [
          "@param COND_LIGHT_DAMAGE - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_LIGHT_DAMAGE",
        "typing": "17"
      },
      {
        "comments": [
          "@param COND_LOST_ENEMY - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_LOST_ENEMY",
        "typing": "11"
      },
      {
        "comments": [
          "@param COND_LOST_PLAYER - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_LOST_PLAYER",
        "typing": "33"
      },
      {
        "comments": [
          "@param COND_LOW_PRIMARY_AMMO - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_LOW_PRIMARY_AMMO",
        "typing": "3"
      },
      {
        "comments": [
          "@param COND_MOBBED_BY_ENEMIES - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_MOBBED_BY_ENEMIES",
        "typing": "62"
      },
      {
        "comments": [
          "@param COND_NEW_ENEMY - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_NEW_ENEMY",
        "typing": "26"
      },
      {
        "comments": [
          "@param COND_NO_CUSTOM_INTERRUPTS - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_NO_CUSTOM_INTERRUPTS",
        "typing": "70"
      },
      {
        "comments": [
          "@param COND_NO_HEAR_DANGER - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_NO_HEAR_DANGER",
        "typing": "60"
      },
      {
        "comments": [
          "@param COND_NO_PRIMARY_AMMO - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_NO_PRIMARY_AMMO",
        "typing": "4"
      },
      {
        "comments": [
          "@param COND_NO_SECONDARY_AMMO - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_NO_SECONDARY_AMMO",
        "typing": "5"
      },
      {
        "comments": [
          "@param COND_NO_WEAPON - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_NO_WEAPON",
        "typing": "6"
      },
      {
        "comments": [
          "@param COND_NONE - No additional conditions are being played"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param COND_NOT_FACING_ATTACK - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_NOT_FACING_ATTACK",
        "typing": "40"
      },
      {
        "comments": [
          "@param COND_NPC_FREEZE - Freezes NPC movement"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_NPC_FREEZE",
        "typing": "67"
      },
      {
        "comments": [
          "@param COND_NPC_UNFREEZE - Unfreezes NPC movement"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_NPC_UNFREEZE",
        "typing": "68"
      },
      {
        "comments": [
          "@param COND_PHYSICS_DAMAGE - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_PHYSICS_DAMAGE",
        "typing": "19"
      },
      {
        "comments": [
          "@param COND_PLAYER_ADDED_TO_SQUAD - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_PLAYER_ADDED_TO_SQUAD",
        "typing": "64"
      },
      {
        "comments": [
          "@param COND_PLAYER_PUSHING - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_PLAYER_PUSHING",
        "typing": "66"
      },
      {
        "comments": [
          "@param COND_PLAYER_REMOVED_FROM_SQUAD - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_PLAYER_REMOVED_FROM_SQUAD",
        "typing": "65"
      },
      {
        "comments": [
          "@param COND_PROVOKED - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_PROVOKED",
        "typing": "25"
      },
      {
        "comments": [
          "@param COND_RECEIVED_ORDERS - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_RECEIVED_ORDERS",
        "typing": "63"
      },
      {
        "comments": [
          "@param COND_REPEATED_DAMAGE - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_REPEATED_DAMAGE",
        "typing": "20"
      },
      {
        "comments": [
          "@param COND_SCHEDULE_DONE - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_SCHEDULE_DONE",
        "typing": "36"
      },
      {
        "comments": [
          "@param COND_SEE_DISLIKE - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_SEE_DISLIKE",
        "typing": "9"
      },
      {
        "comments": [
          "@param COND_SEE_ENEMY - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_SEE_ENEMY",
        "typing": "10"
      },
      {
        "comments": [
          "@param COND_SEE_FEAR - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_SEE_FEAR",
        "typing": "8"
      },
      {
        "comments": [
          "@param COND_SEE_HATE - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_SEE_HATE",
        "typing": "7"
      },
      {
        "comments": [
          "@param COND_SEE_NEMESIS - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_SEE_NEMESIS",
        "typing": "34"
      },
      {
        "comments": [
          "@param COND_SEE_PLAYER - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_SEE_PLAYER",
        "typing": "32"
      },
      {
        "comments": [
          "@param COND_SMELL - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_SMELL",
        "typing": "37"
      },
      {
        "comments": [
          "@param COND_TALKER_RESPOND_TO_QUESTION - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_TALKER_RESPOND_TO_QUESTION",
        "typing": "69"
      },
      {
        "comments": [
          "@param COND_TARGET_OCCLUDED - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_TARGET_OCCLUDED",
        "typing": "14"
      },
      {
        "comments": [
          "@param COND_TASK_FAILED - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_TASK_FAILED",
        "typing": "35"
      },
      {
        "comments": [
          "@param COND_TOO_CLOSE_TO_ATTACK - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_TOO_CLOSE_TO_ATTACK",
        "typing": "38"
      },
      {
        "comments": [
          "@param COND_TOO_FAR_TO_ATTACK - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_TOO_FAR_TO_ATTACK",
        "typing": "39"
      },
      {
        "comments": [
          "@param COND_WAY_CLEAR - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_WAY_CLEAR",
        "typing": "49"
      },
      {
        "comments": [
          "@param COND_WEAPON_BLOCKED_BY_FRIEND - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_WEAPON_BLOCKED_BY_FRIEND",
        "typing": "42"
      },
      {
        "comments": [
          "@param COND_WEAPON_HAS_LOS - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_WEAPON_HAS_LOS",
        "typing": "41"
      },
      {
        "comments": [
          "@param COND_WEAPON_PLAYER_IN_SPREAD - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_WEAPON_PLAYER_IN_SPREAD",
        "typing": "43"
      },
      {
        "comments": [
          "@param COND_WEAPON_PLAYER_NEAR_TARGET - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_WEAPON_PLAYER_NEAR_TARGET",
        "typing": "44"
      },
      {
        "comments": [
          "@param COND_WEAPON_SIGHT_OCCLUDED - no description"
        ],
        "context": "COND",
        "type": "enum",
        "name": "COND_WEAPON_SIGHT_OCCLUDED",
        "typing": "45"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/COLLISION GROUP",
      "@enum COLLISION_GROUP",
      "@description Enumerations used by @EntityFuncs:SetCollisionGroup and @EntityFuncs:GetCollisionGroup.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "COLLISION_GROUP",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param COLLISION_GROUP_NONE - Normal"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_DEBRIS - Collides with nothing but world and static stuff"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_DEBRIS",
        "typing": "1"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_DEBRIS_TRIGGER - Same as debris, but hits triggers. Useful for an item that can be shot, but doesn't collide."
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_DEBRIS_TRIGGER",
        "typing": "2"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_INTERACTIVE_DEBRIS - Collides with everything except other interactive debris or debris"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_INTERACTIVE_DEBRIS",
        "typing": "3"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_INTERACTIVE - Collides with everything except interactive debris or debris"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_INTERACTIVE",
        "typing": "4"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_PLAYER - no description"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_PLAYER",
        "typing": "5"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_BREAKABLE_GLASS - NPCs can see straight through an Entity with this applied."
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_BREAKABLE_GLASS",
        "typing": "6"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_VEHICLE - no description"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_VEHICLE",
        "typing": "7"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_PLAYER_MOVEMENT - For HL2, same as Collision_Group_Player, for TF2, this filters out other players and CBaseObjects"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_PLAYER_MOVEMENT",
        "typing": "8"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_NPC - no description"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_NPC",
        "typing": "9"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_IN_VEHICLE - Doesn't collide with anything, no traces"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_IN_VEHICLE",
        "typing": "10"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_WEAPON - Doesn't collide with players and vehicles"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_WEAPON",
        "typing": "11"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_VEHICLE_CLIP - Only collides with vehicles"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_VEHICLE_CLIP",
        "typing": "12"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_PROJECTILE - no description"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_PROJECTILE",
        "typing": "13"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_DOOR_BLOCKER - Blocks entities not permitted to get near moving doors"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_DOOR_BLOCKER",
        "typing": "14"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_PASSABLE_DOOR - Let's the Player through, nothing else."
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_PASSABLE_DOOR",
        "typing": "15"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_DISSOLVING - Things that are dissolving are in this group"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_DISSOLVING",
        "typing": "16"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_PUSHAWAY - Nonsolid on client and server, pushaway in player code"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_PUSHAWAY",
        "typing": "17"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_NPC_ACTOR - no description"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_NPC_ACTOR",
        "typing": "18"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_NPC_SCRIPTED - no description"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_NPC_SCRIPTED",
        "typing": "19"
      },
      {
        "comments": [
          "@param COLLISION_GROUP_WORLD - Doesn't collide with players/props"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "COLLISION_GROUP_WORLD",
        "typing": "20"
      },
      {
        "comments": [
          "@param LAST_SHARED_COLLISION_GROUP - Amount of COLLISION_GROUP_ enumerations"
        ],
        "context": "COLLISION_GROUP",
        "type": "enum",
        "name": "LAST_SHARED_COLLISION_GROUP",
        "typing": "21"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/CHAN",
      "@enum CHAN",
      "@description Enumerations used by @EmitSound function and @sound.Add.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "CHAN",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param CHAN_REPLACE - Used when playing sounds through console commands."
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_REPLACE",
        "typing": "-1"
      },
      {
        "comments": [
          "@param CHAN_AUTO - Automatic channel"
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_AUTO",
        "typing": "0"
      },
      {
        "comments": [
          "@param CHAN_WEAPON - Channel for weapon sounds"
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_WEAPON",
        "typing": "1"
      },
      {
        "comments": [
          "@param CHAN_VOICE - Channel for NPC voices"
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_VOICE",
        "typing": "2"
      },
      {
        "comments": [
          "@param CHAN_ITEM - Channel for items ( Health kits, etc )"
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_ITEM",
        "typing": "3"
      },
      {
        "comments": [
          "@param CHAN_BODY - Clothing, ragdoll impacts, footsteps, knocking/pounding/punching etc."
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_BODY",
        "typing": "4"
      },
      {
        "comments": [
          "@param CHAN_STREAM - Stream channel from the static or dynamic area"
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_STREAM",
        "typing": "5"
      },
      {
        "comments": [
          "@param CHAN_STATIC - A constant/background sound that doesn't require any reaction."
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_STATIC",
        "typing": "6"
      },
      {
        "comments": [
          "@param CHAN_VOICE2 - TF2s Announcer dialogue channel"
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_VOICE2",
        "typing": "7"
      },
      {
        "comments": [
          "@param CHAN_VOICE_BASE - Channel for network voice data"
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_VOICE_BASE",
        "typing": "8"
      },
      {
        "comments": [
          "@param CHAN_USER_BASE - no description"
        ],
        "context": "CHAN",
        "type": "enum",
        "name": "CHAN_USER_BASE",
        "typing": "136"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/CAP",
      "@enum CAP",
      "@description Enumerations used by @NPC:CapabilitiesAdd, @WeaponHooks:GetCapabilities and @NPC:CapabilitiesGet. Serverside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "CAP",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param CAP_SIMPLE_RADIUS_DAMAGE - When hit by an explosion, we'll simply block it instead of spilling it to entities behind us, the sv_robust_explosions cvar can also enable this globally when set to 0"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_SIMPLE_RADIUS_DAMAGE",
        "typing": "-2147483648"
      },
      {
        "comments": [
          "@param CAP_MOVE_GROUND - Walk/Run"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_MOVE_GROUND",
        "typing": "1"
      },
      {
        "comments": [
          "@param CAP_MOVE_JUMP - Jump/Leap"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_MOVE_JUMP",
        "typing": "2"
      },
      {
        "comments": [
          "@param CAP_MOVE_FLY - Can fly  move all around"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_MOVE_FLY",
        "typing": "4"
      },
      {
        "comments": [
          "@param CAP_MOVE_CLIMB - climb ladders"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_MOVE_CLIMB",
        "typing": "8"
      },
      {
        "comments": [
          "@param CAP_MOVE_SWIM - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_MOVE_SWIM",
        "typing": "16"
      },
      {
        "comments": [
          "@param CAP_MOVE_CRAWL - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_MOVE_CRAWL",
        "typing": "32"
      },
      {
        "comments": [
          "@param CAP_MOVE_SHOOT - Tries to shoot weapon while moving"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_MOVE_SHOOT",
        "typing": "64"
      },
      {
        "comments": [
          "@param CAP_SKIP_NAV_GROUND_CHECK - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_SKIP_NAV_GROUND_CHECK",
        "typing": "128"
      },
      {
        "comments": [
          "@param CAP_USE - Open doors/push buttons/pull levers"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_USE",
        "typing": "256"
      },
      {
        "comments": [
          "@param CAP_AUTO_DOORS - Can trigger auto doors"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_AUTO_DOORS",
        "typing": "1024"
      },
      {
        "comments": [
          "@param CAP_OPEN_DOORS - Can open manual doors"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_OPEN_DOORS",
        "typing": "2048"
      },
      {
        "comments": [
          "@param CAP_TURN_HEAD - Can turn head  always bone controller 0"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_TURN_HEAD",
        "typing": "4096"
      },
      {
        "comments": [
          "@param CAP_WEAPON_RANGE_ATTACK1 - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_WEAPON_RANGE_ATTACK1",
        "typing": "8192"
      },
      {
        "comments": [
          "@param CAP_WEAPON_RANGE_ATTACK2 - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_WEAPON_RANGE_ATTACK2",
        "typing": "16384"
      },
      {
        "comments": [
          "@param CAP_WEAPON_MELEE_ATTACK1 - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_WEAPON_MELEE_ATTACK1",
        "typing": "32768"
      },
      {
        "comments": [
          "@param CAP_WEAPON_MELEE_ATTACK2 - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_WEAPON_MELEE_ATTACK2",
        "typing": "65536"
      },
      {
        "comments": [
          "@param CAP_INNATE_RANGE_ATTACK1 - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_INNATE_RANGE_ATTACK1",
        "typing": "131072"
      },
      {
        "comments": [
          "@param CAP_INNATE_RANGE_ATTACK2 - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_INNATE_RANGE_ATTACK2",
        "typing": "262144"
      },
      {
        "comments": [
          "@param CAP_INNATE_MELEE_ATTACK1 - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_INNATE_MELEE_ATTACK1",
        "typing": "524288"
      },
      {
        "comments": [
          "@param CAP_INNATE_MELEE_ATTACK2 - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_INNATE_MELEE_ATTACK2",
        "typing": "1048576"
      },
      {
        "comments": [
          "@param CAP_USE_WEAPONS - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_USE_WEAPONS",
        "typing": "2097152"
      },
      {
        "comments": [
          "@param CAP_USE_SHOT_REGULATOR - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_USE_SHOT_REGULATOR",
        "typing": "16777216"
      },
      {
        "comments": [
          "@param CAP_ANIMATEDFACE - Has animated eyes/face"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_ANIMATEDFACE",
        "typing": "8388608"
      },
      {
        "comments": [
          "@param CAP_FRIENDLY_DMG_IMMUNE - Don't take damage from npc's that are D_LI"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_FRIENDLY_DMG_IMMUNE",
        "typing": "33554432"
      },
      {
        "comments": [
          "@param CAP_SQUAD - Can form squads"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_SQUAD",
        "typing": "67108864"
      },
      {
        "comments": [
          "@param CAP_DUCK - Cover and Reload ducking"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_DUCK",
        "typing": "134217728"
      },
      {
        "comments": [
          "@param CAP_NO_HIT_PLAYER - Don't hit players"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_NO_HIT_PLAYER",
        "typing": "268435456"
      },
      {
        "comments": [
          "@param CAP_AIM_GUN - Use arms to aim gun, not just body"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_AIM_GUN",
        "typing": "536870912"
      },
      {
        "comments": [
          "@param CAP_NO_HIT_SQUADMATES - no description"
        ],
        "context": "CAP",
        "type": "enum",
        "name": "CAP_NO_HIT_SQUADMATES",
        "typing": "1073741824"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/BUTTON CODE",
      "@enum BUTTON_CODE",
      "@description Encompasses the range of @KEY enum, @MOUSE enum and @JOYSTICK enum, all of which can be used by:\n* @input.IsButtonDown\n* @input.LookupKeyBinding\n* @input.GetKeyName\n* @input.GetKeyCode\n* @GamemodeHooks:PlayerButtonDown\n* @GamemodeHooks:PlayerButtonUp",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "BUTTON_CODE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param BUTTON_CODE_INVALID - no description"
        ],
        "context": "BUTTON_CODE",
        "type": "enum",
        "name": "BUTTON_CODE_INVALID",
        "typing": "-1"
      },
      {
        "comments": [
          "@param BUTTON_CODE_NONE - no description"
        ],
        "context": "BUTTON_CODE",
        "type": "enum",
        "name": "BUTTON_CODE_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param BUTTON_CODE_LAST - no description"
        ],
        "context": "BUTTON_CODE",
        "type": "enum",
        "name": "BUTTON_CODE_LAST",
        "typing": "171"
      },
      {
        "comments": [
          "@param BUTTON_CODE_COUNT - no description"
        ],
        "context": "BUTTON_CODE",
        "type": "enum",
        "name": "BUTTON_CODE_COUNT",
        "typing": "172"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/CLASS",
      "@enum CLASS",
      "@description Enumerations used by @NPC:Classify.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "CLASS",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param CLASS_NONE - None - default class for entities."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_NONE",
        "typing": "0"
      },
      {
        "comments": [
          "@param CLASS_PLAYER - Players."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_PLAYER",
        "typing": "1"
      },
      {
        "comments": [
          "@param CLASS_PLAYER_ALLY - HL2 player allies - monster_barney, npc_citizen, hacked npc_manhack, and friendly npc_turret_floor."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_PLAYER_ALLY",
        "typing": "2"
      },
      {
        "comments": [
          "@param CLASS_PLAYER_ALLY_VITAL - HL2 vital player allies - npc_magnusson, npc_gman, npc_fisherman, npc_eli, npc_barney, npc_kleiner, npc_mossman, npc_alyx, npc_monk, npc_dog, and npc_vortigaunt at the end of EP2 (controlled by \"MakeGameEndAlly\" input)."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_PLAYER_ALLY_VITAL",
        "typing": "3"
      },
      {
        "comments": [
          "@param CLASS_ANTLION - HL2 antlions - npc_antlion, npc_antlionguard, and npc_ichthyosaur."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_ANTLION",
        "typing": "4"
      },
      {
        "comments": [
          "@param CLASS_BARNACLE - HL2 barnacles - npc_barnacle."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_BARNACLE",
        "typing": "5"
      },
      {
        "comments": [
          "@param CLASS_BULLSEYE - HL2 bullseyes - npc_bullseye."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_BULLSEYE",
        "typing": "6"
      },
      {
        "comments": [
          "@param CLASS_CITIZEN_PASSIVE - HL2 passive/non-rebel citizens - npc_citizen in the beginning of HL2."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_CITIZEN_PASSIVE",
        "typing": "7"
      },
      {
        "comments": [
          "@param CLASS_CITIZEN_REBEL - HL2 unused."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_CITIZEN_REBEL",
        "typing": "8"
      },
      {
        "comments": [
          "@param CLASS_COMBINE - HL2 combine troops - npc_combine, npc_advisor, apc_missile, npc_apcdriver, hostile npc_turret_floor, hostile npc_rollermine, npc_turret_ground when active, npc_turret_ceiling when active, and npc_strider when active (not being carried by the gunship)."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_COMBINE",
        "typing": "9"
      },
      {
        "comments": [
          "@param CLASS_COMBINE_GUNSHIP - HL2 combine aircrafts - npc_combinegunship, npc_combinedropship, and npc_helicopter."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_COMBINE_GUNSHIP",
        "typing": "10"
      },
      {
        "comments": [
          "@param CLASS_CONSCRIPT - HL2 unused."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_CONSCRIPT",
        "typing": "11"
      },
      {
        "comments": [
          "@param CLASS_HEADCRAB - HL2 headcrabs - visible npc_headcrab."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_HEADCRAB",
        "typing": "12"
      },
      {
        "comments": [
          "@param CLASS_MANHACK - HL2 manhacks - hostile npc_manhack not held by the gravity gun."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_MANHACK",
        "typing": "13"
      },
      {
        "comments": [
          "@param CLASS_METROPOLICE - HL2 metro police - npc_metropolice and npc_vehicledriver."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_METROPOLICE",
        "typing": "14"
      },
      {
        "comments": [
          "@param CLASS_MILITARY - HL2 combine military objects - func_guntarget, npc_spotlight, and active npc_combine_camera."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_MILITARY",
        "typing": "15"
      },
      {
        "comments": [
          "@param CLASS_SCANNER - HL2 combine scanners - npc_cscanner and npc_clawscanner."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_SCANNER",
        "typing": "16"
      },
      {
        "comments": [
          "@param CLASS_STALKER - HL2 stalkers - npc_stalker."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_STALKER",
        "typing": "17"
      },
      {
        "comments": [
          "@param CLASS_VORTIGAUNT - HL2 vortigaunts - npc_vortigaunt before the end of EP2 (controlled by \"MakeGameEndAlly\" input)."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_VORTIGAUNT",
        "typing": "18"
      },
      {
        "comments": [
          "@param CLASS_ZOMBIE - HL2 zombies - unslumped npc_zombie, npc_poisonzombie, npc_fastzombie, npc_fastzombie_torso, and npc_zombine."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_ZOMBIE",
        "typing": "19"
      },
      {
        "comments": [
          "@param CLASS_PROTOSNIPER - HL2 snipers - npc_sniper and proto_sniper."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_PROTOSNIPER",
        "typing": "20"
      },
      {
        "comments": [
          "@param CLASS_MISSILE - HL2 missiles - rpg_missile, apc_missile, and grenade_pathfollower."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_MISSILE",
        "typing": "21"
      },
      {
        "comments": [
          "@param CLASS_FLARE - HL2 flares - env_flare."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_FLARE",
        "typing": "22"
      },
      {
        "comments": [
          "@param CLASS_EARTH_FAUNA - HL2 animals - npc_crow, npc_seagull, and npc_pigeon."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_EARTH_FAUNA",
        "typing": "23"
      },
      {
        "comments": [
          "@param CLASS_HACKED_ROLLERMINE - HL2 friendly rollermines - hacked npc_rollermine."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_HACKED_ROLLERMINE",
        "typing": "24"
      },
      {
        "comments": [
          "@param CLASS_COMBINE_HUNTER - HL2 hunters - npc_hunter."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_COMBINE_HUNTER",
        "typing": "25"
      },
      {
        "comments": [
          "@param CLASS_MACHINE - HL:S turrets - monster_turret, monster_miniturret, monster_sentry."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_MACHINE",
        "typing": "26"
      },
      {
        "comments": [
          "@param CLASS_HUMAN_PASSIVE - HL:S friendly humans - monster_scientist."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_HUMAN_PASSIVE",
        "typing": "27"
      },
      {
        "comments": [
          "@param CLASS_HUMAN_MILITARY - HL:S human military - monster_human_grunt and monster_apache."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_HUMAN_MILITARY",
        "typing": "28"
      },
      {
        "comments": [
          "@param CLASS_ALIEN_MILITARY - HL:S alien military - monster_alien_controller, monster_vortigaunt, monster_alien_grunt, monster_nihilanth, and monster_snark if it has an enemy of class CLASS_PLAYER, CLASS_HUMAN_PASSIVE, or CLASS_HUMAN_MILITARY."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_ALIEN_MILITARY",
        "typing": "29"
      },
      {
        "comments": [
          "@param CLASS_ALIEN_MONSTER - HL:S monsters - monster_tentacle, monster_barnacle, monster_zombie, monster_gargantua, monster_houndeye, monster_ichthyosaur, and monster_bigmomma."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_ALIEN_MONSTER",
        "typing": "30"
      },
      {
        "comments": [
          "@param CLASS_ALIEN_PREY - HL:S headcrabs - monster_headcrab."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_ALIEN_PREY",
        "typing": "31"
      },
      {
        "comments": [
          "@param CLASS_ALIEN_PREDATOR - HL:S alien predators - monster_bullsquid, xen_tree, and xen_hull."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_ALIEN_PREDATOR",
        "typing": "32"
      },
      {
        "comments": [
          "@param CLASS_INSECT - HL:S insects - montser_roach and monster_leech."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_INSECT",
        "typing": "33"
      },
      {
        "comments": [
          "@param CLASS_PLAYER_BIOWEAPON - HL:S player bioweapons - hornet fired by a player."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_PLAYER_BIOWEAPON",
        "typing": "34"
      },
      {
        "comments": [
          "@param CLASS_ALIEN_BIOWEAPON - HL:S enemy bioweapons - hornet fired by anyone but a player, or monster_snark with no enemy or an enemy without the class CLASS_PLAYER, CLASS_HUMAN_PASSIVE, or CLASS_HUMAN_MILITARY."
        ],
        "context": "CLASS",
        "type": "enum",
        "name": "CLASS_ALIEN_BIOWEAPON",
        "typing": "35"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/BOX",
      "@enum BOX",
      "@description Enumerations used by @render.SetModelLighting.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "BOX",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param BOX_FRONT - Place the light from the front"
        ],
        "context": "BOX",
        "type": "enum",
        "name": "BOX_FRONT",
        "typing": "0"
      },
      {
        "comments": [
          "@param BOX_BACK - Place the light behind"
        ],
        "context": "BOX",
        "type": "enum",
        "name": "BOX_BACK",
        "typing": "1"
      },
      {
        "comments": [
          "@param BOX_RIGHT - Place the light to the right"
        ],
        "context": "BOX",
        "type": "enum",
        "name": "BOX_RIGHT",
        "typing": "2"
      },
      {
        "comments": [
          "@param BOX_LEFT - Place the light to the left"
        ],
        "context": "BOX",
        "type": "enum",
        "name": "BOX_LEFT",
        "typing": "3"
      },
      {
        "comments": [
          "@param BOX_TOP - Place the light to the top"
        ],
        "context": "BOX",
        "type": "enum",
        "name": "BOX_TOP",
        "typing": "4"
      },
      {
        "comments": [
          "@param BOX_BOTTOM - Place the light to the bottom"
        ],
        "context": "BOX",
        "type": "enum",
        "name": "BOX_BOTTOM",
        "typing": "5"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/BONE",
      "@enum BONE",
      "@description Used by @EntityFuncs:BoneHasFlag.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "BONE",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param BONE_PHYSICALLY_SIMULATED - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_PHYSICALLY_SIMULATED",
        "typing": "1"
      },
      {
        "comments": [
          "@param BONE_PHYSICS_PROCEDURAL - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_PHYSICS_PROCEDURAL",
        "typing": "2"
      },
      {
        "comments": [
          "@param BONE_ALWAYS_PROCEDURAL - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_ALWAYS_PROCEDURAL",
        "typing": "4"
      },
      {
        "comments": [
          "@param BONE_SCREEN_ALIGN_SPHERE - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_SCREEN_ALIGN_SPHERE",
        "typing": "8"
      },
      {
        "comments": [
          "@param BONE_SCREEN_ALIGN_CYLINDER - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_SCREEN_ALIGN_CYLINDER",
        "typing": "16"
      },
      {
        "comments": [
          "@param BONE_CALCULATE_MASK - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_CALCULATE_MASK",
        "typing": "31"
      },
      {
        "comments": [
          "@param BONE_USED_BY_HITBOX - A hitbox is attached to this bone"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_HITBOX",
        "typing": "256"
      },
      {
        "comments": [
          "@param BONE_USED_BY_ATTACHMENT - An attachment is attached to this bone"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_ATTACHMENT",
        "typing": "512"
      },
      {
        "comments": [
          "@param BONE_USED_BY_VERTEX_LOD0 - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_VERTEX_LOD0",
        "typing": "1024"
      },
      {
        "comments": [
          "@param BONE_USED_BY_VERTEX_LOD1 - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_VERTEX_LOD1",
        "typing": "2048"
      },
      {
        "comments": [
          "@param BONE_USED_BY_VERTEX_LOD2 - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_VERTEX_LOD2",
        "typing": "4096"
      },
      {
        "comments": [
          "@param BONE_USED_BY_VERTEX_LOD3 - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_VERTEX_LOD3",
        "typing": "8192"
      },
      {
        "comments": [
          "@param BONE_USED_BY_VERTEX_LOD4 - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_VERTEX_LOD4",
        "typing": "16384"
      },
      {
        "comments": [
          "@param BONE_USED_BY_VERTEX_LOD5 - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_VERTEX_LOD5",
        "typing": "32768"
      },
      {
        "comments": [
          "@param BONE_USED_BY_VERTEX_LOD6 - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_VERTEX_LOD6",
        "typing": "65536"
      },
      {
        "comments": [
          "@param BONE_USED_BY_VERTEX_LOD7 - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_VERTEX_LOD7",
        "typing": "131072"
      },
      {
        "comments": [
          "@param BONE_USED_BY_VERTEX_MASK - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_VERTEX_MASK",
        "typing": "261120"
      },
      {
        "comments": [
          "@param BONE_USED_BY_BONE_MERGE - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_BONE_MERGE",
        "typing": "262144"
      },
      {
        "comments": [
          "@param BONE_USED_BY_ANYTHING - Is this bone used by anything?( If any BONE_USED_BY_* flags are true )"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_BY_ANYTHING",
        "typing": "524032"
      },
      {
        "comments": [
          "@param BONE_USED_MASK - no description"
        ],
        "context": "BONE",
        "type": "enum",
        "name": "BONE_USED_MASK",
        "typing": "524032"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/BLOOD COLOR",
      "@enum BLOOD_COLOR",
      "@description Enumerations used by @EntityFuncs:GetBloodColor and @EntityFuncs:SetBloodColor.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "BLOOD_COLOR",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param DONT_BLEED - No blood"
        ],
        "context": "BLOOD_COLOR",
        "type": "enum",
        "name": "DONT_BLEED",
        "typing": "-1"
      },
      {
        "comments": [
          "@param BLOOD_COLOR_RED - Normal red blood"
        ],
        "context": "BLOOD_COLOR",
        "type": "enum",
        "name": "BLOOD_COLOR_RED",
        "typing": "0"
      },
      {
        "comments": [
          "@param BLOOD_COLOR_YELLOW - Yellow blood"
        ],
        "context": "BLOOD_COLOR",
        "type": "enum",
        "name": "BLOOD_COLOR_YELLOW",
        "typing": "1"
      },
      {
        "comments": [
          "@param BLOOD_COLOR_GREEN - Green-red blood"
        ],
        "context": "BLOOD_COLOR",
        "type": "enum",
        "name": "BLOOD_COLOR_GREEN",
        "typing": "2"
      },
      {
        "comments": [
          "@param BLOOD_COLOR_MECH - Sparks"
        ],
        "context": "BLOOD_COLOR",
        "type": "enum",
        "name": "BLOOD_COLOR_MECH",
        "typing": "3"
      },
      {
        "comments": [
          "@param BLOOD_COLOR_ANTLION - Yellow blood"
        ],
        "context": "BLOOD_COLOR",
        "type": "enum",
        "name": "BLOOD_COLOR_ANTLION",
        "typing": "4"
      },
      {
        "comments": [
          "@param BLOOD_COLOR_ZOMBIE - Green-red blood"
        ],
        "context": "BLOOD_COLOR",
        "type": "enum",
        "name": "BLOOD_COLOR_ZOMBIE",
        "typing": "5"
      },
      {
        "comments": [
          "@param BLOOD_COLOR_ANTLION_WORKER - Bright green blood"
        ],
        "context": "BLOOD_COLOR",
        "type": "enum",
        "name": "BLOOD_COLOR_ANTLION_WORKER",
        "typing": "6"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/BLENDFUNC",
      "@enum BLENDFUNC",
      "@description Used by @render.OverrideBlend.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "BLENDFUNC",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param BLENDFUNC_ADD - no description"
        ],
        "context": "BLENDFUNC",
        "type": "enum",
        "name": "BLENDFUNC_ADD",
        "typing": "0"
      },
      {
        "comments": [
          "@param BLENDFUNC_SUBTRACT - no description"
        ],
        "context": "BLENDFUNC",
        "type": "enum",
        "name": "BLENDFUNC_SUBTRACT",
        "typing": "1"
      },
      {
        "comments": [
          "@param BLENDFUNC_REVERSE_SUBTRACT - no description"
        ],
        "context": "BLENDFUNC",
        "type": "enum",
        "name": "BLENDFUNC_REVERSE_SUBTRACT",
        "typing": "2"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/BLEND",
      "@enum BLEND",
      "@description Used by @render.OverrideBlend to determine how texture RGBA information should be interpreted when rendered.\nFor more information refer to OpenGL's glBlendFunc page here: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBlendFunc.xhtml\nClientside only.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "BLEND",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param BLEND_ZERO - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_ZERO",
        "typing": "0"
      },
      {
        "comments": [
          "@param BLEND_ONE - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_ONE",
        "typing": "1"
      },
      {
        "comments": [
          "@param BLEND_DST_COLOR - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_DST_COLOR",
        "typing": "2"
      },
      {
        "comments": [
          "@param BLEND_ONE_MINUS_DST_COLOR - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_ONE_MINUS_DST_COLOR",
        "typing": "3"
      },
      {
        "comments": [
          "@param BLEND_SRC_ALPHA - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_SRC_ALPHA",
        "typing": "4"
      },
      {
        "comments": [
          "@param BLEND_ONE_MINUS_SRC_ALPHA - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_ONE_MINUS_SRC_ALPHA",
        "typing": "5"
      },
      {
        "comments": [
          "@param BLEND_DST_ALPHA - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_DST_ALPHA",
        "typing": "6"
      },
      {
        "comments": [
          "@param BLEND_ONE_MINUS_DST_ALPHA - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_ONE_MINUS_DST_ALPHA",
        "typing": "7"
      },
      {
        "comments": [
          "@param BLEND_SRC_ALPHA_SATURATE - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_SRC_ALPHA_SATURATE",
        "typing": "8"
      },
      {
        "comments": [
          "@param BLEND_SRC_COLOR - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_SRC_COLOR",
        "typing": "9"
      },
      {
        "comments": [
          "@param BLEND_ONE_MINUS_SRC_COLOR - no description"
        ],
        "context": "BLEND",
        "type": "enum",
        "name": "BLEND_ONE_MINUS_SRC_COLOR",
        "typing": "10"
      }
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/AMMO",
      "@note These enumerations do not exist in game and are listed here only for reference!",
      "@enum AMMO",
      "@description Used by @game.AddAmmoType's input structure - the @AmmoData structure.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "AMMO",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param AMMO_FORCE_DROP_IF_CARRIED - Forces player to drop the object they are carrying if the object was hit by this ammo type."
        ],
        "context": "AMMO",
        "type": "enum",
        "name": "AMMO_FORCE_DROP_IF_CARRIED",
        "typing": "1"
      },
      {
        "comments": [
          "@param AMMO_INTERPRET_PLRDAMAGE_AS_DAMAGE_TO_PLAYER - Uses [AmmoData](https://wiki.garrysmod.com/page/Structures/AmmoData).plydmg of the ammo type as the damage to deal to shot players instead of [Bullet](https://wiki.garrysmod.com/page/Structures/Bullet).Damage."
        ],
        "context": "AMMO",
        "type": "enum",
        "name": "AMMO_INTERPRET_PLRDAMAGE_AS_DAMAGE_TO_PLAYER",
        "typing": "2"
      }
    ]
  },
  {
    "comments": [
      "\nReturns entity that has given @EntityFuncs:MapCreationID.\n",
      "@name ents.GetMapCreatedEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ents/GetMapCreatedEntity",
      "@param {void} this - no description",
      "@param {number} id - Entity's creation id",
      "@returns {Entity} - Found entity"
    ],
    "type": "func",
    "context": "ents",
    "name": "GetMapCreatedEntity",
    "typings": [
      "(this: void, id: number): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of networked entities, which is limited to 8192. @ents.Create will fail somewhere between 8064 and 8176 - this can vary based on the amount of existing temp ents.\n",
      "@name ents.GetEdictCount",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ents/GetEdictCount",
      "@param {void} this - no description",
      "@returns {number} - Number of networked entities"
    ],
    "type": "func",
    "context": "ents",
    "name": "GetEdictCount",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "@wiki https://wiki.garrysmod.com/page/Enums/ACT",
      "@bug #3075 Some activity enums are unlisted since they do not exist as variables in-game, but still link to existing player animations.",
      "@enum ACT",
      "@description Enumerations used by functions like @WeaponFuncs:SendWeaponAnim & @EntityFuncs:SelectWeightedSequence.",
      "@compileMembersOnly"
    ],
    "type": "enum",
    "context": "Enums",
    "name": "ACT",
    "typings": [],
    "types": [
      {
        "comments": [
          "@param ACT_INVALID - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_INVALID",
        "typing": "-1"
      },
      {
        "comments": [
          "@param ACT_RESET - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RESET",
        "typing": "0"
      },
      {
        "comments": [
          "@param ACT_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE",
        "typing": "1"
      },
      {
        "comments": [
          "@param ACT_TRANSITION - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_TRANSITION",
        "typing": "2"
      },
      {
        "comments": [
          "@param ACT_COVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_COVER",
        "typing": "3"
      },
      {
        "comments": [
          "@param ACT_COVER_MED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_COVER_MED",
        "typing": "4"
      },
      {
        "comments": [
          "@param ACT_COVER_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_COVER_LOW",
        "typing": "5"
      },
      {
        "comments": [
          "@param ACT_WALK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK",
        "typing": "6"
      },
      {
        "comments": [
          "@param ACT_WALK_AIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AIM",
        "typing": "7"
      },
      {
        "comments": [
          "@param ACT_WALK_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_CROUCH",
        "typing": "8"
      },
      {
        "comments": [
          "@param ACT_WALK_CROUCH_AIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_CROUCH_AIM",
        "typing": "9"
      },
      {
        "comments": [
          "@param ACT_RUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN",
        "typing": "10"
      },
      {
        "comments": [
          "@param ACT_RUN_AIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AIM",
        "typing": "11"
      },
      {
        "comments": [
          "@param ACT_RUN_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_CROUCH",
        "typing": "12"
      },
      {
        "comments": [
          "@param ACT_RUN_CROUCH_AIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_CROUCH_AIM",
        "typing": "13"
      },
      {
        "comments": [
          "@param ACT_RUN_PROTECTED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_PROTECTED",
        "typing": "14"
      },
      {
        "comments": [
          "@param ACT_SCRIPT_CUSTOM_MOVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SCRIPT_CUSTOM_MOVE",
        "typing": "15"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK1",
        "typing": "16"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK2",
        "typing": "17"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK1_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK1_LOW",
        "typing": "18"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK2_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK2_LOW",
        "typing": "19"
      },
      {
        "comments": [
          "@param ACT_DIESIMPLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIESIMPLE",
        "typing": "20"
      },
      {
        "comments": [
          "@param ACT_DIEBACKWARD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIEBACKWARD",
        "typing": "21"
      },
      {
        "comments": [
          "@param ACT_DIEFORWARD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIEFORWARD",
        "typing": "22"
      },
      {
        "comments": [
          "@param ACT_DIEVIOLENT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIEVIOLENT",
        "typing": "23"
      },
      {
        "comments": [
          "@param ACT_DIERAGDOLL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIERAGDOLL",
        "typing": "24"
      },
      {
        "comments": [
          "@param ACT_FLY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FLY",
        "typing": "25"
      },
      {
        "comments": [
          "@param ACT_HOVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HOVER",
        "typing": "26"
      },
      {
        "comments": [
          "@param ACT_GLIDE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GLIDE",
        "typing": "27"
      },
      {
        "comments": [
          "@param ACT_SWIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SWIM",
        "typing": "28"
      },
      {
        "comments": [
          "@param ACT_SWIM_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SWIM_IDLE",
        "typing": "29"
      },
      {
        "comments": [
          "@param ACT_JUMP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_JUMP",
        "typing": "30"
      },
      {
        "comments": [
          "@param ACT_HOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HOP",
        "typing": "31"
      },
      {
        "comments": [
          "@param ACT_LEAP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_LEAP",
        "typing": "32"
      },
      {
        "comments": [
          "@param ACT_LAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_LAND",
        "typing": "33"
      },
      {
        "comments": [
          "@param ACT_CLIMB_UP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CLIMB_UP",
        "typing": "34"
      },
      {
        "comments": [
          "@param ACT_CLIMB_DOWN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CLIMB_DOWN",
        "typing": "35"
      },
      {
        "comments": [
          "@param ACT_CLIMB_DISMOUNT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CLIMB_DISMOUNT",
        "typing": "36"
      },
      {
        "comments": [
          "@param ACT_SHIPLADDER_UP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHIPLADDER_UP",
        "typing": "37"
      },
      {
        "comments": [
          "@param ACT_SHIPLADDER_DOWN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHIPLADDER_DOWN",
        "typing": "38"
      },
      {
        "comments": [
          "@param ACT_STRAFE_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_STRAFE_LEFT",
        "typing": "39"
      },
      {
        "comments": [
          "@param ACT_STRAFE_RIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_STRAFE_RIGHT",
        "typing": "40"
      },
      {
        "comments": [
          "@param ACT_ROLL_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_ROLL_LEFT",
        "typing": "41"
      },
      {
        "comments": [
          "@param ACT_ROLL_RIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_ROLL_RIGHT",
        "typing": "42"
      },
      {
        "comments": [
          "@param ACT_TURN_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_TURN_LEFT",
        "typing": "43"
      },
      {
        "comments": [
          "@param ACT_TURN_RIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_TURN_RIGHT",
        "typing": "44"
      },
      {
        "comments": [
          "@param ACT_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCH",
        "typing": "45"
      },
      {
        "comments": [
          "@param ACT_CROUCHIDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHIDLE",
        "typing": "46"
      },
      {
        "comments": [
          "@param ACT_STAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_STAND",
        "typing": "47"
      },
      {
        "comments": [
          "@param ACT_USE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_USE",
        "typing": "48"
      },
      {
        "comments": [
          "@param ACT_SIGNAL1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SIGNAL1",
        "typing": "49"
      },
      {
        "comments": [
          "@param ACT_SIGNAL2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SIGNAL2",
        "typing": "50"
      },
      {
        "comments": [
          "@param ACT_SIGNAL3 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SIGNAL3",
        "typing": "51"
      },
      {
        "comments": [
          "@param ACT_SIGNAL_ADVANCE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SIGNAL_ADVANCE",
        "typing": "52"
      },
      {
        "comments": [
          "@param ACT_SIGNAL_FORWARD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SIGNAL_FORWARD",
        "typing": "53"
      },
      {
        "comments": [
          "@param ACT_SIGNAL_GROUP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SIGNAL_GROUP",
        "typing": "54"
      },
      {
        "comments": [
          "@param ACT_SIGNAL_HALT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SIGNAL_HALT",
        "typing": "55"
      },
      {
        "comments": [
          "@param ACT_SIGNAL_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SIGNAL_LEFT",
        "typing": "56"
      },
      {
        "comments": [
          "@param ACT_SIGNAL_RIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SIGNAL_RIGHT",
        "typing": "57"
      },
      {
        "comments": [
          "@param ACT_SIGNAL_TAKECOVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SIGNAL_TAKECOVER",
        "typing": "58"
      },
      {
        "comments": [
          "@param ACT_LOOKBACK_RIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_LOOKBACK_RIGHT",
        "typing": "59"
      },
      {
        "comments": [
          "@param ACT_LOOKBACK_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_LOOKBACK_LEFT",
        "typing": "60"
      },
      {
        "comments": [
          "@param ACT_COWER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_COWER",
        "typing": "61"
      },
      {
        "comments": [
          "@param ACT_SMALL_FLINCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SMALL_FLINCH",
        "typing": "62"
      },
      {
        "comments": [
          "@param ACT_BIG_FLINCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BIG_FLINCH",
        "typing": "63"
      },
      {
        "comments": [
          "@param ACT_MELEE_ATTACK1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MELEE_ATTACK1",
        "typing": "64"
      },
      {
        "comments": [
          "@param ACT_MELEE_ATTACK2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MELEE_ATTACK2",
        "typing": "65"
      },
      {
        "comments": [
          "@param ACT_RELOAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RELOAD",
        "typing": "66"
      },
      {
        "comments": [
          "@param ACT_RELOAD_START - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RELOAD_START",
        "typing": "67"
      },
      {
        "comments": [
          "@param ACT_RELOAD_FINISH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RELOAD_FINISH",
        "typing": "68"
      },
      {
        "comments": [
          "@param ACT_RELOAD_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RELOAD_LOW",
        "typing": "69"
      },
      {
        "comments": [
          "@param ACT_ARM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_ARM",
        "typing": "70"
      },
      {
        "comments": [
          "@param ACT_DISARM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DISARM",
        "typing": "71"
      },
      {
        "comments": [
          "@param ACT_DROP_WEAPON - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DROP_WEAPON",
        "typing": "72"
      },
      {
        "comments": [
          "@param ACT_DROP_WEAPON_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DROP_WEAPON_SHOTGUN",
        "typing": "73"
      },
      {
        "comments": [
          "@param ACT_PICKUP_GROUND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PICKUP_GROUND",
        "typing": "74"
      },
      {
        "comments": [
          "@param ACT_PICKUP_RACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PICKUP_RACK",
        "typing": "75"
      },
      {
        "comments": [
          "@param ACT_IDLE_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_ANGRY",
        "typing": "76"
      },
      {
        "comments": [
          "@param ACT_IDLE_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_RELAXED",
        "typing": "77"
      },
      {
        "comments": [
          "@param ACT_IDLE_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_STIMULATED",
        "typing": "78"
      },
      {
        "comments": [
          "@param ACT_IDLE_AGITATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_AGITATED",
        "typing": "79"
      },
      {
        "comments": [
          "@param ACT_IDLE_STEALTH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_STEALTH",
        "typing": "80"
      },
      {
        "comments": [
          "@param ACT_IDLE_HURT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_HURT",
        "typing": "81"
      },
      {
        "comments": [
          "@param ACT_WALK_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_RELAXED",
        "typing": "82"
      },
      {
        "comments": [
          "@param ACT_WALK_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_STIMULATED",
        "typing": "83"
      },
      {
        "comments": [
          "@param ACT_WALK_AGITATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AGITATED",
        "typing": "84"
      },
      {
        "comments": [
          "@param ACT_WALK_STEALTH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_STEALTH",
        "typing": "85"
      },
      {
        "comments": [
          "@param ACT_RUN_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_RELAXED",
        "typing": "86"
      },
      {
        "comments": [
          "@param ACT_RUN_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_STIMULATED",
        "typing": "87"
      },
      {
        "comments": [
          "@param ACT_RUN_AGITATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AGITATED",
        "typing": "88"
      },
      {
        "comments": [
          "@param ACT_RUN_STEALTH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_STEALTH",
        "typing": "89"
      },
      {
        "comments": [
          "@param ACT_IDLE_AIM_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_AIM_RELAXED",
        "typing": "90"
      },
      {
        "comments": [
          "@param ACT_IDLE_AIM_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_AIM_STIMULATED",
        "typing": "91"
      },
      {
        "comments": [
          "@param ACT_IDLE_AIM_AGITATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_AIM_AGITATED",
        "typing": "92"
      },
      {
        "comments": [
          "@param ACT_IDLE_AIM_STEALTH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_AIM_STEALTH",
        "typing": "93"
      },
      {
        "comments": [
          "@param ACT_WALK_AIM_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AIM_RELAXED",
        "typing": "94"
      },
      {
        "comments": [
          "@param ACT_WALK_AIM_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AIM_STIMULATED",
        "typing": "95"
      },
      {
        "comments": [
          "@param ACT_WALK_AIM_AGITATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AIM_AGITATED",
        "typing": "96"
      },
      {
        "comments": [
          "@param ACT_WALK_AIM_STEALTH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AIM_STEALTH",
        "typing": "97"
      },
      {
        "comments": [
          "@param ACT_RUN_AIM_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AIM_RELAXED",
        "typing": "98"
      },
      {
        "comments": [
          "@param ACT_RUN_AIM_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AIM_STIMULATED",
        "typing": "99"
      },
      {
        "comments": [
          "@param ACT_RUN_AIM_AGITATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AIM_AGITATED",
        "typing": "100"
      },
      {
        "comments": [
          "@param ACT_RUN_AIM_STEALTH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AIM_STEALTH",
        "typing": "101"
      },
      {
        "comments": [
          "@param ACT_CROUCHIDLE_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHIDLE_STIMULATED",
        "typing": "102"
      },
      {
        "comments": [
          "@param ACT_CROUCHIDLE_AIM_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHIDLE_AIM_STIMULATED",
        "typing": "103"
      },
      {
        "comments": [
          "@param ACT_CROUCHIDLE_AGITATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHIDLE_AGITATED",
        "typing": "104"
      },
      {
        "comments": [
          "@param ACT_WALK_HURT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_HURT",
        "typing": "105"
      },
      {
        "comments": [
          "@param ACT_RUN_HURT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_HURT",
        "typing": "106"
      },
      {
        "comments": [
          "@param ACT_SPECIAL_ATTACK1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SPECIAL_ATTACK1",
        "typing": "107"
      },
      {
        "comments": [
          "@param ACT_SPECIAL_ATTACK2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SPECIAL_ATTACK2",
        "typing": "108"
      },
      {
        "comments": [
          "@param ACT_COMBAT_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_COMBAT_IDLE",
        "typing": "109"
      },
      {
        "comments": [
          "@param ACT_WALK_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_SCARED",
        "typing": "110"
      },
      {
        "comments": [
          "@param ACT_RUN_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_SCARED",
        "typing": "111"
      },
      {
        "comments": [
          "@param ACT_VICTORY_DANCE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VICTORY_DANCE",
        "typing": "112"
      },
      {
        "comments": [
          "@param ACT_DIE_HEADSHOT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIE_HEADSHOT",
        "typing": "113"
      },
      {
        "comments": [
          "@param ACT_DIE_CHESTSHOT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIE_CHESTSHOT",
        "typing": "114"
      },
      {
        "comments": [
          "@param ACT_DIE_GUTSHOT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIE_GUTSHOT",
        "typing": "115"
      },
      {
        "comments": [
          "@param ACT_DIE_BACKSHOT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIE_BACKSHOT",
        "typing": "116"
      },
      {
        "comments": [
          "@param ACT_FLINCH_HEAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FLINCH_HEAD",
        "typing": "117"
      },
      {
        "comments": [
          "@param ACT_FLINCH_CHEST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FLINCH_CHEST",
        "typing": "118"
      },
      {
        "comments": [
          "@param ACT_FLINCH_STOMACH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FLINCH_STOMACH",
        "typing": "119"
      },
      {
        "comments": [
          "@param ACT_FLINCH_LEFTARM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FLINCH_LEFTARM",
        "typing": "120"
      },
      {
        "comments": [
          "@param ACT_FLINCH_RIGHTARM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FLINCH_RIGHTARM",
        "typing": "121"
      },
      {
        "comments": [
          "@param ACT_FLINCH_LEFTLEG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FLINCH_LEFTLEG",
        "typing": "122"
      },
      {
        "comments": [
          "@param ACT_FLINCH_RIGHTLEG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FLINCH_RIGHTLEG",
        "typing": "123"
      },
      {
        "comments": [
          "@param ACT_FLINCH_PHYSICS - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FLINCH_PHYSICS",
        "typing": "124"
      },
      {
        "comments": [
          "@param ACT_IDLE_ON_FIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_ON_FIRE",
        "typing": "125"
      },
      {
        "comments": [
          "@param ACT_WALK_ON_FIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_ON_FIRE",
        "typing": "126"
      },
      {
        "comments": [
          "@param ACT_RUN_ON_FIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_ON_FIRE",
        "typing": "127"
      },
      {
        "comments": [
          "@param ACT_RAPPEL_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RAPPEL_LOOP",
        "typing": "128"
      },
      {
        "comments": [
          "@param ACT_180_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_180_LEFT",
        "typing": "129"
      },
      {
        "comments": [
          "@param ACT_180_RIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_180_RIGHT",
        "typing": "130"
      },
      {
        "comments": [
          "@param ACT_90_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_90_LEFT",
        "typing": "131"
      },
      {
        "comments": [
          "@param ACT_90_RIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_90_RIGHT",
        "typing": "132"
      },
      {
        "comments": [
          "@param ACT_STEP_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_STEP_LEFT",
        "typing": "133"
      },
      {
        "comments": [
          "@param ACT_STEP_RIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_STEP_RIGHT",
        "typing": "134"
      },
      {
        "comments": [
          "@param ACT_STEP_BACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_STEP_BACK",
        "typing": "135"
      },
      {
        "comments": [
          "@param ACT_STEP_FORE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_STEP_FORE",
        "typing": "136"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK1",
        "typing": "137"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK2",
        "typing": "138"
      },
      {
        "comments": [
          "@param ACT_GESTURE_MELEE_ATTACK1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_MELEE_ATTACK1",
        "typing": "139"
      },
      {
        "comments": [
          "@param ACT_GESTURE_MELEE_ATTACK2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_MELEE_ATTACK2",
        "typing": "140"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK1_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK1_LOW",
        "typing": "141"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK2_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK2_LOW",
        "typing": "142"
      },
      {
        "comments": [
          "@param ACT_MELEE_ATTACK_SWING_GESTURE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MELEE_ATTACK_SWING_GESTURE",
        "typing": "143"
      },
      {
        "comments": [
          "@param ACT_GESTURE_SMALL_FLINCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_SMALL_FLINCH",
        "typing": "144"
      },
      {
        "comments": [
          "@param ACT_GESTURE_BIG_FLINCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_BIG_FLINCH",
        "typing": "145"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_BLAST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_BLAST",
        "typing": "146"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_BLAST_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_BLAST_SHOTGUN",
        "typing": "147"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_BLAST_DAMAGED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_BLAST_DAMAGED",
        "typing": "148"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_BLAST_DAMAGED_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_BLAST_DAMAGED_SHOTGUN",
        "typing": "149"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_HEAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_HEAD",
        "typing": "150"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_CHEST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_CHEST",
        "typing": "151"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_STOMACH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_STOMACH",
        "typing": "152"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_LEFTARM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_LEFTARM",
        "typing": "153"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_RIGHTARM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_RIGHTARM",
        "typing": "154"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_LEFTLEG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_LEFTLEG",
        "typing": "155"
      },
      {
        "comments": [
          "@param ACT_GESTURE_FLINCH_RIGHTLEG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_FLINCH_RIGHTLEG",
        "typing": "156"
      },
      {
        "comments": [
          "@param ACT_GESTURE_TURN_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_TURN_LEFT",
        "typing": "157"
      },
      {
        "comments": [
          "@param ACT_GESTURE_TURN_RIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_TURN_RIGHT",
        "typing": "158"
      },
      {
        "comments": [
          "@param ACT_GESTURE_TURN_LEFT45 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_TURN_LEFT45",
        "typing": "159"
      },
      {
        "comments": [
          "@param ACT_GESTURE_TURN_RIGHT45 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_TURN_RIGHT45",
        "typing": "160"
      },
      {
        "comments": [
          "@param ACT_GESTURE_TURN_LEFT90 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_TURN_LEFT90",
        "typing": "161"
      },
      {
        "comments": [
          "@param ACT_GESTURE_TURN_RIGHT90 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_TURN_RIGHT90",
        "typing": "162"
      },
      {
        "comments": [
          "@param ACT_GESTURE_TURN_LEFT45_FLAT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_TURN_LEFT45_FLAT",
        "typing": "163"
      },
      {
        "comments": [
          "@param ACT_GESTURE_TURN_RIGHT45_FLAT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_TURN_RIGHT45_FLAT",
        "typing": "164"
      },
      {
        "comments": [
          "@param ACT_GESTURE_TURN_LEFT90_FLAT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_TURN_LEFT90_FLAT",
        "typing": "165"
      },
      {
        "comments": [
          "@param ACT_GESTURE_TURN_RIGHT90_FLAT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_TURN_RIGHT90_FLAT",
        "typing": "166"
      },
      {
        "comments": [
          "@param ACT_BARNACLE_HIT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BARNACLE_HIT",
        "typing": "167"
      },
      {
        "comments": [
          "@param ACT_BARNACLE_PULL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BARNACLE_PULL",
        "typing": "168"
      },
      {
        "comments": [
          "@param ACT_BARNACLE_CHOMP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BARNACLE_CHOMP",
        "typing": "169"
      },
      {
        "comments": [
          "@param ACT_BARNACLE_CHEW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BARNACLE_CHEW",
        "typing": "170"
      },
      {
        "comments": [
          "@param ACT_DO_NOT_DISTURB - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DO_NOT_DISTURB",
        "typing": "171"
      },
      {
        "comments": [
          "@param ACT_VM_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DRAW",
        "typing": "172"
      },
      {
        "comments": [
          "@param ACT_VM_HOLSTER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HOLSTER",
        "typing": "173"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE",
        "typing": "174"
      },
      {
        "comments": [
          "@param ACT_VM_FIDGET - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_FIDGET",
        "typing": "175"
      },
      {
        "comments": [
          "@param ACT_VM_PULLBACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PULLBACK",
        "typing": "176"
      },
      {
        "comments": [
          "@param ACT_VM_PULLBACK_HIGH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PULLBACK_HIGH",
        "typing": "177"
      },
      {
        "comments": [
          "@param ACT_VM_PULLBACK_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PULLBACK_LOW",
        "typing": "178"
      },
      {
        "comments": [
          "@param ACT_VM_THROW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_THROW",
        "typing": "179"
      },
      {
        "comments": [
          "@param ACT_VM_PULLPIN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PULLPIN",
        "typing": "180"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK",
        "typing": "181"
      },
      {
        "comments": [
          "@param ACT_VM_SECONDARYATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_SECONDARYATTACK",
        "typing": "182"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD",
        "typing": "183"
      },
      {
        "comments": [
          "@param ACT_VM_DRYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DRYFIRE",
        "typing": "186"
      },
      {
        "comments": [
          "@param ACT_VM_HITLEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HITLEFT",
        "typing": "187"
      },
      {
        "comments": [
          "@param ACT_VM_HITLEFT2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HITLEFT2",
        "typing": "188"
      },
      {
        "comments": [
          "@param ACT_VM_HITRIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HITRIGHT",
        "typing": "189"
      },
      {
        "comments": [
          "@param ACT_VM_HITRIGHT2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HITRIGHT2",
        "typing": "190"
      },
      {
        "comments": [
          "@param ACT_VM_HITCENTER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HITCENTER",
        "typing": "191"
      },
      {
        "comments": [
          "@param ACT_VM_HITCENTER2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HITCENTER2",
        "typing": "192"
      },
      {
        "comments": [
          "@param ACT_VM_MISSLEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_MISSLEFT",
        "typing": "193"
      },
      {
        "comments": [
          "@param ACT_VM_MISSLEFT2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_MISSLEFT2",
        "typing": "194"
      },
      {
        "comments": [
          "@param ACT_VM_MISSRIGHT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_MISSRIGHT",
        "typing": "195"
      },
      {
        "comments": [
          "@param ACT_VM_MISSRIGHT2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_MISSRIGHT2",
        "typing": "196"
      },
      {
        "comments": [
          "@param ACT_VM_MISSCENTER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_MISSCENTER",
        "typing": "197"
      },
      {
        "comments": [
          "@param ACT_VM_MISSCENTER2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_MISSCENTER2",
        "typing": "198"
      },
      {
        "comments": [
          "@param ACT_VM_HAULBACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HAULBACK",
        "typing": "199"
      },
      {
        "comments": [
          "@param ACT_VM_SWINGHARD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_SWINGHARD",
        "typing": "200"
      },
      {
        "comments": [
          "@param ACT_VM_SWINGMISS - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_SWINGMISS",
        "typing": "201"
      },
      {
        "comments": [
          "@param ACT_VM_SWINGHIT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_SWINGHIT",
        "typing": "202"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_TO_LOWERED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_TO_LOWERED",
        "typing": "203"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_LOWERED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_LOWERED",
        "typing": "204"
      },
      {
        "comments": [
          "@param ACT_VM_LOWERED_TO_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_LOWERED_TO_IDLE",
        "typing": "205"
      },
      {
        "comments": [
          "@param ACT_VM_RECOIL1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RECOIL1",
        "typing": "206"
      },
      {
        "comments": [
          "@param ACT_VM_RECOIL2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RECOIL2",
        "typing": "207"
      },
      {
        "comments": [
          "@param ACT_VM_RECOIL3 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RECOIL3",
        "typing": "208"
      },
      {
        "comments": [
          "@param ACT_VM_PICKUP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PICKUP",
        "typing": "209"
      },
      {
        "comments": [
          "@param ACT_VM_RELEASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELEASE",
        "typing": "210"
      },
      {
        "comments": [
          "@param ACT_VM_ATTACH_SILENCER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_ATTACH_SILENCER",
        "typing": "211"
      },
      {
        "comments": [
          "@param ACT_VM_DETACH_SILENCER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DETACH_SILENCER",
        "typing": "212"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_IDLE",
        "typing": "229"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_ND_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_ND_IDLE",
        "typing": "230"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_ATTACH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_ATTACH",
        "typing": "231"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_ATTACH2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_ATTACH2",
        "typing": "232"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_ND_ATTACH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_ND_ATTACH",
        "typing": "233"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_ND_ATTACH2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_ND_ATTACH2",
        "typing": "234"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_DETONATE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_DETONATE",
        "typing": "235"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_DETONATOR_HOLSTER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_DETONATOR_HOLSTER",
        "typing": "236"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_DRAW",
        "typing": "237"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_ND_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_ND_DRAW",
        "typing": "238"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_TO_THROW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_TO_THROW",
        "typing": "239"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_TO_THROW_ND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_TO_THROW_ND",
        "typing": "240"
      },
      {
        "comments": [
          "@param ACT_SLAM_STICKWALL_TO_TRIPMINE_ND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_STICKWALL_TO_TRIPMINE_ND",
        "typing": "241"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_IDLE",
        "typing": "242"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_ND_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_ND_IDLE",
        "typing": "243"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_THROW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_THROW",
        "typing": "244"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_THROW2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_THROW2",
        "typing": "245"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_THROW_ND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_THROW_ND",
        "typing": "246"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_THROW_ND2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_THROW_ND2",
        "typing": "247"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_DRAW",
        "typing": "248"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_ND_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_ND_DRAW",
        "typing": "249"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_TO_STICKWALL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_TO_STICKWALL",
        "typing": "250"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_TO_STICKWALL_ND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_TO_STICKWALL_ND",
        "typing": "251"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_DETONATE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_DETONATE",
        "typing": "252"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_DETONATOR_HOLSTER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_DETONATOR_HOLSTER",
        "typing": "253"
      },
      {
        "comments": [
          "@param ACT_SLAM_THROW_TO_TRIPMINE_ND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_THROW_TO_TRIPMINE_ND",
        "typing": "254"
      },
      {
        "comments": [
          "@param ACT_SLAM_TRIPMINE_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_TRIPMINE_IDLE",
        "typing": "255"
      },
      {
        "comments": [
          "@param ACT_SLAM_TRIPMINE_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_TRIPMINE_DRAW",
        "typing": "256"
      },
      {
        "comments": [
          "@param ACT_SLAM_TRIPMINE_ATTACH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_TRIPMINE_ATTACH",
        "typing": "257"
      },
      {
        "comments": [
          "@param ACT_SLAM_TRIPMINE_ATTACH2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_TRIPMINE_ATTACH2",
        "typing": "258"
      },
      {
        "comments": [
          "@param ACT_SLAM_TRIPMINE_TO_STICKWALL_ND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_TRIPMINE_TO_STICKWALL_ND",
        "typing": "259"
      },
      {
        "comments": [
          "@param ACT_SLAM_TRIPMINE_TO_THROW_ND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_TRIPMINE_TO_THROW_ND",
        "typing": "260"
      },
      {
        "comments": [
          "@param ACT_SLAM_DETONATOR_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_DETONATOR_IDLE",
        "typing": "261"
      },
      {
        "comments": [
          "@param ACT_SLAM_DETONATOR_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_DETONATOR_DRAW",
        "typing": "262"
      },
      {
        "comments": [
          "@param ACT_SLAM_DETONATOR_DETONATE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_DETONATOR_DETONATE",
        "typing": "263"
      },
      {
        "comments": [
          "@param ACT_SLAM_DETONATOR_HOLSTER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_DETONATOR_HOLSTER",
        "typing": "264"
      },
      {
        "comments": [
          "@param ACT_SLAM_DETONATOR_STICKWALL_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_DETONATOR_STICKWALL_DRAW",
        "typing": "265"
      },
      {
        "comments": [
          "@param ACT_SLAM_DETONATOR_THROW_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SLAM_DETONATOR_THROW_DRAW",
        "typing": "266"
      },
      {
        "comments": [
          "@param ACT_SHOTGUN_RELOAD_START - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHOTGUN_RELOAD_START",
        "typing": "267"
      },
      {
        "comments": [
          "@param ACT_SHOTGUN_RELOAD_FINISH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHOTGUN_RELOAD_FINISH",
        "typing": "268"
      },
      {
        "comments": [
          "@param ACT_SHOTGUN_PUMP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHOTGUN_PUMP",
        "typing": "269"
      },
      {
        "comments": [
          "@param ACT_SMG2_IDLE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SMG2_IDLE2",
        "typing": "270"
      },
      {
        "comments": [
          "@param ACT_SMG2_FIRE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SMG2_FIRE2",
        "typing": "271"
      },
      {
        "comments": [
          "@param ACT_SMG2_DRAW2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SMG2_DRAW2",
        "typing": "272"
      },
      {
        "comments": [
          "@param ACT_SMG2_RELOAD2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SMG2_RELOAD2",
        "typing": "273"
      },
      {
        "comments": [
          "@param ACT_SMG2_DRYFIRE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SMG2_DRYFIRE2",
        "typing": "274"
      },
      {
        "comments": [
          "@param ACT_SMG2_TOAUTO - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SMG2_TOAUTO",
        "typing": "275"
      },
      {
        "comments": [
          "@param ACT_SMG2_TOBURST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SMG2_TOBURST",
        "typing": "276"
      },
      {
        "comments": [
          "@param ACT_PHYSCANNON_UPGRADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PHYSCANNON_UPGRADE",
        "typing": "277"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_AR1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_AR1",
        "typing": "278"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_AR2",
        "typing": "279"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_AR2_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_AR2_LOW",
        "typing": "280"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_AR2_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_AR2_GRENADE",
        "typing": "281"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_HMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_HMG1",
        "typing": "282"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_ML - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_ML",
        "typing": "283"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_SMG1",
        "typing": "284"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_SMG1_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_SMG1_LOW",
        "typing": "285"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_SMG2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_SMG2",
        "typing": "286"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_SHOTGUN",
        "typing": "287"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_SHOTGUN_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_SHOTGUN_LOW",
        "typing": "288"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_PISTOL",
        "typing": "289"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_PISTOL_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_PISTOL_LOW",
        "typing": "290"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_SLAM",
        "typing": "291"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_TRIPWIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_TRIPWIRE",
        "typing": "292"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_THROW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_THROW",
        "typing": "293"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_SNIPER_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_SNIPER_RIFLE",
        "typing": "294"
      },
      {
        "comments": [
          "@param ACT_RANGE_ATTACK_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_ATTACK_RPG",
        "typing": "295"
      },
      {
        "comments": [
          "@param ACT_MELEE_ATTACK_SWING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MELEE_ATTACK_SWING",
        "typing": "296"
      },
      {
        "comments": [
          "@param ACT_RANGE_AIM_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_AIM_LOW",
        "typing": "297"
      },
      {
        "comments": [
          "@param ACT_RANGE_AIM_SMG1_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_AIM_SMG1_LOW",
        "typing": "298"
      },
      {
        "comments": [
          "@param ACT_RANGE_AIM_PISTOL_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_AIM_PISTOL_LOW",
        "typing": "299"
      },
      {
        "comments": [
          "@param ACT_RANGE_AIM_AR2_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RANGE_AIM_AR2_LOW",
        "typing": "300"
      },
      {
        "comments": [
          "@param ACT_COVER_PISTOL_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_COVER_PISTOL_LOW",
        "typing": "301"
      },
      {
        "comments": [
          "@param ACT_COVER_SMG1_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_COVER_SMG1_LOW",
        "typing": "302"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_AR1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_AR1",
        "typing": "303"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_AR2",
        "typing": "304"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_AR2_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_AR2_GRENADE",
        "typing": "305"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_HMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_HMG1",
        "typing": "306"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_ML - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_ML",
        "typing": "307"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_SMG1",
        "typing": "308"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_SMG1_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_SMG1_LOW",
        "typing": "309"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_SMG2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_SMG2",
        "typing": "310"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_SHOTGUN",
        "typing": "311"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_PISTOL",
        "typing": "312"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_PISTOL_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_PISTOL_LOW",
        "typing": "313"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_SLAM",
        "typing": "314"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_TRIPWIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_TRIPWIRE",
        "typing": "315"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_THROW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_THROW",
        "typing": "316"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RANGE_ATTACK_SNIPER_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RANGE_ATTACK_SNIPER_RIFLE",
        "typing": "317"
      },
      {
        "comments": [
          "@param ACT_GESTURE_MELEE_ATTACK_SWING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_MELEE_ATTACK_SWING",
        "typing": "318"
      },
      {
        "comments": [
          "@param ACT_IDLE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_RIFLE",
        "typing": "319"
      },
      {
        "comments": [
          "@param ACT_IDLE_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_SMG1",
        "typing": "320"
      },
      {
        "comments": [
          "@param ACT_IDLE_ANGRY_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_ANGRY_SMG1",
        "typing": "321"
      },
      {
        "comments": [
          "@param ACT_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_PISTOL",
        "typing": "322"
      },
      {
        "comments": [
          "@param ACT_IDLE_ANGRY_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_ANGRY_PISTOL",
        "typing": "323"
      },
      {
        "comments": [
          "@param ACT_IDLE_ANGRY_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_ANGRY_SHOTGUN",
        "typing": "324"
      },
      {
        "comments": [
          "@param ACT_IDLE_STEALTH_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_STEALTH_PISTOL",
        "typing": "325"
      },
      {
        "comments": [
          "@param ACT_IDLE_PACKAGE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_PACKAGE",
        "typing": "326"
      },
      {
        "comments": [
          "@param ACT_WALK_PACKAGE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_PACKAGE",
        "typing": "327"
      },
      {
        "comments": [
          "@param ACT_IDLE_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_SUITCASE",
        "typing": "328"
      },
      {
        "comments": [
          "@param ACT_WALK_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_SUITCASE",
        "typing": "329"
      },
      {
        "comments": [
          "@param ACT_IDLE_SMG1_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_SMG1_RELAXED",
        "typing": "330"
      },
      {
        "comments": [
          "@param ACT_IDLE_SMG1_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_SMG1_STIMULATED",
        "typing": "331"
      },
      {
        "comments": [
          "@param ACT_WALK_RIFLE_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_RIFLE_RELAXED",
        "typing": "332"
      },
      {
        "comments": [
          "@param ACT_RUN_RIFLE_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_RIFLE_RELAXED",
        "typing": "333"
      },
      {
        "comments": [
          "@param ACT_WALK_RIFLE_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_RIFLE_STIMULATED",
        "typing": "334"
      },
      {
        "comments": [
          "@param ACT_RUN_RIFLE_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_RIFLE_STIMULATED",
        "typing": "335"
      },
      {
        "comments": [
          "@param ACT_IDLE_AIM_RIFLE_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_AIM_RIFLE_STIMULATED",
        "typing": "336"
      },
      {
        "comments": [
          "@param ACT_WALK_AIM_RIFLE_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AIM_RIFLE_STIMULATED",
        "typing": "337"
      },
      {
        "comments": [
          "@param ACT_RUN_AIM_RIFLE_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AIM_RIFLE_STIMULATED",
        "typing": "338"
      },
      {
        "comments": [
          "@param ACT_IDLE_SHOTGUN_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_SHOTGUN_RELAXED",
        "typing": "339"
      },
      {
        "comments": [
          "@param ACT_IDLE_SHOTGUN_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_SHOTGUN_STIMULATED",
        "typing": "340"
      },
      {
        "comments": [
          "@param ACT_IDLE_SHOTGUN_AGITATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_SHOTGUN_AGITATED",
        "typing": "341"
      },
      {
        "comments": [
          "@param ACT_WALK_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_ANGRY",
        "typing": "342"
      },
      {
        "comments": [
          "@param ACT_POLICE_HARASS1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_POLICE_HARASS1",
        "typing": "343"
      },
      {
        "comments": [
          "@param ACT_POLICE_HARASS2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_POLICE_HARASS2",
        "typing": "344"
      },
      {
        "comments": [
          "@param ACT_IDLE_MANNEDGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_MANNEDGUN",
        "typing": "345"
      },
      {
        "comments": [
          "@param ACT_IDLE_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_MELEE",
        "typing": "346"
      },
      {
        "comments": [
          "@param ACT_IDLE_ANGRY_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_ANGRY_MELEE",
        "typing": "347"
      },
      {
        "comments": [
          "@param ACT_IDLE_RPG_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_RPG_RELAXED",
        "typing": "348"
      },
      {
        "comments": [
          "@param ACT_IDLE_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_RPG",
        "typing": "349"
      },
      {
        "comments": [
          "@param ACT_IDLE_ANGRY_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_ANGRY_RPG",
        "typing": "350"
      },
      {
        "comments": [
          "@param ACT_COVER_LOW_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_COVER_LOW_RPG",
        "typing": "351"
      },
      {
        "comments": [
          "@param ACT_WALK_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_RPG",
        "typing": "352"
      },
      {
        "comments": [
          "@param ACT_RUN_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_RPG",
        "typing": "353"
      },
      {
        "comments": [
          "@param ACT_WALK_CROUCH_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_CROUCH_RPG",
        "typing": "354"
      },
      {
        "comments": [
          "@param ACT_RUN_CROUCH_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_CROUCH_RPG",
        "typing": "355"
      },
      {
        "comments": [
          "@param ACT_WALK_RPG_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_RPG_RELAXED",
        "typing": "356"
      },
      {
        "comments": [
          "@param ACT_RUN_RPG_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_RPG_RELAXED",
        "typing": "357"
      },
      {
        "comments": [
          "@param ACT_WALK_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_RIFLE",
        "typing": "358"
      },
      {
        "comments": [
          "@param ACT_WALK_AIM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AIM_RIFLE",
        "typing": "359"
      },
      {
        "comments": [
          "@param ACT_WALK_CROUCH_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_CROUCH_RIFLE",
        "typing": "360"
      },
      {
        "comments": [
          "@param ACT_WALK_CROUCH_AIM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_CROUCH_AIM_RIFLE",
        "typing": "361"
      },
      {
        "comments": [
          "@param ACT_RUN_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_RIFLE",
        "typing": "362"
      },
      {
        "comments": [
          "@param ACT_RUN_AIM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AIM_RIFLE",
        "typing": "363"
      },
      {
        "comments": [
          "@param ACT_RUN_CROUCH_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_CROUCH_RIFLE",
        "typing": "364"
      },
      {
        "comments": [
          "@param ACT_RUN_CROUCH_AIM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_CROUCH_AIM_RIFLE",
        "typing": "365"
      },
      {
        "comments": [
          "@param ACT_RUN_STEALTH_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_STEALTH_PISTOL",
        "typing": "366"
      },
      {
        "comments": [
          "@param ACT_WALK_AIM_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AIM_SHOTGUN",
        "typing": "367"
      },
      {
        "comments": [
          "@param ACT_RUN_AIM_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AIM_SHOTGUN",
        "typing": "368"
      },
      {
        "comments": [
          "@param ACT_WALK_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_PISTOL",
        "typing": "369"
      },
      {
        "comments": [
          "@param ACT_RUN_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_PISTOL",
        "typing": "370"
      },
      {
        "comments": [
          "@param ACT_WALK_AIM_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AIM_PISTOL",
        "typing": "371"
      },
      {
        "comments": [
          "@param ACT_RUN_AIM_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AIM_PISTOL",
        "typing": "372"
      },
      {
        "comments": [
          "@param ACT_WALK_STEALTH_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_STEALTH_PISTOL",
        "typing": "373"
      },
      {
        "comments": [
          "@param ACT_WALK_AIM_STEALTH_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_AIM_STEALTH_PISTOL",
        "typing": "374"
      },
      {
        "comments": [
          "@param ACT_RUN_AIM_STEALTH_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUN_AIM_STEALTH_PISTOL",
        "typing": "375"
      },
      {
        "comments": [
          "@param ACT_RELOAD_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RELOAD_PISTOL",
        "typing": "376"
      },
      {
        "comments": [
          "@param ACT_RELOAD_PISTOL_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RELOAD_PISTOL_LOW",
        "typing": "377"
      },
      {
        "comments": [
          "@param ACT_RELOAD_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RELOAD_SMG1",
        "typing": "378"
      },
      {
        "comments": [
          "@param ACT_RELOAD_SMG1_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RELOAD_SMG1_LOW",
        "typing": "379"
      },
      {
        "comments": [
          "@param ACT_RELOAD_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RELOAD_SHOTGUN",
        "typing": "380"
      },
      {
        "comments": [
          "@param ACT_RELOAD_SHOTGUN_LOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RELOAD_SHOTGUN_LOW",
        "typing": "381"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RELOAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RELOAD",
        "typing": "382"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RELOAD_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RELOAD_PISTOL",
        "typing": "383"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RELOAD_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RELOAD_SMG1",
        "typing": "384"
      },
      {
        "comments": [
          "@param ACT_GESTURE_RELOAD_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_RELOAD_SHOTGUN",
        "typing": "385"
      },
      {
        "comments": [
          "@param ACT_BUSY_LEAN_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_LEAN_LEFT",
        "typing": "386"
      },
      {
        "comments": [
          "@param ACT_BUSY_LEAN_LEFT_ENTRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_LEAN_LEFT_ENTRY",
        "typing": "387"
      },
      {
        "comments": [
          "@param ACT_BUSY_LEAN_LEFT_EXIT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_LEAN_LEFT_EXIT",
        "typing": "388"
      },
      {
        "comments": [
          "@param ACT_BUSY_LEAN_BACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_LEAN_BACK",
        "typing": "389"
      },
      {
        "comments": [
          "@param ACT_BUSY_LEAN_BACK_ENTRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_LEAN_BACK_ENTRY",
        "typing": "390"
      },
      {
        "comments": [
          "@param ACT_BUSY_LEAN_BACK_EXIT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_LEAN_BACK_EXIT",
        "typing": "391"
      },
      {
        "comments": [
          "@param ACT_BUSY_SIT_GROUND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_SIT_GROUND",
        "typing": "392"
      },
      {
        "comments": [
          "@param ACT_BUSY_SIT_GROUND_ENTRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_SIT_GROUND_ENTRY",
        "typing": "393"
      },
      {
        "comments": [
          "@param ACT_BUSY_SIT_GROUND_EXIT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_SIT_GROUND_EXIT",
        "typing": "394"
      },
      {
        "comments": [
          "@param ACT_BUSY_SIT_CHAIR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_SIT_CHAIR",
        "typing": "395"
      },
      {
        "comments": [
          "@param ACT_BUSY_SIT_CHAIR_ENTRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_SIT_CHAIR_ENTRY",
        "typing": "396"
      },
      {
        "comments": [
          "@param ACT_BUSY_SIT_CHAIR_EXIT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_SIT_CHAIR_EXIT",
        "typing": "397"
      },
      {
        "comments": [
          "@param ACT_BUSY_STAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_STAND",
        "typing": "398"
      },
      {
        "comments": [
          "@param ACT_BUSY_QUEUE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_BUSY_QUEUE",
        "typing": "399"
      },
      {
        "comments": [
          "@param ACT_DUCK_DODGE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DUCK_DODGE",
        "typing": "400"
      },
      {
        "comments": [
          "@param ACT_DIE_BARNACLE_SWALLOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIE_BARNACLE_SWALLOW",
        "typing": "401"
      },
      {
        "comments": [
          "@param ACT_GESTURE_BARNACLE_STRANGLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GESTURE_BARNACLE_STRANGLE",
        "typing": "402"
      },
      {
        "comments": [
          "@param ACT_PHYSCANNON_DETACH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PHYSCANNON_DETACH",
        "typing": "403"
      },
      {
        "comments": [
          "@param ACT_PHYSCANNON_ANIMATE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PHYSCANNON_ANIMATE",
        "typing": "404"
      },
      {
        "comments": [
          "@param ACT_PHYSCANNON_ANIMATE_PRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PHYSCANNON_ANIMATE_PRE",
        "typing": "405"
      },
      {
        "comments": [
          "@param ACT_PHYSCANNON_ANIMATE_POST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PHYSCANNON_ANIMATE_POST",
        "typing": "406"
      },
      {
        "comments": [
          "@param ACT_DIE_FRONTSIDE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIE_FRONTSIDE",
        "typing": "407"
      },
      {
        "comments": [
          "@param ACT_DIE_RIGHTSIDE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIE_RIGHTSIDE",
        "typing": "408"
      },
      {
        "comments": [
          "@param ACT_DIE_BACKSIDE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIE_BACKSIDE",
        "typing": "409"
      },
      {
        "comments": [
          "@param ACT_DIE_LEFTSIDE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DIE_LEFTSIDE",
        "typing": "410"
      },
      {
        "comments": [
          "@param ACT_OPEN_DOOR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OPEN_DOOR",
        "typing": "411"
      },
      {
        "comments": [
          "@param ACT_DI_ALYX_ZOMBIE_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DI_ALYX_ZOMBIE_MELEE",
        "typing": "412"
      },
      {
        "comments": [
          "@param ACT_DI_ALYX_ZOMBIE_TORSO_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DI_ALYX_ZOMBIE_TORSO_MELEE",
        "typing": "413"
      },
      {
        "comments": [
          "@param ACT_DI_ALYX_HEADCRAB_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DI_ALYX_HEADCRAB_MELEE",
        "typing": "414"
      },
      {
        "comments": [
          "@param ACT_DI_ALYX_ANTLION - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DI_ALYX_ANTLION",
        "typing": "415"
      },
      {
        "comments": [
          "@param ACT_DI_ALYX_ZOMBIE_SHOTGUN64 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DI_ALYX_ZOMBIE_SHOTGUN64",
        "typing": "416"
      },
      {
        "comments": [
          "@param ACT_DI_ALYX_ZOMBIE_SHOTGUN26 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DI_ALYX_ZOMBIE_SHOTGUN26",
        "typing": "417"
      },
      {
        "comments": [
          "@param ACT_READINESS_RELAXED_TO_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_READINESS_RELAXED_TO_STIMULATED",
        "typing": "418"
      },
      {
        "comments": [
          "@param ACT_READINESS_RELAXED_TO_STIMULATED_WALK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_READINESS_RELAXED_TO_STIMULATED_WALK",
        "typing": "419"
      },
      {
        "comments": [
          "@param ACT_READINESS_AGITATED_TO_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_READINESS_AGITATED_TO_STIMULATED",
        "typing": "420"
      },
      {
        "comments": [
          "@param ACT_READINESS_STIMULATED_TO_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_READINESS_STIMULATED_TO_RELAXED",
        "typing": "421"
      },
      {
        "comments": [
          "@param ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED",
        "typing": "422"
      },
      {
        "comments": [
          "@param ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED_WALK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED_WALK",
        "typing": "423"
      },
      {
        "comments": [
          "@param ACT_READINESS_PISTOL_AGITATED_TO_STIMULATED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_READINESS_PISTOL_AGITATED_TO_STIMULATED",
        "typing": "424"
      },
      {
        "comments": [
          "@param ACT_READINESS_PISTOL_STIMULATED_TO_RELAXED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_READINESS_PISTOL_STIMULATED_TO_RELAXED",
        "typing": "425"
      },
      {
        "comments": [
          "@param ACT_IDLE_CARRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLE_CARRY",
        "typing": "426"
      },
      {
        "comments": [
          "@param ACT_WALK_CARRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_WALK_CARRY",
        "typing": "427"
      },
      {
        "comments": [
          "@param ACT_STARTDYING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_STARTDYING",
        "typing": "428"
      },
      {
        "comments": [
          "@param ACT_DYINGLOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DYINGLOOP",
        "typing": "429"
      },
      {
        "comments": [
          "@param ACT_DYINGTODEAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DYINGTODEAD",
        "typing": "430"
      },
      {
        "comments": [
          "@param ACT_RIDE_MANNED_GUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RIDE_MANNED_GUN",
        "typing": "431"
      },
      {
        "comments": [
          "@param ACT_VM_SPRINT_ENTER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_SPRINT_ENTER",
        "typing": "432"
      },
      {
        "comments": [
          "@param ACT_VM_SPRINT_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_SPRINT_IDLE",
        "typing": "433"
      },
      {
        "comments": [
          "@param ACT_VM_SPRINT_LEAVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_SPRINT_LEAVE",
        "typing": "434"
      },
      {
        "comments": [
          "@param ACT_FIRE_START - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FIRE_START",
        "typing": "435"
      },
      {
        "comments": [
          "@param ACT_FIRE_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FIRE_LOOP",
        "typing": "436"
      },
      {
        "comments": [
          "@param ACT_FIRE_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_FIRE_END",
        "typing": "437"
      },
      {
        "comments": [
          "@param ACT_CROUCHING_GRENADEIDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHING_GRENADEIDLE",
        "typing": "438"
      },
      {
        "comments": [
          "@param ACT_CROUCHING_GRENADEREADY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHING_GRENADEREADY",
        "typing": "439"
      },
      {
        "comments": [
          "@param ACT_CROUCHING_PRIMARYATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHING_PRIMARYATTACK",
        "typing": "440"
      },
      {
        "comments": [
          "@param ACT_OVERLAY_GRENADEIDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OVERLAY_GRENADEIDLE",
        "typing": "441"
      },
      {
        "comments": [
          "@param ACT_OVERLAY_GRENADEREADY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OVERLAY_GRENADEREADY",
        "typing": "442"
      },
      {
        "comments": [
          "@param ACT_OVERLAY_PRIMARYATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OVERLAY_PRIMARYATTACK",
        "typing": "443"
      },
      {
        "comments": [
          "@param ACT_OVERLAY_SHIELD_UP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OVERLAY_SHIELD_UP",
        "typing": "444"
      },
      {
        "comments": [
          "@param ACT_OVERLAY_SHIELD_DOWN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OVERLAY_SHIELD_DOWN",
        "typing": "445"
      },
      {
        "comments": [
          "@param ACT_OVERLAY_SHIELD_UP_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OVERLAY_SHIELD_UP_IDLE",
        "typing": "446"
      },
      {
        "comments": [
          "@param ACT_OVERLAY_SHIELD_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OVERLAY_SHIELD_ATTACK",
        "typing": "447"
      },
      {
        "comments": [
          "@param ACT_OVERLAY_SHIELD_KNOCKBACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OVERLAY_SHIELD_KNOCKBACK",
        "typing": "448"
      },
      {
        "comments": [
          "@param ACT_SHIELD_UP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHIELD_UP",
        "typing": "449"
      },
      {
        "comments": [
          "@param ACT_SHIELD_DOWN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHIELD_DOWN",
        "typing": "450"
      },
      {
        "comments": [
          "@param ACT_SHIELD_UP_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHIELD_UP_IDLE",
        "typing": "451"
      },
      {
        "comments": [
          "@param ACT_SHIELD_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHIELD_ATTACK",
        "typing": "452"
      },
      {
        "comments": [
          "@param ACT_SHIELD_KNOCKBACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHIELD_KNOCKBACK",
        "typing": "453"
      },
      {
        "comments": [
          "@param ACT_CROUCHING_SHIELD_UP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHING_SHIELD_UP",
        "typing": "454"
      },
      {
        "comments": [
          "@param ACT_CROUCHING_SHIELD_DOWN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHING_SHIELD_DOWN",
        "typing": "455"
      },
      {
        "comments": [
          "@param ACT_CROUCHING_SHIELD_UP_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHING_SHIELD_UP_IDLE",
        "typing": "456"
      },
      {
        "comments": [
          "@param ACT_CROUCHING_SHIELD_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHING_SHIELD_ATTACK",
        "typing": "457"
      },
      {
        "comments": [
          "@param ACT_CROUCHING_SHIELD_KNOCKBACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROUCHING_SHIELD_KNOCKBACK",
        "typing": "458"
      },
      {
        "comments": [
          "@param ACT_TURNRIGHT45 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_TURNRIGHT45",
        "typing": "459"
      },
      {
        "comments": [
          "@param ACT_TURNLEFT45 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_TURNLEFT45",
        "typing": "460"
      },
      {
        "comments": [
          "@param ACT_TURN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_TURN",
        "typing": "461"
      },
      {
        "comments": [
          "@param ACT_OBJ_ASSEMBLING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OBJ_ASSEMBLING",
        "typing": "462"
      },
      {
        "comments": [
          "@param ACT_OBJ_DISMANTLING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OBJ_DISMANTLING",
        "typing": "463"
      },
      {
        "comments": [
          "@param ACT_OBJ_STARTUP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OBJ_STARTUP",
        "typing": "464"
      },
      {
        "comments": [
          "@param ACT_OBJ_RUNNING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OBJ_RUNNING",
        "typing": "465"
      },
      {
        "comments": [
          "@param ACT_OBJ_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OBJ_IDLE",
        "typing": "466"
      },
      {
        "comments": [
          "@param ACT_OBJ_PLACING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OBJ_PLACING",
        "typing": "467"
      },
      {
        "comments": [
          "@param ACT_OBJ_DETERIORATING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OBJ_DETERIORATING",
        "typing": "468"
      },
      {
        "comments": [
          "@param ACT_OBJ_UPGRADING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_OBJ_UPGRADING",
        "typing": "469"
      },
      {
        "comments": [
          "@param ACT_DEPLOY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DEPLOY",
        "typing": "470"
      },
      {
        "comments": [
          "@param ACT_DEPLOY_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DEPLOY_IDLE",
        "typing": "471"
      },
      {
        "comments": [
          "@param ACT_UNDEPLOY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_UNDEPLOY",
        "typing": "472"
      },
      {
        "comments": [
          "@param ACT_GRENADE_ROLL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GRENADE_ROLL",
        "typing": "473"
      },
      {
        "comments": [
          "@param ACT_GRENADE_TOSS - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GRENADE_TOSS",
        "typing": "474"
      },
      {
        "comments": [
          "@param ACT_HANDGRENADE_THROW1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HANDGRENADE_THROW1",
        "typing": "475"
      },
      {
        "comments": [
          "@param ACT_HANDGRENADE_THROW2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HANDGRENADE_THROW2",
        "typing": "476"
      },
      {
        "comments": [
          "@param ACT_HANDGRENADE_THROW3 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HANDGRENADE_THROW3",
        "typing": "477"
      },
      {
        "comments": [
          "@param ACT_SHOTGUN_IDLE_DEEP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHOTGUN_IDLE_DEEP",
        "typing": "478"
      },
      {
        "comments": [
          "@param ACT_SHOTGUN_IDLE4 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SHOTGUN_IDLE4",
        "typing": "479"
      },
      {
        "comments": [
          "@param ACT_GLOCK_SHOOTEMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GLOCK_SHOOTEMPTY",
        "typing": "480"
      },
      {
        "comments": [
          "@param ACT_GLOCK_SHOOT_RELOAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GLOCK_SHOOT_RELOAD",
        "typing": "481"
      },
      {
        "comments": [
          "@param ACT_RPG_DRAW_UNLOADED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RPG_DRAW_UNLOADED",
        "typing": "482"
      },
      {
        "comments": [
          "@param ACT_RPG_HOLSTER_UNLOADED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RPG_HOLSTER_UNLOADED",
        "typing": "483"
      },
      {
        "comments": [
          "@param ACT_RPG_IDLE_UNLOADED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RPG_IDLE_UNLOADED",
        "typing": "484"
      },
      {
        "comments": [
          "@param ACT_RPG_FIDGET_UNLOADED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RPG_FIDGET_UNLOADED",
        "typing": "485"
      },
      {
        "comments": [
          "@param ACT_CROSSBOW_DRAW_UNLOADED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROSSBOW_DRAW_UNLOADED",
        "typing": "486"
      },
      {
        "comments": [
          "@param ACT_CROSSBOW_IDLE_UNLOADED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROSSBOW_IDLE_UNLOADED",
        "typing": "487"
      },
      {
        "comments": [
          "@param ACT_CROSSBOW_FIDGET_UNLOADED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROSSBOW_FIDGET_UNLOADED",
        "typing": "488"
      },
      {
        "comments": [
          "@param ACT_GAUSS_SPINUP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GAUSS_SPINUP",
        "typing": "489"
      },
      {
        "comments": [
          "@param ACT_GAUSS_SPINCYCLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GAUSS_SPINCYCLE",
        "typing": "490"
      },
      {
        "comments": [
          "@param ACT_TRIPMINE_GROUND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_TRIPMINE_GROUND",
        "typing": "491"
      },
      {
        "comments": [
          "@param ACT_TRIPMINE_WORLD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_TRIPMINE_WORLD",
        "typing": "492"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_SILENCED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_SILENCED",
        "typing": "493"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD_SILENCED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD_SILENCED",
        "typing": "494"
      },
      {
        "comments": [
          "@param ACT_VM_DRYFIRE_SILENCED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DRYFIRE_SILENCED",
        "typing": "495"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_SILENCED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_SILENCED",
        "typing": "496"
      },
      {
        "comments": [
          "@param ACT_VM_DRAW_SILENCED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DRAW_SILENCED",
        "typing": "497"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_EMPTY_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_EMPTY_LEFT",
        "typing": "498"
      },
      {
        "comments": [
          "@param ACT_VM_DRYFIRE_LEFT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DRYFIRE_LEFT",
        "typing": "499"
      },
      {
        "comments": [
          "@param ACT_PLAYER_IDLE_FIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PLAYER_IDLE_FIRE",
        "typing": "500"
      },
      {
        "comments": [
          "@param ACT_PLAYER_CROUCH_FIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PLAYER_CROUCH_FIRE",
        "typing": "501"
      },
      {
        "comments": [
          "@param ACT_PLAYER_CROUCH_WALK_FIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PLAYER_CROUCH_WALK_FIRE",
        "typing": "502"
      },
      {
        "comments": [
          "@param ACT_PLAYER_WALK_FIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PLAYER_WALK_FIRE",
        "typing": "503"
      },
      {
        "comments": [
          "@param ACT_PLAYER_RUN_FIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PLAYER_RUN_FIRE",
        "typing": "504"
      },
      {
        "comments": [
          "@param ACT_IDLETORUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_IDLETORUN",
        "typing": "505"
      },
      {
        "comments": [
          "@param ACT_RUNTOIDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_RUNTOIDLE",
        "typing": "506"
      },
      {
        "comments": [
          "@param ACT_SPRINT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_SPRINT",
        "typing": "507"
      },
      {
        "comments": [
          "@param ACT_GET_DOWN_STAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GET_DOWN_STAND",
        "typing": "508"
      },
      {
        "comments": [
          "@param ACT_GET_UP_STAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GET_UP_STAND",
        "typing": "509"
      },
      {
        "comments": [
          "@param ACT_GET_DOWN_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GET_DOWN_CROUCH",
        "typing": "510"
      },
      {
        "comments": [
          "@param ACT_GET_UP_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GET_UP_CROUCH",
        "typing": "511"
      },
      {
        "comments": [
          "@param ACT_PRONE_FORWARD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PRONE_FORWARD",
        "typing": "512"
      },
      {
        "comments": [
          "@param ACT_PRONE_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_PRONE_IDLE",
        "typing": "513"
      },
      {
        "comments": [
          "@param ACT_DEEPIDLE1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DEEPIDLE1",
        "typing": "514"
      },
      {
        "comments": [
          "@param ACT_DEEPIDLE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DEEPIDLE2",
        "typing": "515"
      },
      {
        "comments": [
          "@param ACT_DEEPIDLE3 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DEEPIDLE3",
        "typing": "516"
      },
      {
        "comments": [
          "@param ACT_DEEPIDLE4 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DEEPIDLE4",
        "typing": "517"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD_DEPLOYED",
        "typing": "518"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD_IDLE",
        "typing": "519"
      },
      {
        "comments": [
          "@param ACT_VM_DRAW_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DRAW_DEPLOYED",
        "typing": "520"
      },
      {
        "comments": [
          "@param ACT_VM_DRAW_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DRAW_EMPTY",
        "typing": "521"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_EMPTY",
        "typing": "522"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD_EMPTY",
        "typing": "523"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_EMPTY",
        "typing": "524"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_DEPLOYED_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_DEPLOYED_EMPTY",
        "typing": "525"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_8 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_8",
        "typing": "526"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_7 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_7",
        "typing": "527"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_6 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_6",
        "typing": "528"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_5 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_5",
        "typing": "529"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_4 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_4",
        "typing": "530"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_3 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_3",
        "typing": "531"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_2",
        "typing": "532"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_1",
        "typing": "533"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_DEPLOYED",
        "typing": "534"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_DEPLOYED_8 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_DEPLOYED_8",
        "typing": "535"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_DEPLOYED_7 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_DEPLOYED_7",
        "typing": "536"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_DEPLOYED_6 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_DEPLOYED_6",
        "typing": "537"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_DEPLOYED_5 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_DEPLOYED_5",
        "typing": "538"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_DEPLOYED_4 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_DEPLOYED_4",
        "typing": "539"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_DEPLOYED_3 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_DEPLOYED_3",
        "typing": "540"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_DEPLOYED_2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_DEPLOYED_2",
        "typing": "541"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_DEPLOYED_1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_DEPLOYED_1",
        "typing": "542"
      },
      {
        "comments": [
          "@param ACT_VM_UNDEPLOY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNDEPLOY",
        "typing": "543"
      },
      {
        "comments": [
          "@param ACT_VM_UNDEPLOY_8 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNDEPLOY_8",
        "typing": "544"
      },
      {
        "comments": [
          "@param ACT_VM_UNDEPLOY_7 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNDEPLOY_7",
        "typing": "545"
      },
      {
        "comments": [
          "@param ACT_VM_UNDEPLOY_6 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNDEPLOY_6",
        "typing": "546"
      },
      {
        "comments": [
          "@param ACT_VM_UNDEPLOY_5 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNDEPLOY_5",
        "typing": "547"
      },
      {
        "comments": [
          "@param ACT_VM_UNDEPLOY_4 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNDEPLOY_4",
        "typing": "548"
      },
      {
        "comments": [
          "@param ACT_VM_UNDEPLOY_3 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNDEPLOY_3",
        "typing": "549"
      },
      {
        "comments": [
          "@param ACT_VM_UNDEPLOY_2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNDEPLOY_2",
        "typing": "550"
      },
      {
        "comments": [
          "@param ACT_VM_UNDEPLOY_1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNDEPLOY_1",
        "typing": "551"
      },
      {
        "comments": [
          "@param ACT_VM_UNDEPLOY_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNDEPLOY_EMPTY",
        "typing": "552"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOY",
        "typing": "553"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOY_8 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOY_8",
        "typing": "554"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOY_7 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOY_7",
        "typing": "555"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOY_6 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOY_6",
        "typing": "556"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOY_5 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOY_5",
        "typing": "557"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOY_4 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOY_4",
        "typing": "558"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOY_3 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOY_3",
        "typing": "559"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOY_2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOY_2",
        "typing": "560"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOY_1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOY_1",
        "typing": "561"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOY_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOY_EMPTY",
        "typing": "562"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_8 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_8",
        "typing": "563"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_7 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_7",
        "typing": "564"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_6 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_6",
        "typing": "565"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_5 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_5",
        "typing": "566"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_4 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_4",
        "typing": "567"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_3 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_3",
        "typing": "568"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_2",
        "typing": "569"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_1",
        "typing": "570"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_DEPLOYED",
        "typing": "571"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_DEPLOYED_8 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_DEPLOYED_8",
        "typing": "572"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_DEPLOYED_7 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_DEPLOYED_7",
        "typing": "573"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_DEPLOYED_6 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_DEPLOYED_6",
        "typing": "574"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_DEPLOYED_5 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_DEPLOYED_5",
        "typing": "575"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_DEPLOYED_4 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_DEPLOYED_4",
        "typing": "576"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_DEPLOYED_3 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_DEPLOYED_3",
        "typing": "577"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_DEPLOYED_2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_DEPLOYED_2",
        "typing": "578"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_DEPLOYED_1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_DEPLOYED_1",
        "typing": "579"
      },
      {
        "comments": [
          "@param ACT_VM_PRIMARYATTACK_DEPLOYED_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PRIMARYATTACK_DEPLOYED_EMPTY",
        "typing": "580"
      },
      {
        "comments": [
          "@param ACT_DOD_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_DEPLOYED",
        "typing": "581"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_DEPLOYED",
        "typing": "582"
      },
      {
        "comments": [
          "@param ACT_DOD_IDLE_ZOOMED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_IDLE_ZOOMED",
        "typing": "583"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_ZOOMED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_ZOOMED",
        "typing": "584"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_ZOOMED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_ZOOMED",
        "typing": "585"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_ZOOMED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_ZOOMED",
        "typing": "586"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_ZOOMED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_ZOOMED",
        "typing": "587"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_FORWARD_ZOOMED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_FORWARD_ZOOMED",
        "typing": "588"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_DEPLOYED",
        "typing": "589"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED",
        "typing": "590"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_DEPLOYED",
        "typing": "591"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_DEPLOYED",
        "typing": "592"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE",
        "typing": "593"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_PRONE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_PRONE",
        "typing": "594"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH",
        "typing": "595"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE",
        "typing": "596"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE",
        "typing": "597"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM",
        "typing": "598"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE",
        "typing": "599"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM",
        "typing": "600"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE",
        "typing": "601"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM",
        "typing": "602"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE",
        "typing": "603"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM",
        "typing": "604"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE",
        "typing": "605"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM",
        "typing": "606"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_PISTOL",
        "typing": "607"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_PISTOL",
        "typing": "608"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_PISTOL",
        "typing": "609"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_PISTOL",
        "typing": "610"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_PISTOL",
        "typing": "611"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_PISTOL",
        "typing": "612"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_PISTOL",
        "typing": "613"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_PISTOL",
        "typing": "614"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_PISTOL",
        "typing": "615"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_PISTOL",
        "typing": "616"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_PISTOL",
        "typing": "617"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_PISTOL",
        "typing": "618"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_PISTOL",
        "typing": "619"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_C96",
        "typing": "620"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_C96",
        "typing": "621"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_C96",
        "typing": "622"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_C96",
        "typing": "623"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_C96",
        "typing": "624"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_C96",
        "typing": "625"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_C96",
        "typing": "626"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_C96",
        "typing": "627"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_C96",
        "typing": "628"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_C96",
        "typing": "629"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_C96",
        "typing": "630"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_C96",
        "typing": "631"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_C96",
        "typing": "632"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_RIFLE",
        "typing": "633"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_RIFLE",
        "typing": "634"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_RIFLE",
        "typing": "635"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_RIFLE",
        "typing": "636"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_RIFLE",
        "typing": "637"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_RIFLE",
        "typing": "638"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_RIFLE",
        "typing": "639"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_RIFLE",
        "typing": "640"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_RIFLE",
        "typing": "641"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_RIFLE",
        "typing": "642"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_RIFLE",
        "typing": "643"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_RIFLE",
        "typing": "644"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_RIFLE",
        "typing": "645"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_BOLT",
        "typing": "646"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_BOLT",
        "typing": "647"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_BOLT",
        "typing": "648"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_BOLT",
        "typing": "649"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_BOLT",
        "typing": "650"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_BOLT",
        "typing": "651"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_BOLT",
        "typing": "652"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_BOLT",
        "typing": "653"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_BOLT",
        "typing": "654"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_BOLT",
        "typing": "655"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_BOLT",
        "typing": "656"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_BOLT",
        "typing": "657"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_BOLT",
        "typing": "658"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_TOMMY",
        "typing": "659"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_TOMMY",
        "typing": "660"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_TOMMY",
        "typing": "661"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_TOMMY",
        "typing": "662"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_TOMMY",
        "typing": "663"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_TOMMY",
        "typing": "664"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_TOMMY",
        "typing": "665"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_TOMMY",
        "typing": "666"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_TOMMY",
        "typing": "667"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_TOMMY",
        "typing": "668"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_TOMMY",
        "typing": "669"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_TOMMY",
        "typing": "670"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_TOMMY",
        "typing": "671"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_MP40",
        "typing": "672"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_MP40",
        "typing": "673"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_MP40",
        "typing": "674"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_MP40",
        "typing": "675"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_MP40",
        "typing": "676"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_MP40",
        "typing": "677"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_MP40",
        "typing": "678"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_MP40",
        "typing": "679"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_MP40",
        "typing": "680"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_MP40",
        "typing": "681"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_MP40",
        "typing": "682"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_MP40",
        "typing": "683"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_MP40",
        "typing": "684"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_MP44",
        "typing": "685"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_MP44",
        "typing": "686"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_MP44",
        "typing": "687"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_MP44",
        "typing": "688"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_MP44",
        "typing": "689"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_MP44",
        "typing": "690"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_MP44",
        "typing": "691"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_MP44",
        "typing": "692"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_MP44",
        "typing": "693"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_MP44",
        "typing": "694"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_MP44",
        "typing": "695"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_MP44",
        "typing": "696"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_MP44",
        "typing": "697"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_GREASE",
        "typing": "698"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_GREASE",
        "typing": "699"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_GREASE",
        "typing": "700"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_GREASE",
        "typing": "701"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_GREASE",
        "typing": "702"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_GREASE",
        "typing": "703"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_GREASE",
        "typing": "704"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_GREASE",
        "typing": "705"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_GREASE",
        "typing": "706"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_GREASE",
        "typing": "707"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_GREASE",
        "typing": "708"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_GREASE",
        "typing": "709"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_GREASE",
        "typing": "710"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_MG",
        "typing": "711"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_MG",
        "typing": "712"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_MG",
        "typing": "713"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_MG",
        "typing": "714"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_MG",
        "typing": "715"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_MG",
        "typing": "716"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_MG",
        "typing": "717"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_MG",
        "typing": "718"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_MG",
        "typing": "719"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_MG",
        "typing": "720"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_MG",
        "typing": "721"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_MG",
        "typing": "722"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_MG",
        "typing": "723"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_30CAL",
        "typing": "724"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_30CAL",
        "typing": "725"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_30CAL",
        "typing": "726"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_30CAL",
        "typing": "727"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_30CAL",
        "typing": "728"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_30CAL",
        "typing": "729"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_30CAL",
        "typing": "730"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_30CAL",
        "typing": "731"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_30CAL",
        "typing": "732"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_30CAL",
        "typing": "733"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_30CAL",
        "typing": "734"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_30CAL",
        "typing": "735"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_30CAL",
        "typing": "736"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_GREN_FRAG",
        "typing": "737"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_GREN_FRAG",
        "typing": "738"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_GREN_FRAG",
        "typing": "739"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_GREN_FRAG",
        "typing": "740"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_GREN_FRAG",
        "typing": "741"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_GREN_FRAG",
        "typing": "742"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_AIM_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_AIM_GREN_FRAG",
        "typing": "743"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_AIM_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_AIM_GREN_FRAG",
        "typing": "744"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_GREN_STICK",
        "typing": "745"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_GREN_STICK",
        "typing": "746"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_GREN_STICK",
        "typing": "747"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_GREN_STICK",
        "typing": "748"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_GREN_STICK",
        "typing": "749"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_GREN_STICK",
        "typing": "750"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_AIM_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_AIM_GREN_STICK",
        "typing": "751"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_AIM_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_AIM_GREN_STICK",
        "typing": "752"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_KNIFE",
        "typing": "753"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_KNIFE",
        "typing": "754"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_KNIFE",
        "typing": "755"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_KNIFE",
        "typing": "756"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_KNIFE",
        "typing": "757"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_KNIFE",
        "typing": "758"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_AIM_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_AIM_KNIFE",
        "typing": "759"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_AIM_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_AIM_KNIFE",
        "typing": "760"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_SPADE",
        "typing": "761"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_SPADE",
        "typing": "762"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_SPADE",
        "typing": "763"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_SPADE",
        "typing": "764"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_SPADE",
        "typing": "765"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_SPADE",
        "typing": "766"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_AIM_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_AIM_SPADE",
        "typing": "767"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_AIM_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_AIM_SPADE",
        "typing": "768"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_BAZOOKA",
        "typing": "769"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_BAZOOKA",
        "typing": "770"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_BAZOOKA",
        "typing": "771"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_BAZOOKA",
        "typing": "772"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_BAZOOKA",
        "typing": "773"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_BAZOOKA",
        "typing": "774"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_BAZOOKA",
        "typing": "775"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_BAZOOKA",
        "typing": "776"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_BAZOOKA",
        "typing": "777"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_BAZOOKA",
        "typing": "778"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_BAZOOKA",
        "typing": "779"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_BAZOOKA",
        "typing": "780"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_BAZOOKA",
        "typing": "781"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_PSCHRECK",
        "typing": "782"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_PSCHRECK",
        "typing": "783"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_PSCHRECK",
        "typing": "784"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_PSCHRECK",
        "typing": "785"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_PSCHRECK",
        "typing": "786"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_PSCHRECK",
        "typing": "787"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_PSCHRECK",
        "typing": "788"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_PSCHRECK",
        "typing": "789"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_PSCHRECK",
        "typing": "790"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_PSCHRECK",
        "typing": "791"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_PSCHRECK",
        "typing": "792"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_PSCHRECK",
        "typing": "793"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_PSCHRECK",
        "typing": "794"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_AIM_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_AIM_BAR",
        "typing": "795"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_AIM_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_AIM_BAR",
        "typing": "796"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_AIM_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_AIM_BAR",
        "typing": "797"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_AIM_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_AIM_BAR",
        "typing": "798"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_AIM_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_AIM_BAR",
        "typing": "799"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_AIM_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_AIM_BAR",
        "typing": "800"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_BAR",
        "typing": "801"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_BAR",
        "typing": "802"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_BAR",
        "typing": "803"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_BAR",
        "typing": "804"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_BAR",
        "typing": "805"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_BAR",
        "typing": "806"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_BAR",
        "typing": "807"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_ZOOM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_ZOOM_RIFLE",
        "typing": "808"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_ZOOM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_ZOOM_RIFLE",
        "typing": "809"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_ZOOM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_ZOOM_RIFLE",
        "typing": "810"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_ZOOM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_ZOOM_RIFLE",
        "typing": "811"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_ZOOM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_ZOOM_RIFLE",
        "typing": "812"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_ZOOM_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_ZOOM_RIFLE",
        "typing": "813"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_ZOOM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_ZOOM_BOLT",
        "typing": "814"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_ZOOM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_ZOOM_BOLT",
        "typing": "815"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_ZOOM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_ZOOM_BOLT",
        "typing": "816"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_ZOOM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_ZOOM_BOLT",
        "typing": "817"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_ZOOM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_ZOOM_BOLT",
        "typing": "818"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_ZOOM_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_ZOOM_BOLT",
        "typing": "819"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_ZOOM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_ZOOM_BAZOOKA",
        "typing": "820"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_ZOOM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_ZOOM_BAZOOKA",
        "typing": "821"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_ZOOM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_ZOOM_BAZOOKA",
        "typing": "822"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_ZOOM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_ZOOM_BAZOOKA",
        "typing": "823"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_ZOOM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_ZOOM_BAZOOKA",
        "typing": "824"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_ZOOM_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_ZOOM_BAZOOKA",
        "typing": "825"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_ZOOM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_ZOOM_PSCHRECK",
        "typing": "826"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_ZOOM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_ZOOM_PSCHRECK",
        "typing": "827"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_ZOOM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_ZOOM_PSCHRECK",
        "typing": "828"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_ZOOM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_ZOOM_PSCHRECK",
        "typing": "829"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_ZOOM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_ZOOM_PSCHRECK",
        "typing": "830"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_ZOOM_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_ZOOM_PSCHRECK",
        "typing": "831"
      },
      {
        "comments": [
          "@param ACT_DOD_DEPLOY_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_DEPLOY_RIFLE",
        "typing": "832"
      },
      {
        "comments": [
          "@param ACT_DOD_DEPLOY_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_DEPLOY_TOMMY",
        "typing": "833"
      },
      {
        "comments": [
          "@param ACT_DOD_DEPLOY_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_DEPLOY_MG",
        "typing": "834"
      },
      {
        "comments": [
          "@param ACT_DOD_DEPLOY_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_DEPLOY_30CAL",
        "typing": "835"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_DEPLOY_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_DEPLOY_RIFLE",
        "typing": "836"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_DEPLOY_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_DEPLOY_TOMMY",
        "typing": "837"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_DEPLOY_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_DEPLOY_MG",
        "typing": "838"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_DEPLOY_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_DEPLOY_30CAL",
        "typing": "839"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_RIFLE",
        "typing": "840"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_RIFLE",
        "typing": "841"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_RIFLE",
        "typing": "842"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_PRONE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_PRONE_RIFLE",
        "typing": "843"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_RIFLE",
        "typing": "844"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_DEPLOYED_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_DEPLOYED_RIFLE",
        "typing": "845"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_BOLT",
        "typing": "846"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_BOLT",
        "typing": "847"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_BOLT",
        "typing": "848"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_PRONE_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_PRONE_BOLT",
        "typing": "849"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_TOMMY",
        "typing": "850"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_TOMMY",
        "typing": "851"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_TOMMY",
        "typing": "852"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_PRONE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_PRONE_TOMMY",
        "typing": "853"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_MP40",
        "typing": "854"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_MP40",
        "typing": "855"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_MP40",
        "typing": "856"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_PRONE_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_PRONE_MP40",
        "typing": "857"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_MP44",
        "typing": "858"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_MP44",
        "typing": "859"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_GREASE",
        "typing": "860"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_GREASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_GREASE",
        "typing": "861"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PISTOL",
        "typing": "862"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_PISTOL",
        "typing": "863"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_C96",
        "typing": "864"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_C96",
        "typing": "865"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_MG",
        "typing": "866"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_MG",
        "typing": "867"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_MG",
        "typing": "868"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_DEPLOYED_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_DEPLOYED_MG",
        "typing": "869"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_30CAL",
        "typing": "870"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_30CAL",
        "typing": "871"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_DEPLOYED_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_DEPLOYED_30CAL",
        "typing": "872"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_30CAL",
        "typing": "873"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_GREN_FRAG",
        "typing": "874"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_GREN_FRAG",
        "typing": "875"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_GREN_STICK",
        "typing": "876"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_GREN_STICK",
        "typing": "877"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_KNIFE",
        "typing": "878"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_KNIFE",
        "typing": "879"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_SPADE",
        "typing": "880"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_SPADE",
        "typing": "881"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_BAZOOKA",
        "typing": "882"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_BAZOOKA",
        "typing": "883"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PSCHRECK",
        "typing": "884"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_PSCHRECK",
        "typing": "885"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_BAR",
        "typing": "886"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_PRONE_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_PRONE_BAR",
        "typing": "887"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_GARAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_GARAND",
        "typing": "888"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_K43 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_K43",
        "typing": "889"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_BAR",
        "typing": "890"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_MP40",
        "typing": "891"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_MP44",
        "typing": "892"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_BOLT",
        "typing": "893"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_M1CARBINE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_M1CARBINE",
        "typing": "894"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_TOMMY",
        "typing": "895"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_GREASEGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_GREASEGUN",
        "typing": "896"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PISTOL",
        "typing": "897"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_FG42 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_FG42",
        "typing": "898"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_RIFLE",
        "typing": "899"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_RIFLEGRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_RIFLEGRENADE",
        "typing": "900"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_C96",
        "typing": "901"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_BAR",
        "typing": "902"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_RIFLE",
        "typing": "903"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_RIFLEGRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_RIFLEGRENADE",
        "typing": "904"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_BOLT",
        "typing": "905"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_MP44",
        "typing": "906"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_MP40",
        "typing": "907"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_TOMMY",
        "typing": "908"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_BAZOOKA",
        "typing": "909"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_PSCHRECK",
        "typing": "910"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_PISTOL",
        "typing": "911"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_M1CARBINE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_M1CARBINE",
        "typing": "912"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_CROUCH_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_CROUCH_C96",
        "typing": "913"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_BAZOOKA",
        "typing": "914"
      },
      {
        "comments": [
          "@param ACT_DOD_ZOOMLOAD_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_ZOOMLOAD_BAZOOKA",
        "typing": "915"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PSCHRECK",
        "typing": "916"
      },
      {
        "comments": [
          "@param ACT_DOD_ZOOMLOAD_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_ZOOMLOAD_PSCHRECK",
        "typing": "917"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_DEPLOYED_FG42 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_DEPLOYED_FG42",
        "typing": "918"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_DEPLOYED_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_DEPLOYED_30CAL",
        "typing": "919"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_DEPLOYED_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_DEPLOYED_MG",
        "typing": "920"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_DEPLOYED_MG34 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_DEPLOYED_MG34",
        "typing": "921"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_DEPLOYED_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_DEPLOYED_BAR",
        "typing": "922"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_PISTOL",
        "typing": "923"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_GARAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_GARAND",
        "typing": "924"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_M1CARBINE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_M1CARBINE",
        "typing": "925"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_BOLT",
        "typing": "926"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_K43 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_K43",
        "typing": "927"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_MP40",
        "typing": "928"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_MP44",
        "typing": "929"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_BAR",
        "typing": "930"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_GREASEGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_GREASEGUN",
        "typing": "931"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_TOMMY",
        "typing": "932"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_FG42 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_FG42",
        "typing": "933"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_RIFLE",
        "typing": "934"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_RIFLEGRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_RIFLEGRENADE",
        "typing": "935"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_C96 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_C96",
        "typing": "936"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_BAZOOKA",
        "typing": "937"
      },
      {
        "comments": [
          "@param ACT_DOD_ZOOMLOAD_PRONE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_ZOOMLOAD_PRONE_BAZOOKA",
        "typing": "938"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_PSCHRECK",
        "typing": "939"
      },
      {
        "comments": [
          "@param ACT_DOD_ZOOMLOAD_PRONE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_ZOOMLOAD_PRONE_PSCHRECK",
        "typing": "940"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_DEPLOYED_BAR - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_DEPLOYED_BAR",
        "typing": "941"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_DEPLOYED_FG42 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_DEPLOYED_FG42",
        "typing": "942"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_DEPLOYED_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_DEPLOYED_30CAL",
        "typing": "943"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_DEPLOYED_MG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_DEPLOYED_MG",
        "typing": "944"
      },
      {
        "comments": [
          "@param ACT_DOD_RELOAD_PRONE_DEPLOYED_MG34 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RELOAD_PRONE_DEPLOYED_MG34",
        "typing": "945"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_ZOOM_FORWARD_RIFLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_ZOOM_FORWARD_RIFLE",
        "typing": "946"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_ZOOM_FORWARD_BOLT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_ZOOM_FORWARD_BOLT",
        "typing": "947"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_ZOOM_FORWARD_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_ZOOM_FORWARD_BAZOOKA",
        "typing": "948"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONE_ZOOM_FORWARD_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONE_ZOOM_FORWARD_PSCHRECK",
        "typing": "949"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_CROUCH",
        "typing": "950"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_CROUCH_SPADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_CROUCH_SPADE",
        "typing": "951"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_CROUCH_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_CROUCH_KNIFE",
        "typing": "952"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_CROUCH_GREN_FRAG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_CROUCH_GREN_FRAG",
        "typing": "953"
      },
      {
        "comments": [
          "@param ACT_DOD_PRIMARYATTACK_CROUCH_GREN_STICK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRIMARYATTACK_CROUCH_GREN_STICK",
        "typing": "954"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_CROUCH",
        "typing": "955"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_CROUCH_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_CROUCH_TOMMY",
        "typing": "956"
      },
      {
        "comments": [
          "@param ACT_DOD_SECONDARYATTACK_CROUCH_MP40 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SECONDARYATTACK_CROUCH_MP40",
        "typing": "957"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE",
        "typing": "958"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH",
        "typing": "959"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE_30CAL",
        "typing": "960"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE_BAZOOKA",
        "typing": "961"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE_PSCHRECK",
        "typing": "962"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE_KNIFE",
        "typing": "963"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE_MG42 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE_MG42",
        "typing": "964"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE_PISTOL",
        "typing": "965"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE_STICKGRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE_STICKGRENADE",
        "typing": "966"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE_TOMMY",
        "typing": "967"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE_MP44",
        "typing": "968"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_IDLE_K98 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_IDLE_K98",
        "typing": "969"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH_30CAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH_30CAL",
        "typing": "970"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH_BAZOOKA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH_BAZOOKA",
        "typing": "971"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH_PSCHRECK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH_PSCHRECK",
        "typing": "972"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH_KNIFE",
        "typing": "973"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH_MG42 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH_MG42",
        "typing": "974"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH_PISTOL",
        "typing": "975"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH_STICKGRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH_STICKGRENADE",
        "typing": "976"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH_TOMMY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH_TOMMY",
        "typing": "977"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH_MP44 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH_MP44",
        "typing": "978"
      },
      {
        "comments": [
          "@param ACT_DOD_HS_CROUCH_K98 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_HS_CROUCH_K98",
        "typing": "979"
      },
      {
        "comments": [
          "@param ACT_DOD_STAND_IDLE_TNT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_STAND_IDLE_TNT",
        "typing": "980"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCH_IDLE_TNT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCH_IDLE_TNT",
        "typing": "981"
      },
      {
        "comments": [
          "@param ACT_DOD_CROUCHWALK_IDLE_TNT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_CROUCHWALK_IDLE_TNT",
        "typing": "982"
      },
      {
        "comments": [
          "@param ACT_DOD_WALK_IDLE_TNT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_WALK_IDLE_TNT",
        "typing": "983"
      },
      {
        "comments": [
          "@param ACT_DOD_RUN_IDLE_TNT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_RUN_IDLE_TNT",
        "typing": "984"
      },
      {
        "comments": [
          "@param ACT_DOD_SPRINT_IDLE_TNT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_SPRINT_IDLE_TNT",
        "typing": "985"
      },
      {
        "comments": [
          "@param ACT_DOD_PRONEWALK_IDLE_TNT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PRONEWALK_IDLE_TNT",
        "typing": "986"
      },
      {
        "comments": [
          "@param ACT_DOD_PLANT_TNT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_PLANT_TNT",
        "typing": "987"
      },
      {
        "comments": [
          "@param ACT_DOD_DEFUSE_TNT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DOD_DEFUSE_TNT",
        "typing": "988"
      },
      {
        "comments": [
          "@param ACT_VM_FIZZLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_FIZZLE",
        "typing": "989"
      },
      {
        "comments": [
          "@param ACT_MP_STAND_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_STAND_IDLE",
        "typing": "990"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCH_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCH_IDLE",
        "typing": "991"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCH_DEPLOYED_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCH_DEPLOYED_IDLE",
        "typing": "992"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCH_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCH_DEPLOYED",
        "typing": "993"
      },
      {
        "comments": [
          "@param ACT_MP_DEPLOYED_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_DEPLOYED_IDLE",
        "typing": "995"
      },
      {
        "comments": [
          "@param ACT_MP_RUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RUN",
        "typing": "996"
      },
      {
        "comments": [
          "@param ACT_MP_WALK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_WALK",
        "typing": "997"
      },
      {
        "comments": [
          "@param ACT_MP_AIRWALK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_AIRWALK",
        "typing": "998"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCHWALK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCHWALK",
        "typing": "999"
      },
      {
        "comments": [
          "@param ACT_MP_SPRINT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SPRINT",
        "typing": "1000"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP",
        "typing": "1001"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_START - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_START",
        "typing": "1002"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_FLOAT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_FLOAT",
        "typing": "1003"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_LAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_LAND",
        "typing": "1004"
      },
      {
        "comments": [
          "@param ACT_MP_DOUBLEJUMP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_DOUBLEJUMP",
        "typing": "1005"
      },
      {
        "comments": [
          "@param ACT_MP_SWIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SWIM",
        "typing": "1006"
      },
      {
        "comments": [
          "@param ACT_MP_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_DEPLOYED",
        "typing": "1007"
      },
      {
        "comments": [
          "@param ACT_MP_SWIM_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SWIM_DEPLOYED",
        "typing": "1008"
      },
      {
        "comments": [
          "@param ACT_MP_VCD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_VCD",
        "typing": "1009"
      },
      {
        "comments": [
          "@param ACT_MP_SWIM_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SWIM_IDLE",
        "typing": "1010"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_PRIMARYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_PRIMARYFIRE",
        "typing": "1011"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_PRIMARYFIRE_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_PRIMARYFIRE_DEPLOYED",
        "typing": "1012"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_SECONDARYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_SECONDARYFIRE",
        "typing": "1013"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_GRENADE",
        "typing": "1014"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_PRIMARYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_PRIMARYFIRE",
        "typing": "1015"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_PRIMARYFIRE_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_PRIMARYFIRE_DEPLOYED",
        "typing": "1016"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_SECONDARYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_SECONDARYFIRE",
        "typing": "1017"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_GRENADE",
        "typing": "1018"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_PRIMARYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_PRIMARYFIRE",
        "typing": "1019"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_SECONDARYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_SECONDARYFIRE",
        "typing": "1020"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_GRENADE",
        "typing": "1021"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_PRIMARYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_PRIMARYFIRE",
        "typing": "1022"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_SECONDARYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_SECONDARYFIRE",
        "typing": "1023"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_GRENADE",
        "typing": "1024"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_STAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_STAND",
        "typing": "1025"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_STAND_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_STAND_LOOP",
        "typing": "1026"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_STAND_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_STAND_END",
        "typing": "1027"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_CROUCH",
        "typing": "1028"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_CROUCH_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_CROUCH_LOOP",
        "typing": "1029"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_CROUCH_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_CROUCH_END",
        "typing": "1030"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_SWIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_SWIM",
        "typing": "1031"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_SWIM_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_SWIM_LOOP",
        "typing": "1032"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_SWIM_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_SWIM_END",
        "typing": "1033"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_AIRWALK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_AIRWALK",
        "typing": "1034"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_AIRWALK_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_AIRWALK_LOOP",
        "typing": "1035"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_AIRWALK_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_AIRWALK_END",
        "typing": "1036"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_PREFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_PREFIRE",
        "typing": "1037"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_POSTFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_POSTFIRE",
        "typing": "1038"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_STARTFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_STARTFIRE",
        "typing": "1039"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_PREFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_PREFIRE",
        "typing": "1040"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_POSTFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_POSTFIRE",
        "typing": "1041"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_PREFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_PREFIRE",
        "typing": "1042"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_POSTFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_POSTFIRE",
        "typing": "1043"
      },
      {
        "comments": [
          "@param ACT_MP_STAND_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_STAND_PRIMARY",
        "typing": "1044"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCH_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCH_PRIMARY",
        "typing": "1045"
      },
      {
        "comments": [
          "@param ACT_MP_RUN_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RUN_PRIMARY",
        "typing": "1046"
      },
      {
        "comments": [
          "@param ACT_MP_WALK_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_WALK_PRIMARY",
        "typing": "1047"
      },
      {
        "comments": [
          "@param ACT_MP_AIRWALK_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_AIRWALK_PRIMARY",
        "typing": "1048"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCHWALK_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCHWALK_PRIMARY",
        "typing": "1049"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_PRIMARY",
        "typing": "1050"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_START_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_START_PRIMARY",
        "typing": "1051"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_FLOAT_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_FLOAT_PRIMARY",
        "typing": "1052"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_LAND_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_LAND_PRIMARY",
        "typing": "1053"
      },
      {
        "comments": [
          "@param ACT_MP_SWIM_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SWIM_PRIMARY",
        "typing": "1054"
      },
      {
        "comments": [
          "@param ACT_MP_DEPLOYED_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_DEPLOYED_PRIMARY",
        "typing": "1055"
      },
      {
        "comments": [
          "@param ACT_MP_SWIM_DEPLOYED_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SWIM_DEPLOYED_PRIMARY",
        "typing": "1056"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_PRIMARY",
        "typing": "1059"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED",
        "typing": "1060"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_PRIMARY",
        "typing": "1061"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED",
        "typing": "1062"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_PRIMARY",
        "typing": "1063"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_PRIMARY",
        "typing": "1064"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_STAND_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_STAND_PRIMARY",
        "typing": "1065"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_STAND_PRIMARY_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_STAND_PRIMARY_LOOP",
        "typing": "1066"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_STAND_PRIMARY_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_STAND_PRIMARY_END",
        "typing": "1067"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_CROUCH_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_CROUCH_PRIMARY",
        "typing": "1068"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP",
        "typing": "1069"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_CROUCH_PRIMARY_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_CROUCH_PRIMARY_END",
        "typing": "1070"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_SWIM_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_SWIM_PRIMARY",
        "typing": "1071"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_SWIM_PRIMARY_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_SWIM_PRIMARY_LOOP",
        "typing": "1072"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_SWIM_PRIMARY_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_SWIM_PRIMARY_END",
        "typing": "1073"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_AIRWALK_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_AIRWALK_PRIMARY",
        "typing": "1074"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP",
        "typing": "1075"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_AIRWALK_PRIMARY_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_AIRWALK_PRIMARY_END",
        "typing": "1076"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_GRENADE_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_GRENADE_PRIMARY",
        "typing": "1105"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_GRENADE_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_GRENADE_PRIMARY",
        "typing": "1106"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_GRENADE_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_GRENADE_PRIMARY",
        "typing": "1107"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_GRENADE_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_GRENADE_PRIMARY",
        "typing": "1108"
      },
      {
        "comments": [
          "@param ACT_MP_STAND_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_STAND_SECONDARY",
        "typing": "1109"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCH_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCH_SECONDARY",
        "typing": "1110"
      },
      {
        "comments": [
          "@param ACT_MP_RUN_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RUN_SECONDARY",
        "typing": "1111"
      },
      {
        "comments": [
          "@param ACT_MP_WALK_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_WALK_SECONDARY",
        "typing": "1112"
      },
      {
        "comments": [
          "@param ACT_MP_AIRWALK_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_AIRWALK_SECONDARY",
        "typing": "1113"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCHWALK_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCHWALK_SECONDARY",
        "typing": "1114"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_SECONDARY",
        "typing": "1115"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_START_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_START_SECONDARY",
        "typing": "1116"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_FLOAT_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_FLOAT_SECONDARY",
        "typing": "1117"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_LAND_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_LAND_SECONDARY",
        "typing": "1118"
      },
      {
        "comments": [
          "@param ACT_MP_SWIM_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SWIM_SECONDARY",
        "typing": "1119"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_SECONDARY",
        "typing": "1120"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_SECONDARY",
        "typing": "1121"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_SECONDARY",
        "typing": "1122"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_SECONDARY",
        "typing": "1123"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_STAND_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_STAND_SECONDARY",
        "typing": "1124"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_STAND_SECONDARY_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_STAND_SECONDARY_LOOP",
        "typing": "1125"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_STAND_SECONDARY_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_STAND_SECONDARY_END",
        "typing": "1126"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_CROUCH_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_CROUCH_SECONDARY",
        "typing": "1127"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_CROUCH_SECONDARY_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_CROUCH_SECONDARY_LOOP",
        "typing": "1128"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_CROUCH_SECONDARY_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_CROUCH_SECONDARY_END",
        "typing": "1129"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_SWIM_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_SWIM_SECONDARY",
        "typing": "1130"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_SWIM_SECONDARY_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_SWIM_SECONDARY_LOOP",
        "typing": "1131"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_SWIM_SECONDARY_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_SWIM_SECONDARY_END",
        "typing": "1132"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_AIRWALK_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_AIRWALK_SECONDARY",
        "typing": "1133"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_AIRWALK_SECONDARY_LOOP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_AIRWALK_SECONDARY_LOOP",
        "typing": "1134"
      },
      {
        "comments": [
          "@param ACT_MP_RELOAD_AIRWALK_SECONDARY_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RELOAD_AIRWALK_SECONDARY_END",
        "typing": "1135"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_GRENADE_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_GRENADE_SECONDARY",
        "typing": "1140"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_GRENADE_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_GRENADE_SECONDARY",
        "typing": "1141"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_GRENADE_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_GRENADE_SECONDARY",
        "typing": "1142"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_GRENADE_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_GRENADE_SECONDARY",
        "typing": "1143"
      },
      {
        "comments": [
          "@param ACT_MP_STAND_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_STAND_MELEE",
        "typing": "1171"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCH_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCH_MELEE",
        "typing": "1172"
      },
      {
        "comments": [
          "@param ACT_MP_RUN_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RUN_MELEE",
        "typing": "1173"
      },
      {
        "comments": [
          "@param ACT_MP_WALK_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_WALK_MELEE",
        "typing": "1174"
      },
      {
        "comments": [
          "@param ACT_MP_AIRWALK_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_AIRWALK_MELEE",
        "typing": "1175"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCHWALK_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCHWALK_MELEE",
        "typing": "1176"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_MELEE",
        "typing": "1177"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_START_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_START_MELEE",
        "typing": "1178"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_FLOAT_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_FLOAT_MELEE",
        "typing": "1179"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_LAND_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_LAND_MELEE",
        "typing": "1180"
      },
      {
        "comments": [
          "@param ACT_MP_SWIM_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SWIM_MELEE",
        "typing": "1181"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_MELEE",
        "typing": "1182"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_MELEE_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_MELEE_SECONDARY",
        "typing": "1183"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_MELEE",
        "typing": "1184"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_MELEE_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_MELEE_SECONDARY",
        "typing": "1185"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_MELEE",
        "typing": "1186"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_MELEE",
        "typing": "1187"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_GRENADE_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_GRENADE_MELEE",
        "typing": "1188"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_GRENADE_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_GRENADE_MELEE",
        "typing": "1189"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_GRENADE_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_GRENADE_MELEE",
        "typing": "1190"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_GRENADE_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_GRENADE_MELEE",
        "typing": "1191"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH",
        "typing": "1258"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH_PRIMARY",
        "typing": "1259"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH_SECONDARY",
        "typing": "1260"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH_MELEE",
        "typing": "1261"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH_HEAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH_HEAD",
        "typing": "1264"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH_CHEST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH_CHEST",
        "typing": "1265"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH_STOMACH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH_STOMACH",
        "typing": "1266"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH_LEFTARM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH_LEFTARM",
        "typing": "1267"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH_RIGHTARM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH_RIGHTARM",
        "typing": "1268"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH_LEFTLEG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH_LEFTLEG",
        "typing": "1269"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_FLINCH_RIGHTLEG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_FLINCH_RIGHTLEG",
        "typing": "1270"
      },
      {
        "comments": [
          "@param ACT_MP_GRENADE1_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GRENADE1_DRAW",
        "typing": "1271"
      },
      {
        "comments": [
          "@param ACT_MP_GRENADE1_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GRENADE1_IDLE",
        "typing": "1272"
      },
      {
        "comments": [
          "@param ACT_MP_GRENADE1_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GRENADE1_ATTACK",
        "typing": "1273"
      },
      {
        "comments": [
          "@param ACT_MP_GRENADE2_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GRENADE2_DRAW",
        "typing": "1274"
      },
      {
        "comments": [
          "@param ACT_MP_GRENADE2_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GRENADE2_IDLE",
        "typing": "1275"
      },
      {
        "comments": [
          "@param ACT_MP_GRENADE2_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GRENADE2_ATTACK",
        "typing": "1276"
      },
      {
        "comments": [
          "@param ACT_MP_PRIMARY_GRENADE1_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_PRIMARY_GRENADE1_DRAW",
        "typing": "1277"
      },
      {
        "comments": [
          "@param ACT_MP_PRIMARY_GRENADE1_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_PRIMARY_GRENADE1_IDLE",
        "typing": "1278"
      },
      {
        "comments": [
          "@param ACT_MP_PRIMARY_GRENADE1_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_PRIMARY_GRENADE1_ATTACK",
        "typing": "1279"
      },
      {
        "comments": [
          "@param ACT_MP_PRIMARY_GRENADE2_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_PRIMARY_GRENADE2_DRAW",
        "typing": "1280"
      },
      {
        "comments": [
          "@param ACT_MP_PRIMARY_GRENADE2_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_PRIMARY_GRENADE2_IDLE",
        "typing": "1281"
      },
      {
        "comments": [
          "@param ACT_MP_PRIMARY_GRENADE2_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_PRIMARY_GRENADE2_ATTACK",
        "typing": "1282"
      },
      {
        "comments": [
          "@param ACT_MP_SECONDARY_GRENADE1_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SECONDARY_GRENADE1_DRAW",
        "typing": "1283"
      },
      {
        "comments": [
          "@param ACT_MP_SECONDARY_GRENADE1_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SECONDARY_GRENADE1_IDLE",
        "typing": "1284"
      },
      {
        "comments": [
          "@param ACT_MP_SECONDARY_GRENADE1_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SECONDARY_GRENADE1_ATTACK",
        "typing": "1285"
      },
      {
        "comments": [
          "@param ACT_MP_SECONDARY_GRENADE2_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SECONDARY_GRENADE2_DRAW",
        "typing": "1286"
      },
      {
        "comments": [
          "@param ACT_MP_SECONDARY_GRENADE2_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SECONDARY_GRENADE2_IDLE",
        "typing": "1287"
      },
      {
        "comments": [
          "@param ACT_MP_SECONDARY_GRENADE2_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SECONDARY_GRENADE2_ATTACK",
        "typing": "1288"
      },
      {
        "comments": [
          "@param ACT_MP_MELEE_GRENADE1_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_MELEE_GRENADE1_DRAW",
        "typing": "1289"
      },
      {
        "comments": [
          "@param ACT_MP_MELEE_GRENADE1_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_MELEE_GRENADE1_IDLE",
        "typing": "1290"
      },
      {
        "comments": [
          "@param ACT_MP_MELEE_GRENADE1_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_MELEE_GRENADE1_ATTACK",
        "typing": "1291"
      },
      {
        "comments": [
          "@param ACT_MP_MELEE_GRENADE2_DRAW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_MELEE_GRENADE2_DRAW",
        "typing": "1292"
      },
      {
        "comments": [
          "@param ACT_MP_MELEE_GRENADE2_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_MELEE_GRENADE2_IDLE",
        "typing": "1293"
      },
      {
        "comments": [
          "@param ACT_MP_MELEE_GRENADE2_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_MELEE_GRENADE2_ATTACK",
        "typing": "1294"
      },
      {
        "comments": [
          "@param ACT_MP_STAND_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_STAND_BUILDING",
        "typing": "1307"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCH_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCH_BUILDING",
        "typing": "1308"
      },
      {
        "comments": [
          "@param ACT_MP_RUN_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RUN_BUILDING",
        "typing": "1309"
      },
      {
        "comments": [
          "@param ACT_MP_WALK_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_WALK_BUILDING",
        "typing": "1310"
      },
      {
        "comments": [
          "@param ACT_MP_AIRWALK_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_AIRWALK_BUILDING",
        "typing": "1311"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCHWALK_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCHWALK_BUILDING",
        "typing": "1312"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_BUILDING",
        "typing": "1313"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_START_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_START_BUILDING",
        "typing": "1314"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_FLOAT_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_FLOAT_BUILDING",
        "typing": "1315"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_LAND_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_LAND_BUILDING",
        "typing": "1316"
      },
      {
        "comments": [
          "@param ACT_MP_SWIM_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SWIM_BUILDING",
        "typing": "1317"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_BUILDING",
        "typing": "1318"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_BUILDING",
        "typing": "1319"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_BUILDING",
        "typing": "1320"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_BUILDING",
        "typing": "1321"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_GRENADE_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_GRENADE_BUILDING",
        "typing": "1322"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_CROUCH_GRENADE_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_CROUCH_GRENADE_BUILDING",
        "typing": "1323"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_GRENADE_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_GRENADE_BUILDING",
        "typing": "1324"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_AIRWALK_GRENADE_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_AIRWALK_GRENADE_BUILDING",
        "typing": "1325"
      },
      {
        "comments": [
          "@param ACT_MP_STAND_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_STAND_PDA",
        "typing": "1345"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCH_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCH_PDA",
        "typing": "1346"
      },
      {
        "comments": [
          "@param ACT_MP_RUN_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_RUN_PDA",
        "typing": "1347"
      },
      {
        "comments": [
          "@param ACT_MP_WALK_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_WALK_PDA",
        "typing": "1348"
      },
      {
        "comments": [
          "@param ACT_MP_AIRWALK_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_AIRWALK_PDA",
        "typing": "1349"
      },
      {
        "comments": [
          "@param ACT_MP_CROUCHWALK_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_CROUCHWALK_PDA",
        "typing": "1350"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_PDA",
        "typing": "1351"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_START_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_START_PDA",
        "typing": "1352"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_FLOAT_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_FLOAT_PDA",
        "typing": "1353"
      },
      {
        "comments": [
          "@param ACT_MP_JUMP_LAND_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_JUMP_LAND_PDA",
        "typing": "1354"
      },
      {
        "comments": [
          "@param ACT_MP_SWIM_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_SWIM_PDA",
        "typing": "1355"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_STAND_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_STAND_PDA",
        "typing": "1356"
      },
      {
        "comments": [
          "@param ACT_MP_ATTACK_SWIM_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_ATTACK_SWIM_PDA",
        "typing": "1357"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_HANDMOUTH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_HANDMOUTH",
        "typing": "1377"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FINGERPOINT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FINGERPOINT",
        "typing": "1378"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FISTPUMP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FISTPUMP",
        "typing": "1379"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_THUMBSUP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_THUMBSUP",
        "typing": "1380"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODYES - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODYES",
        "typing": "1381"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODNO - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODNO",
        "typing": "1382"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_HANDMOUTH_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_HANDMOUTH_PRIMARY",
        "typing": "1383"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FINGERPOINT_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FINGERPOINT_PRIMARY",
        "typing": "1384"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FISTPUMP_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FISTPUMP_PRIMARY",
        "typing": "1385"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_THUMBSUP_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_THUMBSUP_PRIMARY",
        "typing": "1386"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODYES_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODYES_PRIMARY",
        "typing": "1387"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODNO_PRIMARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODNO_PRIMARY",
        "typing": "1388"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_HANDMOUTH_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_HANDMOUTH_SECONDARY",
        "typing": "1389"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FINGERPOINT_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FINGERPOINT_SECONDARY",
        "typing": "1390"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY",
        "typing": "1391"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_THUMBSUP_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_THUMBSUP_SECONDARY",
        "typing": "1392"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODYES_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODYES_SECONDARY",
        "typing": "1393"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODNO_SECONDARY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODNO_SECONDARY",
        "typing": "1394"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_HANDMOUTH_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_HANDMOUTH_MELEE",
        "typing": "1395"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FINGERPOINT_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FINGERPOINT_MELEE",
        "typing": "1396"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FISTPUMP_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FISTPUMP_MELEE",
        "typing": "1397"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_THUMBSUP_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_THUMBSUP_MELEE",
        "typing": "1398"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODYES_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODYES_MELEE",
        "typing": "1399"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODNO_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODNO_MELEE",
        "typing": "1400"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_HANDMOUTH_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_HANDMOUTH_BUILDING",
        "typing": "1413"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FINGERPOINT_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FINGERPOINT_BUILDING",
        "typing": "1414"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FISTPUMP_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FISTPUMP_BUILDING",
        "typing": "1415"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_THUMBSUP_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_THUMBSUP_BUILDING",
        "typing": "1416"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODYES_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODYES_BUILDING",
        "typing": "1417"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODNO_BUILDING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODNO_BUILDING",
        "typing": "1418"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_HANDMOUTH_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_HANDMOUTH_PDA",
        "typing": "1419"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FINGERPOINT_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FINGERPOINT_PDA",
        "typing": "1420"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_FISTPUMP_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_FISTPUMP_PDA",
        "typing": "1421"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_THUMBSUP_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_THUMBSUP_PDA",
        "typing": "1422"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODYES_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODYES_PDA",
        "typing": "1423"
      },
      {
        "comments": [
          "@param ACT_MP_GESTURE_VC_NODNO_PDA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_MP_GESTURE_VC_NODNO_PDA",
        "typing": "1424"
      },
      {
        "comments": [
          "@param ACT_VM_UNUSABLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNUSABLE",
        "typing": "1428"
      },
      {
        "comments": [
          "@param ACT_VM_UNUSABLE_TO_USABLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNUSABLE_TO_USABLE",
        "typing": "1429"
      },
      {
        "comments": [
          "@param ACT_VM_USABLE_TO_UNUSABLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_USABLE_TO_UNUSABLE",
        "typing": "1430"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_AGREE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_AGREE",
        "typing": "1610"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_BECON - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_BECON",
        "typing": "1611"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_BOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_BOW",
        "typing": "1612"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_DISAGREE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_DISAGREE",
        "typing": "1613"
      },
      {
        "comments": [
          "@param ACT_GMOD_TAUNT_SALUTE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_TAUNT_SALUTE",
        "typing": "1614"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_WAVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_WAVE",
        "typing": "1615"
      },
      {
        "comments": [
          "@param ACT_GMOD_TAUNT_PERSISTENCE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_TAUNT_PERSISTENCE",
        "typing": "1616"
      },
      {
        "comments": [
          "@param ACT_GMOD_TAUNT_MUSCLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_TAUNT_MUSCLE",
        "typing": "1617"
      },
      {
        "comments": [
          "@param ACT_GMOD_TAUNT_LAUGH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_TAUNT_LAUGH",
        "typing": "1618"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_POINT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_POINT",
        "typing": "1619"
      },
      {
        "comments": [
          "@param ACT_GMOD_TAUNT_CHEER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_TAUNT_CHEER",
        "typing": "1620"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_FAST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_FAST",
        "typing": "1621"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_CHARGING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_CHARGING",
        "typing": "1622"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_PANICKED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_PANICKED",
        "typing": "1623"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_PROTECTED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_PROTECTED",
        "typing": "1624"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_MELEE_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_MELEE_ANGRY",
        "typing": "1625"
      },
      {
        "comments": [
          "@param ACT_HL2MP_ZOMBIE_SLUMP_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_ZOMBIE_SLUMP_IDLE",
        "typing": "1626"
      },
      {
        "comments": [
          "@param ACT_HL2MP_ZOMBIE_SLUMP_RISE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_ZOMBIE_SLUMP_RISE",
        "typing": "1627"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_ZOMBIE_01 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_ZOMBIE_01",
        "typing": "1628"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_ZOMBIE_02 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_ZOMBIE_02",
        "typing": "1629"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_ZOMBIE_03 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_ZOMBIE_03",
        "typing": "1630"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_ZOMBIE_04 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_ZOMBIE_04",
        "typing": "1631"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_ZOMBIE_05 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_ZOMBIE_05",
        "typing": "1632"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_ZOMBIE_01 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_ZOMBIE_01",
        "typing": "1633"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_ZOMBIE_02 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_ZOMBIE_02",
        "typing": "1634"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_ZOMBIE_03 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_ZOMBIE_03",
        "typing": "1635"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_ZOMBIE_04 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_ZOMBIE_04",
        "typing": "1636"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_ZOMBIE_05 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_ZOMBIE_05",
        "typing": "1637"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_ZOMBIE_01 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_ZOMBIE_01",
        "typing": "1638"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_ZOMBIE_02 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_ZOMBIE_02",
        "typing": "1639"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_RANGE_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_RANGE_ZOMBIE",
        "typing": "1640"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_TAUNT_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_TAUNT_ZOMBIE",
        "typing": "1641"
      },
      {
        "comments": [
          "@param ACT_GMOD_TAUNT_DANCE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_TAUNT_DANCE",
        "typing": "1642"
      },
      {
        "comments": [
          "@param ACT_GMOD_TAUNT_ROBOT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_TAUNT_ROBOT",
        "typing": "1643"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_RANGE_ZOMBIE_SPECIAL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_RANGE_ZOMBIE_SPECIAL",
        "typing": "1644"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_RANGE_FRENZY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_RANGE_FRENZY",
        "typing": "1645"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_ZOMBIE_FAST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_ZOMBIE_FAST",
        "typing": "1646"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_ZOMBIE_06 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_ZOMBIE_06",
        "typing": "1647"
      },
      {
        "comments": [
          "@param ACT_ZOMBIE_LEAP_START - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_ZOMBIE_LEAP_START",
        "typing": "1648"
      },
      {
        "comments": [
          "@param ACT_ZOMBIE_LEAPING - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_ZOMBIE_LEAPING",
        "typing": "1649"
      },
      {
        "comments": [
          "@param ACT_ZOMBIE_CLIMB_UP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_ZOMBIE_CLIMB_UP",
        "typing": "1650"
      },
      {
        "comments": [
          "@param ACT_ZOMBIE_CLIMB_START - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_ZOMBIE_CLIMB_START",
        "typing": "1651"
      },
      {
        "comments": [
          "@param ACT_ZOMBIE_CLIMB_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_ZOMBIE_CLIMB_END",
        "typing": "1652"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_MAGIC - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_MAGIC",
        "typing": "1653"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_MAGIC - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_MAGIC",
        "typing": "1654"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_MAGIC - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_MAGIC",
        "typing": "1655"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_MAGIC - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_MAGIC",
        "typing": "1656"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_MAGIC - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_MAGIC",
        "typing": "1657"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_MAGIC - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_MAGIC",
        "typing": "1658"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_MAGIC - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_MAGIC",
        "typing": "1659"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_MAGIC - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_MAGIC",
        "typing": "1660"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_MAGIC - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_MAGIC",
        "typing": "1661"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_MAGIC - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_MAGIC",
        "typing": "1662"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_REVOLVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_REVOLVER",
        "typing": "1663"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_REVOLVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_REVOLVER",
        "typing": "1664"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_REVOLVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_REVOLVER",
        "typing": "1665"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_REVOLVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_REVOLVER",
        "typing": "1666"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_REVOLVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_REVOLVER",
        "typing": "1667"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_REVOLVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_REVOLVER",
        "typing": "1668"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_REVOLVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_REVOLVER",
        "typing": "1669"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_REVOLVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_REVOLVER",
        "typing": "1670"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_REVOLVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_REVOLVER",
        "typing": "1671"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_REVOLVER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_REVOLVER",
        "typing": "1672"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CAMERA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CAMERA",
        "typing": "1673"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CAMERA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CAMERA",
        "typing": "1674"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_CAMERA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_CAMERA",
        "typing": "1675"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_CAMERA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_CAMERA",
        "typing": "1676"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_CAMERA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_CAMERA",
        "typing": "1677"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_CAMERA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_CAMERA",
        "typing": "1678"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_CAMERA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_CAMERA",
        "typing": "1679"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_CAMERA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_CAMERA",
        "typing": "1680"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_CAMERA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_CAMERA",
        "typing": "1681"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_CAMERA - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_CAMERA",
        "typing": "1682"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_ANGRY",
        "typing": "1683"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_ANGRY",
        "typing": "1684"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_ANGRY",
        "typing": "1685"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_ANGRY",
        "typing": "1686"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_ANGRY",
        "typing": "1687"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_ANGRY",
        "typing": "1688"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_ANGRY",
        "typing": "1689"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_ANGRY",
        "typing": "1690"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_ANGRY",
        "typing": "1691"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_ANGRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_ANGRY",
        "typing": "1692"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_SCARED",
        "typing": "1693"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_SCARED",
        "typing": "1694"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_SCARED",
        "typing": "1695"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_SCARED",
        "typing": "1696"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_SCARED",
        "typing": "1697"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_SCARED",
        "typing": "1698"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_SCARED",
        "typing": "1699"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_SCARED",
        "typing": "1700"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_SCARED",
        "typing": "1701"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_SCARED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_SCARED",
        "typing": "1702"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_ZOMBIE",
        "typing": "1703"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_ZOMBIE",
        "typing": "1704"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_ZOMBIE",
        "typing": "1705"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_ZOMBIE",
        "typing": "1706"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_ZOMBIE",
        "typing": "1707"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_ZOMBIE",
        "typing": "1708"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_ZOMBIE",
        "typing": "1709"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_ZOMBIE",
        "typing": "1710"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_ZOMBIE",
        "typing": "1711"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_ZOMBIE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_ZOMBIE",
        "typing": "1712"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_SUITCASE",
        "typing": "1713"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_SUITCASE",
        "typing": "1714"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_SUITCASE",
        "typing": "1715"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_SUITCASE",
        "typing": "1716"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_SUITCASE",
        "typing": "1717"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_SUITCASE",
        "typing": "1718"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_SUITCASE",
        "typing": "1719"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_SUITCASE",
        "typing": "1720"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_SUITCASE",
        "typing": "1721"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_SUITCASE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_SUITCASE",
        "typing": "1722"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE",
        "typing": "1777"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK",
        "typing": "1778"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN",
        "typing": "1779"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH",
        "typing": "1780"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH",
        "typing": "1781"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK",
        "typing": "1782"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD",
        "typing": "1783"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP",
        "typing": "1784"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM",
        "typing": "1786"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_PISTOL",
        "typing": "1787"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_PISTOL",
        "typing": "1788"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_PISTOL",
        "typing": "1789"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_PISTOL",
        "typing": "1790"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_PISTOL",
        "typing": "1791"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL",
        "typing": "1792"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_PISTOL",
        "typing": "1793"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_PISTOL",
        "typing": "1794"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_PISTOL",
        "typing": "1795"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_PISTOL",
        "typing": "1796"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_SMG1",
        "typing": "1797"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_SMG1",
        "typing": "1798"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_SMG1",
        "typing": "1799"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_SMG1",
        "typing": "1800"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_SMG1",
        "typing": "1801"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG1",
        "typing": "1802"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_SMG1",
        "typing": "1803"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_SMG1",
        "typing": "1804"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_SMG1",
        "typing": "1805"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_SMG1",
        "typing": "1806"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_AR2",
        "typing": "1807"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_AR2",
        "typing": "1808"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_AR2",
        "typing": "1809"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_AR2",
        "typing": "1810"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_AR2",
        "typing": "1811"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2",
        "typing": "1812"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_AR2",
        "typing": "1813"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_AR2",
        "typing": "1814"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_AR2",
        "typing": "1815"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_AR2",
        "typing": "1816"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_SHOTGUN",
        "typing": "1817"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_SHOTGUN",
        "typing": "1818"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_SHOTGUN",
        "typing": "1819"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_SHOTGUN",
        "typing": "1820"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_SHOTGUN",
        "typing": "1821"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN",
        "typing": "1822"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_SHOTGUN",
        "typing": "1823"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_SHOTGUN",
        "typing": "1824"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_SHOTGUN",
        "typing": "1825"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_SHOTGUN",
        "typing": "1826"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_RPG",
        "typing": "1827"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_RPG",
        "typing": "1828"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_RPG",
        "typing": "1829"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_RPG",
        "typing": "1830"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_RPG",
        "typing": "1831"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_RPG",
        "typing": "1832"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_RPG",
        "typing": "1833"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_RPG",
        "typing": "1834"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_RPG",
        "typing": "1835"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_RPG",
        "typing": "1836"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_GRENADE",
        "typing": "1837"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_GRENADE",
        "typing": "1838"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_GRENADE",
        "typing": "1839"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_GRENADE",
        "typing": "1840"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_GRENADE",
        "typing": "1841"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE",
        "typing": "1842"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_GRENADE",
        "typing": "1843"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_GRENADE",
        "typing": "1844"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_GRENADE",
        "typing": "1845"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_GRENADE",
        "typing": "1846"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_DUEL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_DUEL",
        "typing": "1847"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_DUEL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_DUEL",
        "typing": "1848"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_DUEL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_DUEL",
        "typing": "1849"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_DUEL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_DUEL",
        "typing": "1850"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_DUEL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_DUEL",
        "typing": "1851"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_DUEL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_DUEL",
        "typing": "1852"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_DUEL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_DUEL",
        "typing": "1853"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_DUEL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_DUEL",
        "typing": "1854"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_DUEL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_DUEL",
        "typing": "1855"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_DUEL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_DUEL",
        "typing": "1856"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_PHYSGUN",
        "typing": "1857"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_PHYSGUN",
        "typing": "1858"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_PHYSGUN",
        "typing": "1859"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_PHYSGUN",
        "typing": "1860"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_PHYSGUN",
        "typing": "1861"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_PHYSGUN",
        "typing": "1862"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_PHYSGUN",
        "typing": "1863"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_PHYSGUN",
        "typing": "1864"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_PHYSGUN",
        "typing": "1865"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_PHYSGUN",
        "typing": "1866"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROSSBOW",
        "typing": "1867"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROSSBOW",
        "typing": "1868"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_CROSSBOW",
        "typing": "1869"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_CROSSBOW",
        "typing": "1870"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_CROSSBOW",
        "typing": "1871"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_CROSSBOW",
        "typing": "1872"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_CROSSBOW",
        "typing": "1873"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_CROSSBOW",
        "typing": "1874"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_CROSSBOW",
        "typing": "1875"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_CROSSBOW",
        "typing": "1876"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_MELEE",
        "typing": "1877"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_MELEE",
        "typing": "1878"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_MELEE",
        "typing": "1879"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_MELEE",
        "typing": "1880"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_MELEE",
        "typing": "1881"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE",
        "typing": "1882"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_MELEE",
        "typing": "1883"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_MELEE",
        "typing": "1884"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_MELEE",
        "typing": "1885"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_MELEE",
        "typing": "1886"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_SLAM",
        "typing": "1887"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_SLAM",
        "typing": "1888"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_SLAM",
        "typing": "1889"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_SLAM",
        "typing": "1890"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_SLAM",
        "typing": "1891"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_SLAM",
        "typing": "1892"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_SLAM",
        "typing": "1893"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_SLAM",
        "typing": "1894"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_SLAM",
        "typing": "1895"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_SLAM",
        "typing": "1896"
      },
      {
        "comments": [
          "@param ACT_VM_CRAWL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_CRAWL",
        "typing": "1897"
      },
      {
        "comments": [
          "@param ACT_VM_CRAWL_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_CRAWL_EMPTY",
        "typing": "1898"
      },
      {
        "comments": [
          "@param ACT_VM_HOLSTER_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HOLSTER_EMPTY",
        "typing": "1899"
      },
      {
        "comments": [
          "@param ACT_VM_DOWN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DOWN",
        "typing": "1900"
      },
      {
        "comments": [
          "@param ACT_VM_DOWN_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DOWN_EMPTY",
        "typing": "1901"
      },
      {
        "comments": [
          "@param ACT_VM_READY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_READY",
        "typing": "1902"
      },
      {
        "comments": [
          "@param ACT_VM_ISHOOT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_ISHOOT",
        "typing": "1903"
      },
      {
        "comments": [
          "@param ACT_VM_IIN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IIN",
        "typing": "1904"
      },
      {
        "comments": [
          "@param ACT_VM_IIN_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IIN_EMPTY",
        "typing": "1905"
      },
      {
        "comments": [
          "@param ACT_VM_IIDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IIDLE",
        "typing": "1906"
      },
      {
        "comments": [
          "@param ACT_VM_IIDLE_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IIDLE_EMPTY",
        "typing": "1907"
      },
      {
        "comments": [
          "@param ACT_VM_IOUT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IOUT",
        "typing": "1908"
      },
      {
        "comments": [
          "@param ACT_VM_IOUT_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IOUT_EMPTY",
        "typing": "1909"
      },
      {
        "comments": [
          "@param ACT_VM_PULLBACK_HIGH_BAKE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_PULLBACK_HIGH_BAKE",
        "typing": "1910"
      },
      {
        "comments": [
          "@param ACT_VM_HITKILL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HITKILL",
        "typing": "1911"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_IN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_IN",
        "typing": "1912"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_IDLE",
        "typing": "1913"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_FIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_FIRE",
        "typing": "1914"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_DRYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_DRYFIRE",
        "typing": "1915"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_RELOAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_RELOAD",
        "typing": "1916"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_RELOAD_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_RELOAD_EMPTY",
        "typing": "1917"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_OUT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_OUT",
        "typing": "1918"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_IRON_IN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_IRON_IN",
        "typing": "1919"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_IRON_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_IRON_IDLE",
        "typing": "1920"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_IRON_FIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_IRON_FIRE",
        "typing": "1921"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_IRON_DRYFIRE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_IRON_DRYFIRE",
        "typing": "1922"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_IRON_OUT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_IRON_OUT",
        "typing": "1923"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_LIFTED_IN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_LIFTED_IN",
        "typing": "1924"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_LIFTED_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_LIFTED_IDLE",
        "typing": "1925"
      },
      {
        "comments": [
          "@param ACT_VM_DEPLOYED_LIFTED_OUT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DEPLOYED_LIFTED_OUT",
        "typing": "1926"
      },
      {
        "comments": [
          "@param ACT_VM_RELOADEMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOADEMPTY",
        "typing": "1927"
      },
      {
        "comments": [
          "@param ACT_VM_IRECOIL1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IRECOIL1",
        "typing": "1928"
      },
      {
        "comments": [
          "@param ACT_VM_IRECOIL2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IRECOIL2",
        "typing": "1929"
      },
      {
        "comments": [
          "@param ACT_VM_FIREMODE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_FIREMODE",
        "typing": "1930"
      },
      {
        "comments": [
          "@param ACT_VM_ISHOOT_LAST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_ISHOOT_LAST",
        "typing": "1931"
      },
      {
        "comments": [
          "@param ACT_VM_IFIREMODE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IFIREMODE",
        "typing": "1932"
      },
      {
        "comments": [
          "@param ACT_VM_DFIREMODE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DFIREMODE",
        "typing": "1933"
      },
      {
        "comments": [
          "@param ACT_VM_DIFIREMODE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DIFIREMODE",
        "typing": "1934"
      },
      {
        "comments": [
          "@param ACT_VM_SHOOTLAST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_SHOOTLAST",
        "typing": "1935"
      },
      {
        "comments": [
          "@param ACT_VM_ISHOOTDRY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_ISHOOTDRY",
        "typing": "1936"
      },
      {
        "comments": [
          "@param ACT_VM_DRAW_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DRAW_M203",
        "typing": "1937"
      },
      {
        "comments": [
          "@param ACT_VM_DRAWFULL_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DRAWFULL_M203",
        "typing": "1938"
      },
      {
        "comments": [
          "@param ACT_VM_READY_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_READY_M203",
        "typing": "1939"
      },
      {
        "comments": [
          "@param ACT_VM_IDLE_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IDLE_M203",
        "typing": "1940"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD_M203",
        "typing": "1941"
      },
      {
        "comments": [
          "@param ACT_VM_HOLSTER_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HOLSTER_M203",
        "typing": "1942"
      },
      {
        "comments": [
          "@param ACT_VM_HOLSTERFULL_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_HOLSTERFULL_M203",
        "typing": "1943"
      },
      {
        "comments": [
          "@param ACT_VM_IIN_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IIN_M203",
        "typing": "1944"
      },
      {
        "comments": [
          "@param ACT_VM_IIDLE_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IIDLE_M203",
        "typing": "1945"
      },
      {
        "comments": [
          "@param ACT_VM_IOUT_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_IOUT_M203",
        "typing": "1946"
      },
      {
        "comments": [
          "@param ACT_VM_CRAWL_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_CRAWL_M203",
        "typing": "1947"
      },
      {
        "comments": [
          "@param ACT_VM_DOWN_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_DOWN_M203",
        "typing": "1948"
      },
      {
        "comments": [
          "@param ACT_VM_ISHOOT_M203 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_ISHOOT_M203",
        "typing": "1949"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD_INSERT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD_INSERT",
        "typing": "1950"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD_INSERT_PULL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD_INSERT_PULL",
        "typing": "1951"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD_END - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD_END",
        "typing": "1952"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD_END_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD_END_EMPTY",
        "typing": "1953"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD_INSERT_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD_INSERT_EMPTY",
        "typing": "1954"
      },
      {
        "comments": [
          "@param ACT_CROSSBOW_HOLSTER_UNLOADED - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_CROSSBOW_HOLSTER_UNLOADED",
        "typing": "1955"
      },
      {
        "comments": [
          "@param ACT_VM_FIRE_TO_EMPTY - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_FIRE_TO_EMPTY",
        "typing": "1956"
      },
      {
        "comments": [
          "@param ACT_VM_UNLOAD - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_UNLOAD",
        "typing": "1957"
      },
      {
        "comments": [
          "@param ACT_VM_RELOAD2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_VM_RELOAD2",
        "typing": "1958"
      },
      {
        "comments": [
          "@param ACT_GMOD_NOCLIP_LAYER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_NOCLIP_LAYER",
        "typing": "1959"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_FIST",
        "typing": "1960"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_FIST",
        "typing": "1961"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_FIST",
        "typing": "1962"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_FIST",
        "typing": "1963"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_FIST",
        "typing": "1964"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_FIST",
        "typing": "1965"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_FIST",
        "typing": "1966"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_FIST",
        "typing": "1967"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_FIST",
        "typing": "1968"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_FIST",
        "typing": "1969"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT",
        "typing": "1970"
      },
      {
        "comments": [
          "@param ACT_HL2MP_FIST_BLOCK - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_FIST_BLOCK",
        "typing": "1971"
      },
      {
        "comments": [
          "@param ACT_DRIVE_AIRBOAT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DRIVE_AIRBOAT",
        "typing": "1972"
      },
      {
        "comments": [
          "@param ACT_DRIVE_JEEP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_DRIVE_JEEP",
        "typing": "1973"
      },
      {
        "comments": [
          "@param ACT_GMOD_SIT_ROLLERCOASTER - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_SIT_ROLLERCOASTER",
        "typing": "1974"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_KNIFE",
        "typing": "1975"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_KNIFE",
        "typing": "1976"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_KNIFE",
        "typing": "1977"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_KNIFE",
        "typing": "1978"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_KNIFE",
        "typing": "1979"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE",
        "typing": "1980"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_KNIFE",
        "typing": "1981"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_KNIFE",
        "typing": "1982"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_KNIFE",
        "typing": "1983"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_KNIFE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_KNIFE",
        "typing": "1984"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_PASSIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_PASSIVE",
        "typing": "1985"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_PASSIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_PASSIVE",
        "typing": "1986"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_PASSIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_PASSIVE",
        "typing": "1987"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_PASSIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_PASSIVE",
        "typing": "1988"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_PASSIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_PASSIVE",
        "typing": "1989"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_PASSIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_PASSIVE",
        "typing": "1990"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_PASSIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_PASSIVE",
        "typing": "1991"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_PASSIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_PASSIVE",
        "typing": "1992"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_PASSIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_PASSIVE",
        "typing": "1993"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_PASSIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_PASSIVE",
        "typing": "1994"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_MELEE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_MELEE2",
        "typing": "1995"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_MELEE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_MELEE2",
        "typing": "1996"
      },
      {
        "comments": [
          "@param ACT_HL2MP_RUN_MELEE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_RUN_MELEE2",
        "typing": "1997"
      },
      {
        "comments": [
          "@param ACT_HL2MP_IDLE_CROUCH_MELEE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_IDLE_CROUCH_MELEE2",
        "typing": "1998"
      },
      {
        "comments": [
          "@param ACT_HL2MP_WALK_CROUCH_MELEE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_WALK_CROUCH_MELEE2",
        "typing": "1999"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2",
        "typing": "2000"
      },
      {
        "comments": [
          "@param ACT_HL2MP_GESTURE_RELOAD_MELEE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_GESTURE_RELOAD_MELEE2",
        "typing": "2001"
      },
      {
        "comments": [
          "@param ACT_HL2MP_JUMP_MELEE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_JUMP_MELEE2",
        "typing": "2002"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE_MELEE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE_MELEE2",
        "typing": "2003"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_MELEE2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_MELEE2",
        "typing": "2004"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_PISTOL - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_PISTOL",
        "typing": "2005"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_SHOTGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_SHOTGUN",
        "typing": "2006"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_SMG1 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_SMG1",
        "typing": "2007"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_AR2 - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_AR2",
        "typing": "2008"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_PHYSGUN - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_PHYSGUN",
        "typing": "2009"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_GRENADE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_GRENADE",
        "typing": "2010"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_RPG - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_RPG",
        "typing": "2011"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_CROSSBOW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_CROSSBOW",
        "typing": "2012"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_MELEE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_MELEE",
        "typing": "2013"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_SLAM - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_SLAM",
        "typing": "2014"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SIT_FIST - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SIT_FIST",
        "typing": "2015"
      },
      {
        "comments": [
          "@param ACT_GMOD_IN_CHAT - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_IN_CHAT",
        "typing": "2019"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_ITEM_GIVE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_ITEM_GIVE",
        "typing": "2020"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_ITEM_DROP - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_ITEM_DROP",
        "typing": "2021"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_ITEM_PLACE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_ITEM_PLACE",
        "typing": "2022"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_ITEM_THROW - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_ITEM_THROW",
        "typing": "2023"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_MELEE_SHOVE_2HAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_MELEE_SHOVE_2HAND",
        "typing": "2024"
      },
      {
        "comments": [
          "@param ACT_GMOD_GESTURE_MELEE_SHOVE_1HAND - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_GMOD_GESTURE_MELEE_SHOVE_1HAND",
        "typing": "2025"
      },
      {
        "comments": [
          "@param ACT_HL2MP_SWIM_IDLE - no description"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "ACT_HL2MP_SWIM_IDLE",
        "typing": "2026"
      },
      {
        "comments": [
          "@param LAST_SHARED_ACTIVITY - The largest activity number"
        ],
        "context": "ACT",
        "type": "enum",
        "name": "LAST_SHARED_ACTIVITY",
        "typing": "2027"
      }
    ]
  },
  {
    "comments": [
      "\nGives you the amount of currently existing entities.\nSimilar to #@ents.GetAll but with much better performance.\n",
      "@name ents.GetCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/GetCount",
      "@param {void} this - no description",
      "@param {boolean} IncludeKillMe - Include entities with the FL_KILLME flag. This will skip an internal loop, and the function will be more efficient as a byproduct.",
      "@returns {number} - Number of entities"
    ],
    "type": "func",
    "context": "ents",
    "name": "GetCount",
    "typings": [
      "(this: void, IncludeKillMe?: boolean): number"
    ]
  },
  {
    "comments": [
      "\nReturns an entity by its index. Same as @Entity function.\n",
      "@name ents.GetByIndex",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/GetByIndex",
      "@param {void} this - no description",
      "@param {number} entIdx - The index of the entity.",
      "@returns {Entity} - The entity if it exists."
    ],
    "type": "func",
    "context": "ents",
    "name": "GetByIndex",
    "typings": [
      "(this: void, entIdx: number): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all existing entities.\n",
      "@name ents.GetAll",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/GetAll",
      "@param {void} this - no description",
      "@returns {Entity[]} - Table of all existing @Entity types."
    ],
    "type": "func",
    "context": "ents",
    "name": "GetAll",
    "typings": [
      "(this: void): Entity[]"
    ]
  },
  {
    "comments": [
      "\nFires a use event.\n",
      "@name ents.FireTargets",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ents/FireTargets",
      "@param {void} this - no description",
      "@param {string} target - Name of the target entity.",
      "@param {Entity} activator - Activator of the event.",
      "@param {Entity} caller - Caller of the event.",
      "@param {USE} usetype - Use type. See the @USE enum.",
      "@param {number} value - This value is passed to @EntityHooks:Use, but isn't used by any default entities in the engine.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "ents",
    "name": "FireTargets",
    "typings": [
      "(this: void, target: string, activator: Entity, caller: Entity, usetype: USE, value: number): void"
    ]
  },
  {
    "comments": [
      "\nGets all entities within the specified sphere.\n",
      "@name ents.FindInSphere",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/FindInSphere",
      "@note Clientside entities will not be returned by this function.",
      "@param {void} this - no description",
      "@param {Vector} origin - Center of the sphere.",
      "@param {number} radius - Radius of the sphere.",
      "@returns {Entity[]} - A table of all found @Entity types. Has a limit of 1024 entities."
    ],
    "type": "func",
    "context": "ents",
    "name": "FindInSphere",
    "typings": [
      "(this: void, origin: Vector, radius: number): Entity[]"
    ]
  },
  {
    "comments": [
      "\n[2D visualization of the actual shape of the cone, click to enlarge](https://wiki.garrysmod.com/page/File:ents.FindInCone.png)\nFinds and returns all entities within the specified cone. Only entities whose @EntityFuncs:WorldSpaceCenter is within the cone are considered to be in it.\nThe \"cone\" is actually a conical \"slice\" of an axis-aligned box (see: @ents.FindInBox). The image to the right shows approximately how this function would look in 2D. Due to this, the entity may be farther than the specified range!\n",
      "@name ents.FindInCone",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/FindInCone",
      "@note Clientside entities will not be returned by this function.",
      "@warning If there are more than 512 entities in the axis-aligned box around the origin, then the result may be incomplete!",
      "@param {void} this - no description",
      "@param {Vector} origin - The tip of the cone.",
      "@param {Vector} normal - Direction of the cone.",
      "@param {number} range - The range of the cone/box around the origin.",
      "@param {number} angle_cos - The [cosine](https://wiki.garrysmod.com/page/math/cos) of the angle between the center of the cone to its edges, which is half the overall angle of the cone.\n1 makes a 0° cone, 0.707 makes approximately 90°, 0 makes 180°, and so on.",
      "@returns {Entity[]} - A table of all found @Entity types."
    ],
    "type": "func",
    "context": "ents",
    "name": "FindInCone",
    "typings": [
      "(this: void, origin: Vector, normal: Vector, range: number, angle_cos: number): Entity[]"
    ]
  },
  {
    "comments": [
      "\nFinds all entities that lie within a [PVS](https://developer.valvesoftware.com/wiki/PVS).\n",
      "@name ents.FindInPVS",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ents/FindInPVS",
      "@note The function won't take in to account @AddOriginToPVS function and the like.",
      "@param {void} this - no description",
      "@param {Entity | Vector} viewPoint - @Entity type or @Vector type to find entities within the PVS of. If a player is given, this function will use the player's view entity.",
      "@returns {table} - The found @Entity types."
    ],
    "type": "func",
    "context": "ents",
    "name": "FindInPVS",
    "typings": [
      "(this: void, viewPoint: Entity | Vector): table"
    ]
  },
  {
    "comments": [
      "\nReturns all entities within the specified box.\n",
      "@name ents.FindInBox",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/FindInBox",
      "@note Clientside entities will not be returned by this function.",
      "@warning There is a limit of 512 entities for the output!",
      "@param {void} this - no description",
      "@param {Vector} boxMins - The box minimum coordinates.",
      "@param {Vector} boxMaxs - The box maximum coordinates.",
      "@returns {table} - A table of all found entities."
    ],
    "type": "func",
    "context": "ents",
    "name": "FindInBox",
    "typings": [
      "(this: void, boxMins: Vector, boxMaxs: Vector): table"
    ]
  },
  {
    "comments": [
      "\nGets all entities with the given hammer targetname. This works internally by iterating over @ents.GetAll.\nDoesn't do anything on client.\n",
      "@name ents.FindByName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/FindByName",
      "@note A player's Name is his nickname, see @Player:GetName",
      "@param {void} this - no description",
      "@param {string} name - The targetname to look for",
      "@returns {table} - A table of all found entities"
    ],
    "type": "func",
    "context": "ents",
    "name": "FindByName",
    "typings": [
      "(this: void, name: string): table"
    ]
  },
  {
    "comments": [
      "\nGets all entities with the given model, supports wildcards. This works internally by iterating over @ents.GetAll.\n",
      "@name ents.FindByModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/FindByModel",
      "@bug #2872 This currently only supports trailing asterisks (*) for wildcards.",
      "@param {void} this - no description",
      "@param {string} model - The model of the entities to find.",
      "@returns {table} - A table of all found entities."
    ],
    "type": "func",
    "context": "ents",
    "name": "FindByModel",
    "typings": [
      "(this: void, model: string): table"
    ]
  },
  {
    "comments": [
      "\nGets all entities with the given class, supports wildcards. This works internally by iterating over @ents.GetAll. Even if internally ents.GetAll is used, It is faster to use ents.FindByClass than ents.GetAll with a single class comparison.\n",
      "@name ents.FindByClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/FindByClass",
      "@note Asterisks (*) are the only wildcard supported.",
      "@param {void} this - no description",
      "@param {string} cls - The class of the entities to find.",
      "@returns {table} - A table containing all found entities"
    ],
    "type": "func",
    "context": "ents",
    "name": "FindByClass",
    "typings": [
      "(this: void, cls: string): table"
    ]
  },
  {
    "comments": [
      "\nFinds all entities that are of given class and are children of given entity. This works internally by iterating over @ents.GetAll.\n",
      "@name ents.FindByClassAndParent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/FindByClassAndParent",
      "@param {void} this - no description",
      "@param {string} cls - The class of entities to search for",
      "@param {Entity} parent - Parent of entities that are being searched for",
      "@returns {table} - A table of found entities or nil if none are found"
    ],
    "type": "func",
    "context": "ents",
    "name": "FindByClassAndParent",
    "typings": [
      "(this: void, cls: string, parent: Entity): table"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all entities along the ray. The ray does not stop on collisions, meaning it will go through walls/entities.\n",
      "@name ents.FindAlongRay",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ents/FindAlongRay",
      "@param {void} this - no description",
      "@param {Vector} start - The start position of the ray",
      "@param {Vector} end - The end position of the ray",
      "@param {Vector} mins - The mins corner of the ray",
      "@param {Vector} maxs - The maxs corner of the ray",
      "@returns {table} - Table of the found entities."
    ],
    "type": "func",
    "context": "ents",
    "name": "FindAlongRay",
    "typings": [
      "(this: void, start: Vector, end: Vector, mins?: Vector, maxs?: Vector): table"
    ]
  },
  {
    "comments": [
      "\nCreates an entity. This function will fail and return NULL if the networked-edict limit is hit (around 8176), or the provided entity class doesn't exist.\n",
      "@name ents.Create",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ents/Create",
      "@warning Do not use before @GamemodeHooks:InitPostEntity has been called, otherwise the server will crash!\nIf you need to perform entity creation when the game starts, create a hook for @GamemodeHooks:InitPostEntity and do it there",
      "@param {void} this - no description",
      "@param {string} cls - The classname of the entity to create",
      "@returns {Entity} - The created entity, or NULL if failed"
    ],
    "type": "func",
    "context": "ents",
    "name": "Create",
    "typings": [
      "(this: void, cls: string): Entity"
    ]
  },
  {
    "comments": [
      "\nCreates a clientside only prop. See also @ClientsideModel function.\n",
      "@name ents.CreateClientProp",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ents/CreateClientProp",
      "@warning Model must be precached with @util.PrecacheModel on the server before usage.",
      "@bug #1387 Clientside entities are not garbage-collected, thus you must store a reference to the object and call @CSEnt:Remove manually.",
      "@bug #3268 Projected textures do not work on clientside props under specific conditions (see [this explanation](https://github.com/Facepunch/garrysmod-issues/issues/3268#issuecomment-324821962)).",
      "@param {void} this - no description",
      "@param {string} model - The model for the entity to be created.",
      "@returns {CSEnt} - Created entity."
    ],
    "type": "func",
    "context": "ents",
    "name": "CreateClientProp",
    "typings": [
      "(this: void, model?: string): CSEnt"
    ]
  },
  {
    "comments": [
      "\nCreates a clientside only scripted entity. The scripted entity must be of \"anim\" type.\n",
      "@name ents.CreateClientside",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ents/CreateClientside",
      "@param {void} this - no description",
      "@param {string} cls - The class name of the entity to create.",
      "@returns {Entity} - Created entity."
    ],
    "type": "func",
    "context": "ents",
    "name": "CreateClientside",
    "typings": [
      "(this: void, cls: string): Entity"
    ]
  },
  {
    "comments": [
      "\nConverts world angles to local angles ( local to the entity )\n",
      "@name EntityFuncs:WorldToLocalAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/WorldToLocalAngles",
      "@param {Entity} this - no description",
      "@param {Angle} ang - The world angles",
      "@returns {Angle} - The local angles"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "WorldToLocalAngles",
    "typings": [
      "(this: Entity, ang: Angle): Angle"
    ]
  },
  {
    "comments": [
      "\nConverts a worldspace vector into a vector local to an entity\n",
      "@name EntityFuncs:WorldToLocal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/WorldToLocal",
      "@param {Entity} this - no description",
      "@param {Vector} wpos - The world vector",
      "@returns {Vector} - The local vector"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "WorldToLocal",
    "typings": [
      "(this: Entity, wpos: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the center of the entity according to its collision model.\n",
      "@name EntityFuncs:WorldSpaceCenter",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/WorldSpaceCenter",
      "@param {Entity} this - no description",
      "@returns {Vector} - The center of the entity"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "WorldSpaceCenter",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns two vectors representing the minimum and maximum extent of the entity's bounding box.\n",
      "@name EntityFuncs:WorldSpaceAABB",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/WorldSpaceAABB",
      "@param {Entity} this - no description",
      "@returns {Vector} - The minimum vector for the entity's bounding box.",
      "@returns {Vector} - The maximum vector for the entity's bounding box.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "WorldSpaceAABB",
    "typings": [
      "(this: Entity): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nCalls and returns @WeaponHooks:TranslateActivity on the weapon the entity ( player or NPC ) carries.\nDespite existing on client, it doesn't actually do anything on client.\n",
      "@name EntityFuncs:Weapon_TranslateActivity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Weapon TranslateActivity",
      "@param {Entity} this - no description",
      "@param {number} act - The activity to translate",
      "@returns {number} - The translated activity"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Weapon_TranslateActivity",
    "typings": [
      "(this: Entity, act: number): number"
    ]
  },
  {
    "comments": [
      "\nSets the activity of the entity's active weapon.\n",
      "@name EntityFuncs:Weapon_SetActivity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Weapon SetActivity",
      "@note This does nothing on the client.",
      "@note Only works for CBaseCombatCharacter entities, which includes players and NPCs.",
      "@param {Entity} this - no description",
      "@param {ACT} act - Activity number. See @ACT enum.",
      "@param {number} duration - How long the animation should take in seconds.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Weapon_SetActivity",
    "typings": [
      "(this: Entity, act: ACT, duration: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if supplied vector is visible from the entity's line of sight.\nThis is achieved similarly to a trace.\n",
      "@name EntityFuncs:VisibleVec",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/VisibleVec",
      "@param {Entity} this - no description",
      "@param {Vector} pos - The position to check for visibility",
      "@returns {boolean} - Within line of sight"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "VisibleVec",
    "typings": [
      "(this: Entity, pos: Vector): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns an integer that represents how deep in water the entity is.\n* **0** - The entity isn't in water.\n* **1** - Slightly submerged (at least to the feet).\n* **2** - The majority of the entity is submerged (at least to the waist).\n* **3** - Completely submerged.\n",
      "@name EntityFuncs:WaterLevel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/WaterLevel",
      "@param {Entity} this - no description",
      "@returns {number} - The water level."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "WaterLevel",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether the target/given entity is visible from the this entity.\nThis is meant to be used only with NPCs.\nDifferences from a simple trace include:\n* If target has **FL_NOTARGET**, returns false\n* If **ai_ignoreplayers** is turned on and target is a player, returns false\n* Reacts to **ai_LOS_mode**:\n** If 1, does a simple trace with **COLLISION_GROUP_NONE** and **MASK_BLOCKLOS**\n** If not, does a trace with **MASK_BLOCKLOS_AND_NPCS** ( - **CONTENTS_BLOCKLOS** is target is player ) and a custom LOS filter ( **CTraceFilterLOS** )\n* Returns true if hits a vehicle the target is driving\n",
      "@name EntityFuncs:Visible",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Visible",
      "@param {Entity} this - no description",
      "@param {Entity} target - Entity to check for visibility to.",
      "@returns {boolean} - If the entities can see each other."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Visible",
    "typings": [
      "(this: Entity, target: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nEnables or disables trigger bounds.\nThis will give the entity a \"trigger box\" that extends around its bounding box by boundSize units in X/Y and (boundSize / 2) in +Z (-Z remains the same).\nThe trigger box is world aligned and will work regardless of the object's solidity and collision group.\nValve use trigger boxes for all pickup items. Their bloat size is 24, a surprisingly large figure.\n",
      "@name EntityFuncs:UseTriggerBounds",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/UseTriggerBounds",
      "@note The trigger boxes can be made visible as a light blue box by using the **ent_bbox** console command while looking at the entity. Alternatively a classname or entity index can be used as the first argument.\nThis requires **developer** to be set to **1**.",
      "@param {Entity} this - no description",
      "@param {boolean} enable - Enable or disable the bounds.",
      "@param {number} boundSize - The distance/size of the trigger bounds.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "UseTriggerBounds",
    "typings": [
      "(this: Entity, enable: boolean, boundSize?: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the index of this view model, it can be used to identify which one of the player's view models this entity is.\n",
      "@name EntityFuncs:ViewModelIndex",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/ViewModelIndex",
      "@param {Entity} this - no description",
      "@returns {number} - View model index, ranges from 0 to 2, nil if the entity is not a view model"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "ViewModelIndex",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nAnimations will be handled purely clientside instead of a fixed animtime, enabling interpolation. This does not affect layers and gestures.\n",
      "@name EntityFuncs:UseClientSideAnimation",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/UseClientSideAnimation",
      "@note Does nothing on server.",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "UseClientSideAnimation",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when another entity uses this entity, example would be a player pressing \"+use\" this entity.\nTo change how often the function is called, see @EntityFuncs:SetUseType.\n",
      "@name EntityHooks:Use",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/Use",
      "@note This hook only works for \"nextbot\", \"ai\" and \"anim\" scripted entity types.",
      "@param {_ENTITY} this - no description",
      "@param {Entity} activator - The entity that caused this input. This will usually be the player who pressed their use key",
      "@param {Entity} caller - The entity responsible for the input. This will typically be the same as *activator* unless some other entity is acting as a proxy",
      "@param {USE} useType - Use type, see @USE enum.",
      "@param {number} value - Any passed value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "Use",
    "typings": [
      "(this: _ENTITY, activator: Entity, caller: Entity, useType: USE, value: number): void"
    ]
  },
  {
    "comments": [
      "\nActivates the entity, as if a player pressed the Use key (Default @E key) on it.\n",
      "@name EntityFuncs:Use",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Use",
      "@param {Entity} this - no description",
      "@param {Player} activator - The player who is using the entity",
      "@param {Entity} caller - This should be the same as *activator*.\nThis is supposed to be the entity that is acting as a proxy for the player (eg a button), but due to confusion over the difference between activator and caller, third party code may expect caller to be the activator and vice versa.\nTherefore, the only safe thing to do is to set both arguments to be the player.",
      "@param {USE} useType - The type of use to trigger. See @USE enum",
      "@param {number} integer - You can usually set this to 1.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Use",
    "typings": [
      "(this: Entity, activator: Player, caller: Entity, useType: USE, integer: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the transmit state should be updated.\n",
      "@name EntityHooks:UpdateTransmitState",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/UpdateTransmitState",
      "@param {_ENTITY} this - no description",
      "@returns {TRANSMIT} - Transmit state to set, see @TRANSMIT enum."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "UpdateTransmitState",
    "typings": [
      "(this: _ENTITY): TRANSMIT"
    ]
  },
  {
    "comments": [
      "\nTriggers all outputs stored using @EntityHooks:StoreOutput.\n",
      "@name EntityHooks:TriggerOutput",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/TriggerOutput",
      "@param {_ENTITY} this - no description",
      "@param {string} output - Name of output to fire",
      "@param {Entity} activator - Activator entity",
      "@param {string} data - The data to give to the output.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "TriggerOutput",
    "typings": [
      "(this: _ENTITY, output: string, activator: Entity, data?: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the ID of a @PhysObj type attached to the given bone. To be used with @EntityFuncs:GetPhysicsObjectNum.\nSee @EntityFuncs:TranslatePhysBoneToBone for reverse function.\n",
      "@name EntityFuncs:TranslateBoneToPhysBone",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/TranslateBoneToPhysBone",
      "@param {Entity} this - no description",
      "@param {number} boneID - The ID of a bone to look up the \"physics root\" bone of.",
      "@returns {number} - The @PhysObj type ID of the given bone.\n* -1 if we somehow cannot translate"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "TranslateBoneToPhysBone",
    "typings": [
      "(this: Entity, boneID: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the boneID of the bone the given @PhysObj type is attached to.\nSee @EntityFuncs:TranslateBoneToPhysBone for reverse function.\n",
      "@name EntityFuncs:TranslatePhysBoneToBone",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/TranslatePhysBoneToBone",
      "@param {Entity} this - no description",
      "@param {number} physNum - The @PhysObj type number on the entity",
      "@returns {number} - The boneID of the bone the @PhysObj type is attached to."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "TranslatePhysBoneToBone",
    "typings": [
      "(this: Entity, physNum: number): number"
    ]
  },
  {
    "comments": [
      "\nCalled every tick for every entity being \"touched\".\nSee also @EntityHooks:StartTouch and @EntityHooks:EndTouch.\n",
      "@name EntityHooks:Touch",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/Touch",
      "@note For physics enabled entities, this hook will **not** be ran while the entity's physics is asleep. See @PhysObj:Wake.",
      "@warning This only works for **brush** entities and for entities that have @EntityFuncs:SetTrigger set to true.",
      "@param {_ENTITY} this - no description",
      "@param {Entity} entity - The entity that touched it.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "Touch",
    "typings": [
      "(this: _ENTITY, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled every frame on the client.\nCalled every tick on the server.\n",
      "@name EntityHooks:Think",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/Think",
      "@note By default, it runs about 5-6 times per second on the server, but you can force it to run at servers tickrate using the example below.",
      "@param {_ENTITY} this - no description",
      "@returns {boolean} - Return true if you used @EntityFuncs:NextThink to override the next execution time."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "Think",
    "typings": [
      "(this: _ENTITY): boolean"
    ]
  },
  {
    "comments": [
      "\nCheck if the given position or entity is within this entity's PVS.\n",
      "@name EntityFuncs:TestPVS",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/TestPVS",
      "@note The function won't take in to account @AddOriginToPVS function and the like.",
      "@param {Entity} this - no description",
      "@param {Entity | Vector} testPoint - @Entity type or @Vector type to test against. If an entity is given, this function will test using its bounding box.",
      "@returns {boolean} - True if the testPoint is within our PVS."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "TestPVS",
    "typings": [
      "(this: Entity, testPoint: Entity | Vector): boolean"
    ]
  },
  {
    "comments": [
      "\nAllows you to override trace result when a trace hits the entitys Bounding Box.\n",
      "@name EntityHooks:TestCollision",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/TestCollision",
      "@note Your entity must have @EntityFuncs:EnableCustomCollisions enabled for this hook to work",
      "@param {_ENTITY} this - no description",
      "@param {Vector} startpos - Start position of the trace",
      "@param {Vector} delta - Offset from startpos to the endpos of the trace",
      "@param {boolean} isbox - Is the trace a hull trace?",
      "@param {Vector} extents - Size of the hull trace?",
      "@param {CONTENTS} mask - The @CONTENTS enum mask",
      "@returns {table} - A table containing new HitPos, Fraction and Normal. Returning nothing allows the trace to ignore the entity completely."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "TestCollision",
    "typings": [
      "(this: _ENTITY, startpos: Vector, delta: Vector, isbox: boolean, extents: Vector, mask: CONTENTS): table"
    ]
  },
  {
    "comments": [
      "\nReturns how many seconds we've been doing this current task\n",
      "@name EntityHooks:TaskTime",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/TaskTime",
      "@param {_ENTITY} this - no description",
      "@returns {number} - How many seconds we've been doing this current task"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "TaskTime",
    "typings": [
      "(this: _ENTITY): number"
    ]
  },
  {
    "comments": [
      "\nReturns true if the current running Task is finished.\n",
      "@name EntityHooks:TaskFinished",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/TaskFinished",
      "@param {_ENTITY} this - no description",
      "@returns {boolean} - Is the current running Task is finished or not."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "TaskFinished",
    "typings": [
      "(this: _ENTITY): boolean"
    ]
  },
  {
    "comments": [
      "\nApplies forces to our physics object in response to damage.\n",
      "@name EntityFuncs:TakePhysicsDamage",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/TakePhysicsDamage",
      "@param {Entity} this - no description",
      "@param {CTakeDamageInfo} dmginfo - The damageinfo to apply. Only @CTakeDamageInfo:GetDamageForce and @CTakeDamageInfo:GetDamagePosition are used.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "TakePhysicsDamage",
    "typings": [
      "(this: Entity, dmginfo: CTakeDamageInfo): void"
    ]
  },
  {
    "comments": [
      "\nApplies the damage specified by the damage info to the entity.\n",
      "@name EntityFuncs:TakeDamageInfo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/TakeDamageInfo",
      "@warning Calling this function on the victim entity in @EntityHooks:OnTakeDamage can cause infinite loops.",
      "@param {Entity} this - no description",
      "@param {CTakeDamageInfo} damageInfo - The damage to apply.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "TakeDamageInfo",
    "typings": [
      "(this: Entity, damageInfo: CTakeDamageInfo): void"
    ]
  },
  {
    "comments": [
      "\nApplies the specified amount of damage to the entity with [DMG_GENERIC](https://wiki.garrysmod.com/page/Enums/DMG) flag.\n",
      "@name EntityFuncs:TakeDamage",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/TakeDamage",
      "@warning Calling this function on the victim entity in @EntityHooks:OnTakeDamage can cause infinite loops.",
      "@param {Entity} this - no description",
      "@param {number} damageAmount - The amount of damage to be applied.",
      "@param {Entity} attacker - The entity that initiated the attack that caused the damage.",
      "@param {Entity} inflictor - The entity that applied the damage, eg. a weapon.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "TakeDamage",
    "typings": [
      "(this: Entity, damageAmount: number, attacker: Entity, inflictor: Entity): void"
    ]
  },
  {
    "comments": [
      "\nUsed to store an output so it can be triggered with @EntityHooks:TriggerOutput.\nOutputs compiled into a map are passed to entities as key/value pairs through @EntityHooks:KeyValue.\nTriggerOutput will do nothing if this function has not been called first.\n",
      "@name EntityHooks:StoreOutput",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/StoreOutput",
      "@param {_ENTITY} this - no description",
      "@param {string} name - Name of output to store",
      "@param {string} info - Output info",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "StoreOutput",
    "typings": [
      "(this: _ENTITY, name: string, info: string): void"
    ]
  },
  {
    "comments": [
      "\nStops emitting the given sound script from the entity, especially useful for looping sound scripts.\n",
      "@name EntityFuncs:StopSound",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/StopSound",
      "@warning This only works when the sound you're trying to stop is a sound script (see @sound.Add), using a file path will not work!",
      "@param {Entity} this - no description",
      "@param {string} soundscript - The name of the sound script to stop playback of.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "StopSound",
    "typings": [
      "(this: Entity, soundscript: string): void"
    ]
  },
  {
    "comments": [
      "\nStops all particle effects parented to the entity with given name on given attachment.\n",
      "@name EntityFuncs:StopParticlesWithNameAndAttachment",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/StopParticlesWithNameAndAttachment",
      "@param {Entity} this - no description",
      "@param {string} name - The name of the particle to stop.",
      "@param {number} attachment - The attachment of the entity to stop particles on.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "StopParticlesWithNameAndAttachment",
    "typings": [
      "(this: Entity, name: string, attachment: number): void"
    ]
  },
  {
    "comments": [
      "\nStops all particle effects parented to the entity with given name.\n",
      "@name EntityFuncs:StopParticlesNamed",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/StopParticlesNamed",
      "@param {Entity} this - no description",
      "@param {string} name - The name of the particle to stop.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "StopParticlesNamed",
    "typings": [
      "(this: Entity, name: string): void"
    ]
  },
  {
    "comments": [
      "\nStops any attached to the entity .pcf particles using @ParticleEffectAttach function.\nOn client, this is the same as @EntityFuncs:StopParticleEmission. ( and you should use StopParticleEmission instead )\nOn server, this is the same as running @EntityFuncs:StopParticleEmission on every client.\n",
      "@name EntityFuncs:StopParticles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/StopParticles",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "StopParticles",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nStops all particle effects parented to the entity.\nThis is ran automatically on every client by @EntityFuncs:StopParticles if called on the server.\n",
      "@name EntityFuncs:StopParticleEmission",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/StopParticleEmission",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "StopParticleEmission",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nStops the motion controller created with @EntityFuncs:StartMotionController.\n",
      "@name EntityFuncs:StopMotionController",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/StopMotionController",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "StopMotionController",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nStops all particle effects parented to the entity and immediately destroys them.\n",
      "@name EntityFuncs:StopAndDestroyParticles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/StopAndDestroyParticles",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "StopAndDestroyParticles",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nStops a sound created by @EntityFuncs:StartLoopingSound.\n",
      "@name EntityFuncs:StopLoopingSound",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/StopLoopingSound",
      "@param {Entity} this - no description",
      "@param {number} id - The sound ID returned by @EntityFuncs:StartLoopingSound",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "StopLoopingSound",
    "typings": [
      "(this: Entity, id: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity starts touching another entity.\n",
      "@name EntityHooks:StartTouch",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/StartTouch",
      "@warning This only works for **brush** entities and for entities that have @EntityFuncs:SetTrigger set to true.",
      "@param {_ENTITY} this - no description",
      "@param {Entity} entity - The entity which is being touched.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "StartTouch",
    "typings": [
      "(this: _ENTITY, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled once on starting task.\n",
      "@name EntityHooks:StartTask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/StartTask",
      "@param {_ENTITY} this - no description",
      "@param {Task} task - The task to start, created by @ai_task.New.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "StartTask",
    "typings": [
      "(this: _ENTITY, task: Task): void"
    ]
  },
  {
    "comments": [
      "\nStarts a schedule previously created by @ai_schedule.New.\nNot to be confused with @EntityHooks:StartEngineSchedule or @NPC:SetSchedule which start an Engine-based schedule.\n",
      "@name EntityHooks:StartSchedule",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/StartSchedule",
      "@param {_ENTITY} this - no description",
      "@param {Schedule} sched - Schedule to start.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "StartSchedule",
    "typings": [
      "(this: _ENTITY, sched: Schedule): void"
    ]
  },
  {
    "comments": [
      "\nStarts a motion controller in the physics engine tied to this entity's @PhysObj type, which enables the use of @EntityHooks:PhysicsSimulate.\nThe motion controller can later be destroyed via @EntityFuncs:StopMotionController.\nMotion controllers are used internally to control other Entities' @PhysObj typeects, such as the Gravity Gun, +use pickup and the Physics Gun.\nThis function should be called every time you recreate the Entity's @PhysObj type. Or alternatively you should call @EntityFuncs:AddToMotionController on the new @PhysObj type.\nAlso see @EntityFuncs:AddToMotionController and @EntityFuncs:RemoveFromMotionController.\n",
      "@name EntityFuncs:StartMotionController",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/StartMotionController",
      "@note Only works on a scripted @Entity type of anim type.",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "StartMotionController",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nStarts a \"looping\" sound. As with any other sound playing methods, this function expects the sound file to be looping itself and will not automatically loop a non looping sound file as one might expect.\nThis function is almost identical to @CreateSound function, with the exception of the sound being created in the STATIC channel and with normal attenuation.\nSee also @EntityFuncs:StopLoopingSound\n",
      "@name EntityFuncs:StartLoopingSound",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/StartLoopingSound",
      "@param {Entity} this - no description",
      "@param {string} sound - Sound to play. Can be either a sound script or a filepath.",
      "@returns {number} - The ID number of started sound starting with 0, or -1 if we failed for some reason."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "StartLoopingSound",
    "typings": [
      "(this: Entity, sound: string): number"
    ]
  },
  {
    "comments": [
      "\nCalled when an engine task has been started on the entity.\n",
      "@name EntityHooks:StartEngineTask",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/StartEngineTask",
      "@note This hook only exists for **ai** type SENTs",
      "@param {_ENTITY} this - no description",
      "@param {number} taskID - Task ID to start, see [ai_task.h](https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/mp/src/game/server/ai_task.h#L89-L502)",
      "@param {number} TaskData - Task data",
      "@returns {boolean} - true to stop default action"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "StartEngineTask",
    "typings": [
      "(this: _ENTITY, taskID: number, TaskData: number): boolean"
    ]
  },
  {
    "comments": [
      "\nThis is the spawn function. It's called when a player spawns the entity from the spawnmenu.\nIf you want to make your SENT spawnable you need this function to properly create the entity.\n",
      "@name EntityHooks:SpawnFunction",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/SpawnFunction",
      "@warning Unlike other ENTITY functions, the \"self\" parameter of this function is not an entity but rather the table used to generate the SENT. This table is equivalent to @scripted_ents.GetStored(\"ent_name\").",
      "@param {_ENTITY} this - no description",
      "@param {Player} ply - The player that is spawning this SENT",
      "@param {TraceResult} tr - A @TraceResult structure from player eyes to their aim position",
      "@param {string} ClassName - The classname of your entity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "SpawnFunction",
    "typings": [
      "(this: _ENTITY, ply: Player, tr: TraceResult, ClassName: string): void"
    ]
  },
  {
    "comments": [
      "\nStarts an engine schedule.\n",
      "@name EntityHooks:StartEngineSchedule",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/StartEngineSchedule",
      "@param {_ENTITY} this - no description",
      "@param {SCHED} scheduleID - Schedule ID to start. See @SCHED enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "StartEngineSchedule",
    "typings": [
      "(this: _ENTITY, scheduleID: SCHED): void"
    ]
  },
  {
    "comments": [
      "\nInitializes the entity and starts its networking. If called on a player, it will respawn them.\nThis calls @EntityHooks:Initialize on Lua-defined entities.\n",
      "@name EntityFuncs:Spawn",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Spawn",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Spawn",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nMoves the model instance from the source entity to this entity. This can be used to transfer decals that have been applied on one entity to another.\nBoth entities must have the same model.\n",
      "@name EntityFuncs:SnatchModelInstance",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SnatchModelInstance",
      "@param {Entity} this - no description",
      "@param {Entity} srcEntity - Entity to move the model instance from.",
      "@returns {boolean} - Whether the operation was successful or not"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SnatchModelInstance",
    "typings": [
      "(this: Entity, srcEntity: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of skins the entity has.\n",
      "@name EntityFuncs:SkinCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SkinCount",
      "@param {Entity} this - no description",
      "@returns {number} - The amount of skins the entity's model has."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SkinCount",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nSets the model and associated weapon to this viewmodel entity.\nThis is used internally when the player switches weapon.\n",
      "@name EntityFuncs:SetWeaponModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetWeaponModel",
      "@note View models are not drawn without a weapons associated to them.",
      "@warning This will silently fail if the entity is not a viewmodel.",
      "@param {Entity} this - no description",
      "@param {string} viewModel - The model string to give to this viewmodel.\nExample: \"models/weapons/c_smg1.mdl\"",
      "@param {Weapon} weapon - The weapon entity to associate this viewmodel to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetWeaponModel",
    "typings": [
      "(this: Entity, viewModel: string, weapon?: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nSets the entity's velocity. For entities with physics, consider using @PhysObj:SetVelocity on the @PhysObj type of the entity.\n",
      "@name EntityFuncs:SetVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetVelocity",
      "@note Actually binds to CBaseEntity::SetBaseVelocity() which sets the entity's velocity due to forces applied by other entities.",
      "@warning If applied to a player, this will actually **ADD** velocity, not set it.",
      "@param {Entity} this - no description",
      "@param {Vector} velocity - The new velocity to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetVelocity",
    "typings": [
      "(this: Entity, velocity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nAllows to quickly set variable to entity's @EntityFuncs:GetTable.\n",
      "@name EntityFuncs:SetVar",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetVar",
      "@note This will not network the variable to client(s). You want @EntityFuncs:SetNWString and similar functions for that",
      "@param {Entity} this - no description",
      "@param {any} key - Key of the value to set",
      "@param {any} value - Value to set the variable to",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetVar",
    "typings": [
      "(this: Entity, key: any, value: any): void"
    ]
  },
  {
    "comments": [
      "\nSets the use type of an entity, affecting how often @EntityHooks:Use will be called for Lua entities.\n",
      "@name EntityFuncs:SetUseType",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetUseType",
      "@param {Entity} this - no description",
      "@param {_USE} useType - The use type to apply to the entity. Uses @_USE enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetUseType",
    "typings": [
      "(this: Entity, useType: _USE): void"
    ]
  },
  {
    "comments": [
      "\nInitializes the class names of an entity's phoneme mappings (mouth movement data). This is called by default with argument \"phonemes\" when a flex-based entity (such as an @NPC type) is created.\n",
      "@name EntityFuncs:SetupPhonemeMappings",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetupPhonemeMappings",
      "@note TF2 phonemes can be accessed by using a path such as \"player/scout/phonemes/phonemes\" , check TF2's \"tf2_misc_dir.vpk\" with GCFScape for other paths, however it seems that TF2 sounds don't contain phoneme definitions anymore after being converted to mp3 and only rely on VCD animations, this needs to be further investigated",
      "@param {Entity} this - no description",
      "@param {string} fileRoot - The file prefix of the phoneme mappings (relative to \"garrysmod/expressions/\").",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetupPhonemeMappings",
    "typings": [
      "(this: Entity, fileRoot: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity should set up its [ Data Tables](https://wiki.garrysmod.com/page/Networking%20Entities).\nThis is a much better option than using Set/Get Networked Values.\nThis hook is called after @GamemodeHooks:OnEntityCreated and @GamemodeHooks:NetworkEntityCreated.\n",
      "@name EntityHooks:SetupDataTables",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/SetupDataTables",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "SetupDataTables",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nForces the entity to reconfigure its bones. You might need to call this after changing your model's scales or when manually drawing the entity multiple times at different positions.\n",
      "@name EntityFuncs:SetupBones",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetupBones",
      "@note This calls the BuildBonePositions callback added via @EntityFuncs:AddCallback, so avoid calling this function inside it to prevent an infinite loop.",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetupBones",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets whether an entity can be unfrozen, meaning that it cannot be unfrozen using the physgun.\n",
      "@name EntityFuncs:SetUnFreezable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetUnFreezable",
      "@param {Entity} this - no description",
      "@param {boolean} freezable - True to make the entity unfreezable, false otherwise.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetUnFreezable",
    "typings": [
      "(this: Entity, freezable?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nMarks the entity as a trigger, so it will generate @EntityHooks:StartTouch, @EntityHooks:Touch and @EntityHooks:EndTouch callbacks.\nInternally this is stored as [FSOLID_TRIGGER](https://wiki.garrysmod.com/page/Enums/FSOLID) flag.\n",
      "@name EntityFuncs:SetTrigger",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetTrigger",
      "@param {Entity} this - no description",
      "@param {boolean} maketrigger - Make the entity trigger or not",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetTrigger",
    "typings": [
      "(this: Entity, maketrigger: boolean): void"
    ]
  },
  {
    "comments": [
      "\nWhen this flag is set the entity will only transmit to the player when its parent is transmitted. This is useful for things like viewmodel attachments since without this flag they will transmit to everyone (and cause the viewmodels to transmit to everyone too).\n",
      "@name EntityFuncs:SetTransmitWithParent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetTransmitWithParent",
      "@note In the case of scripted entities, this will override @EntityHooks:UpdateTransmitState",
      "@param {Entity} this - no description",
      "@param {boolean} onoff - Will set the TransmitWithParent flag on or off",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetTransmitWithParent",
    "typings": [
      "(this: Entity, onoff: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the current task.\n",
      "@name EntityHooks:SetTask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/SetTask",
      "@param {_ENTITY} this - no description",
      "@param {table} task - The task to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "SetTask",
    "typings": [
      "(this: _ENTITY, task: table): void"
    ]
  },
  {
    "comments": [
      "\nChanges the table that can be accessed by indexing an entity. Each entity starts with its own table by default.\n",
      "@name EntityFuncs:SetTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetTable",
      "@param {Entity} this - no description",
      "@param {table} tab - Table for the entity to use",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetTable",
    "typings": [
      "(this: Entity, tab: table): void"
    ]
  },
  {
    "comments": [
      "\nOverrides a single material on the model of this entity.\nTo set a Lua material created with @CreateMaterial function, just prepend a \"!\" to the material name.\n",
      "@name EntityFuncs:SetSubMaterial",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetSubMaterial",
      "@bug #3362 The server's value takes priority on the client.",
      "@param {Entity} this - no description",
      "@param {number} index - Index of the material to override, acceptable values are from 0 to 31.\nIndexes are by @EntityFuncs:GetMaterials, but you have to subtract 1 from them.\nIf called with no arguments, all sub materials will be reset.",
      "@param {string} material - The material to override the default one with. Set to nil to revert to default material.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetSubMaterial",
    "typings": [
      "(this: Entity, index?: number, material?: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the entity should use a spawn effect when it is created on the client.\nSee @EntityFuncs:GetSpawnEffect for more information on how the effect is applied.\n",
      "@name EntityFuncs:SetSpawnEffect",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetSpawnEffect",
      "@note This function will only have an effect when the entity spawns. After that it will do nothing even is set to true.",
      "@param {Entity} this - no description",
      "@param {boolean} spawnEffect - Sets if we should show a spawn effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetSpawnEffect",
    "typings": [
      "(this: Entity, spawnEffect: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets solid flag(s) for the entity.\nThis overrides any other flags the entity might have had. See @EntityFuncs:AddSolidFlags for adding flags.\n",
      "@name EntityFuncs:SetSolidFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetSolidFlags",
      "@param {Entity} this - no description",
      "@param {FSOLID} flags - The flag(s) to set, see @FSOLID enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetSolidFlags",
    "typings": [
      "(this: Entity, flags: FSOLID): void"
    ]
  },
  {
    "comments": [
      "\nSets the solidity of an entity.\n",
      "@name EntityFuncs:SetSolid",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetSolid",
      "@param {Entity} this - no description",
      "@param {SOLID} solid_type - The solid type. See the @SOLID enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetSolid",
    "typings": [
      "(this: Entity, solid_type: SOLID): void"
    ]
  },
  {
    "comments": [
      "\nSets the skin of the entity.\n",
      "@name EntityFuncs:SetSkin",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetSkin",
      "@param {Entity} this - no description",
      "@param {number} skinIndex - 0-based index of the skin to use.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetSkin",
    "typings": [
      "(this: Entity, skinIndex: number): void"
    ]
  },
  {
    "comments": [
      "\nSets if entity should create a server ragdoll on death or a client one.\n",
      "@name EntityFuncs:SetShouldServerRagdoll",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetShouldServerRagdoll",
      "@note Player ragdolls created with this enabled will have an owner set, see @EntityFuncs:SetOwner for more information on what effects this has.",
      "@note This is reset for players when they respawn. (@EntityFuncs:Spawn)",
      "@param {Entity} this - no description",
      "@param {boolean} serverragdoll - Set true if ragdoll should be created on server, false if on client",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetShouldServerRagdoll",
    "typings": [
      "(this: Entity, serverragdoll: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the entity should make a physics contact sound when it's been picked up by a player.\n",
      "@name EntityFuncs:SetShouldPlayPickupSound",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetShouldPlayPickupSound",
      "@param {Entity} this - no description",
      "@param {boolean} playsound - True to play the pickup sound, false otherwise.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetShouldPlayPickupSound",
    "typings": [
      "(this: Entity, playsound?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the entity's model sequence.\nIf the specified sequence is already active, the animation will not be restarted. See @EntityFuncs:ResetSequence for a function that restarts the animation even if it is already playing.\nIn some cases you want to run @EntityFuncs:ResetSequenceInfo to make this function run.\n",
      "@name EntityFuncs:SetSequence",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetSequence",
      "@note This will not work properly if called directly after calling @EntityFuncs:SetModel. Consider waiting until the next Tick.",
      "@note Will not work on players due to the animations being reset every frame by the base gamemode animation system in @GamemodeHooks:CalcMainActivity. For Players, use in @GamemodeHooks:UpdateAnimation instead.",
      "@note If set to a string, the function will automatically call @EntityFuncs:LookupSequence to retrieve the sequence ID as a number.",
      "@param {Entity} this - no description",
      "@param {number} sequenceId - The sequence to play. Also accepts strings.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetSequence",
    "typings": [
      "(this: Entity, sequenceId: number): void"
    ]
  },
  {
    "comments": [
      "\nSets a save value for an entity.\n",
      "@name EntityFuncs:SetSaveValue",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetSaveValue",
      "@bug #4065 This does not type-check entity keys. Setting an entity key to a non-entity value will treat it as NULL.",
      "@param {Entity} this - no description",
      "@param {string} name - Name of the save value to set",
      "@param {any} value - Value to set",
      "@returns {boolean} - Key successfully set"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetSaveValue",
    "typings": [
      "(this: Entity, name: string, value: any): boolean"
    ]
  },
  {
    "comments": [
      "\nSet the origin in which the Entity will be drawn from.\n",
      "@name EntityFuncs:SetRenderOrigin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRenderOrigin",
      "@param {Entity} this - no description",
      "@param {Vector} newOrigin - The new origin in world coordinates where the Entity's model will now be rendered from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRenderOrigin",
    "typings": [
      "(this: Entity, newOrigin: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the render mode of the entity.\n",
      "@name EntityFuncs:SetRenderMode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRenderMode",
      "@param {Entity} this - no description",
      "@param {RENDERMODE} renderMode - New render mode to set, see @RENDERMODE enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRenderMode",
    "typings": [
      "(this: Entity, renderMode: RENDERMODE): void"
    ]
  },
  {
    "comments": [
      "\nSets entity's render FX.\n",
      "@name EntityFuncs:SetRenderFX",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRenderFX",
      "@param {Entity} this - no description",
      "@param {kRenderFx} renderFX - The new render FX to set, see @kRenderFx enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRenderFX",
    "typings": [
      "(this: Entity, renderFX: kRenderFx): void"
    ]
  },
  {
    "comments": [
      "\nEnables the use of clipping planes to \"cut\" objects.\n",
      "@name EntityFuncs:SetRenderClipPlaneEnabled",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRenderClipPlaneEnabled",
      "@param {Entity} this - no description",
      "@param {boolean} enabled - Enable or disable clipping planes",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRenderClipPlaneEnabled",
    "typings": [
      "(this: Entity, enabled: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUsed to specify a plane, past which an object will be visually clipped.\n",
      "@name EntityFuncs:SetRenderClipPlane",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRenderClipPlane",
      "@param {Entity} this - no description",
      "@param {Vector} planeNormal - The normal of the plane. Anything behind the normal will be clipped.",
      "@param {number} planePosition - The position of the plane.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRenderClipPlane",
    "typings": [
      "(this: Entity, planeNormal: Vector, planePosition: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the render bounds for the entity in world space coordinates. For relative coordinates see @EntityFuncs:SetRenderBounds.\n",
      "@name EntityFuncs:SetRenderBoundsWS",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRenderBoundsWS",
      "@param {Entity} this - no description",
      "@param {Vector} mins - The minimum corner of the bounds, relative to origin of the world/map.",
      "@param {Vector} maxs - The maximum corner of the bounds, relative to origin of the world/map.",
      "@param {Vector} add - If defined, adds this vector to maxs and subtracts this vector from mins.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRenderBoundsWS",
    "typings": [
      "(this: Entity, mins: Vector, maxs: Vector, add?: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the render bounds for the entity. For world space coordinates see @EntityFuncs:SetRenderBoundsWS.\n",
      "@name EntityFuncs:SetRenderBounds",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRenderBounds",
      "@param {Entity} this - no description",
      "@param {Vector} mins - The minimum corner of the bounds, relative to origin of the entity.",
      "@param {Vector} maxs - The maximum corner of the bounds, relative to origin of the entity.",
      "@param {Vector} add - If defined, adds this vector to maxs and subtracts this vector from mins.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRenderBounds",
    "typings": [
      "(this: Entity, mins: Vector, maxs: Vector, add?: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the bone position. This is used alongside Kinect in @EntityFuncs:SetRagdollBuildFunction, for more info see ragdoll_motion entity.\n",
      "@name EntityFuncs:SetRagdollPos",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRagdollPos",
      "@param {Entity} this - no description",
      "@param {number} boneid - Bone ID",
      "@param {Vector} pos - Position to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRagdollPos",
    "typings": [
      "(this: Entity, boneid: number, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the render angles of the Entity.\n",
      "@name EntityFuncs:SetRenderAngles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRenderAngles",
      "@param {Entity} this - no description",
      "@param {Angle} newAngles - The new render angles to be set to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRenderAngles",
    "typings": [
      "(this: Entity, newAngles: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the function to build the ragdoll. This is used alongside Kinect, for more info see ragdoll_motion entity.\n",
      "@name EntityFuncs:SetRagdollBuildFunction",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRagdollBuildFunction",
      "@param {Entity} this - no description",
      "@param {function} func - The build function. This function has one argument:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRagdollBuildFunction",
    "typings": [
      "(this: Entity, func: EntityFuncsSetRagdollBuildFunctionFunc): void"
    ],
    "types": [
      {
        "comments": [
          "@type EntityFuncsSetRagdollBuildFunctionFunc",
          "@param {void} this - no description",
          "@param {Entity} ragdoll - The ragdoll to build"
        ],
        "type": "type",
        "name": "EntityFuncsSetRagdollBuildFunctionFunc",
        "typing": "(this: void, ragdoll: Entity) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nSets the bone angles. This is used alongside Kinect in @EntityFuncs:SetRagdollBuildFunction, for more info see ragdoll_motion entity.\n",
      "@name EntityFuncs:SetRagdollAng",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetRagdollAng",
      "@param {Entity} this - no description",
      "@param {number} boneid - Bone ID",
      "@param {Angle} pos - Angle to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetRagdollAng",
    "typings": [
      "(this: Entity, boneid: number, pos: Angle): void"
    ]
  },
  {
    "comments": [
      "\nPrevents the server from sending any further information about the entity to a player.\nUNCONFIRMED: When using this function, @EntityFuncs:SetFlexScale will conflict with this function. Instead, consider using @EntityFuncs:SetFlexScale on the client.\n",
      "@name EntityFuncs:SetPreventTransmit",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetPreventTransmit",
      "@validate",
      "@bug #1736 This does not work for nextbots.",
      "@param {Entity} this - no description",
      "@param {Player} player - The player to stop networking the entity to.",
      "@param {boolean} stopTransmitting - true to stop the entity from networking, false to make it network again.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetPreventTransmit",
    "typings": [
      "(this: Entity, player: Player, stopTransmitting: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether an entity should be predictable or not.\nWhen an entity is set as predictable, its DT vars can be changed during predicted hooks. This is useful for entities which can be controlled by player input.\nAny datatable value that mismatches from the server will be overridden and a prediction error will be spewed.\nWeapons are predictable by default, and the drive system uses this function to make the controlled prop predictable as well.\nVisit [Predicted Hooks](https://wiki.garrysmod.com/page/Category:Predicted_Hooks) for a list of all predicted hooks, and the [Prediction](https://wiki.garrysmod.com/page/Prediction) page.\nFor further technical information on the subject, visit [valve's wiki](https://developer.valvesoftware.com/wiki/Prediction).\n",
      "@name EntityFuncs:SetPredictable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetPredictable",
      "@note This function resets the datatable variables everytime it's called, it should ideally be called when a player starts using the entity and when he stops",
      "@note Entities set as predictable with this function will be unmarked when the user lags and receives a full packet update, to handle such case visit @GamemodeHooks:NotifyShouldTransmit",
      "@param {Entity} this - no description",
      "@param {boolean} setPredictable - whether to make this entity predictable or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetPredictable",
    "typings": [
      "(this: Entity, setPredictable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the specified pose parameter to the specified value.\nYou should call @EntityFuncs:InvalidateBoneCache after calling this function.\n",
      "@name EntityFuncs:SetPoseParameter",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetPoseParameter",
      "@note Avoid calling this in draw hooks, especially when animating things, as it might cause visual artifacts.",
      "@param {Entity} this - no description",
      "@param {string} poseName - Name of the pose parameter.",
      "@param {number} poseValue - The value to set the pose to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetPoseParameter",
    "typings": [
      "(this: Entity, poseName: string, poseValue: number): void"
    ]
  },
  {
    "comments": [
      "\nAllows you to set how fast an entity's animation will play, with 1.0 being the default speed.\n",
      "@name EntityFuncs:SetPlaybackRate",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetPlaybackRate",
      "@param {Entity} this - no description",
      "@param {number} fSpeed - How fast the animation will play.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetPlaybackRate",
    "typings": [
      "(this: Entity, fSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nMoves the entity to the specified position.\n",
      "@name EntityFuncs:SetPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetPos",
      "@note If the new position doesn't take effect right away, you can use @EntityFuncs:SetupBones to force it to do so. This issue is especially common when trying to render the same entity twice or more in a single frame at different positions.",
      "@warning Entities with @EntityFuncs:GetSolid of SOLID_BBOX will have their angles reset!",
      "@bug #2447 This will fail inside of predicted functions called during player movement processing. This includes @WeaponHooks:PrimaryAttack and @WeaponHooks:Think.",
      "@param {Entity} this - no description",
      "@param {Vector} position - The position to move the entity to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetPos",
    "typings": [
      "(this: Entity, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nWhen called on a constraint entity, sets the two physics objects to be constrained.\nUsage is not recommended as the Constraint library provides easier ways to deal with constraints.\n",
      "@name EntityFuncs:SetPhysConstraintObjects",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetPhysConstraintObjects",
      "@param {Entity} this - no description",
      "@param {PhysObj} Phys1 - The first physics object to be constrained.",
      "@param {PhysObj} Phys2 - The second physics object to be constrained.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetPhysConstraintObjects",
    "typings": [
      "(this: Entity, Phys1: PhysObj, Phys2: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nSets the player who gets credit if this entity kills something with physics damage within the time limit.\n",
      "@name EntityFuncs:SetPhysicsAttacker",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetPhysicsAttacker",
      "@note This can only be called on props.",
      "@param {Entity} this - no description",
      "@param {Player} ent - Player who gets the kills. Setting this to a non-player entity will not work.",
      "@param {number} timeLimit - Time in seconds until the entity forgets its physics attacker and prevents it from getting the kill credit.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetPhysicsAttacker",
    "typings": [
      "(this: Entity, ent: Player, timeLimit?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the given entity is persistent. A persistent entity will be saved on server shutdown and loaded back when the server starts up. Additionally, by default persistent entities cannot be grabbed with the physgun and tools cannot be used on them.\nIn sandbox, this can be set on an entity by opening the context menu, right clicking the entity, and choosing \"Make Persistent\".\n",
      "@name EntityFuncs:SetPersistent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetPersistent",
      "@note Persistence can only be enabled with the sbox_persist convar, which works as an identifier for the current set of persistent entities. An empty identifier (which is the default value) disables this feature.",
      "@param {Entity} this - no description",
      "@param {boolean} persist - Whether or not the entity should be persistent.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetPersistent",
    "typings": [
      "(this: Entity, persist: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the parent of this entity, making it move with its parent.\n",
      "@name EntityFuncs:SetParent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetParent",
      "@note This does not work on [the world](https://wiki.garrysmod.com/page/game/GetWorld).",
      "@note You must call @EntityFuncs:SetMoveType( MOVETYPE_NONE ) on the child for this argument to have any effect!",
      "@warning This can cause undefined physics behaviour when used on entities that don't support parenting. See the [Valve developer wiki](https://developer.valvesoftware.com/wiki/Entity_Hierarchy_(parenting)) for more information.",
      "@param {Entity} this - no description",
      "@param {Entity} parent - The entity to parent to. Setting this to nil will clear the parent.",
      "@param {number} attachmentId - The attachment id to use when parenting, defaults to -1 or whatever the parent had set previously.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetParent",
    "typings": [
      "(this: Entity, parent?: Entity, attachmentId?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the parent of an entity to another entity with the given physics bone number. Similar to @EntityFuncs:SetParent, except it is parented to a physbone. This function is useful mainly for ragdolls.\n",
      "@name EntityFuncs:SetParentPhysNum",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetParentPhysNum",
      "@note Despite this function being available server side, it doesn't actually do anything server side.",
      "@param {Entity} this - no description",
      "@param {number} bone - Physics bone number to attach to. Use 0 for objects with only one physics bone. (See @EntityFuncs:GetPhysicsObjectNum)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetParentPhysNum",
    "typings": [
      "(this: Entity, bone: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the owner of this entity, disabling all physics interaction with it.\n",
      "@name EntityFuncs:SetOwner",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetOwner",
      "@note This function is generally used to disable physics interactions on projectiles being fired by their owner, but can also be used for normal ownership in case physics interactions are not involved at all. The Gravity gun will be able to pick up the entity even if the owner can't collide with it, the Physics gun however will not.",
      "@param {Entity} this - no description",
      "@param {Entity} owner - The entity to be set as owner.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetOwner",
    "typings": [
      "(this: Entity, owner?: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked vector value on the entity.\nThe value can then be accessed with @EntityFuncs:GetNWVector both from client and server.\n",
      "@name EntityFuncs:SetNWVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNWVector",
      "@note Running this function clientside will only set it for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {Vector} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNWVector",
    "typings": [
      "(this: Entity, key: string, value: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets a function to be called when the NWVar changes.\n",
      "@name EntityFuncs:SetNWVarProxy",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNWVarProxy",
      "@param {Entity} this - no description",
      "@param {any} key - The key of the NWVar to add callback for.",
      "@param {function} callback - The function to be called when the NWVar changes. It has 4 arguments:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNWVarProxy",
    "typings": [
      "(this: Entity, key: any, callback: EntityFuncsSetNWVarProxyCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type EntityFuncsSetNWVarProxyCallback",
          "@param {void} this - no description",
          "@param {Entity} ent - The entity",
          "@param {string} name - Name of the NWVar that has changed",
          "@param {any} oldval - The old value",
          "@param {any} newval - The new value"
        ],
        "type": "type",
        "name": "EntityFuncsSetNWVarProxyCallback",
        "typing": "(this: void, ent: Entity, name: string, oldval: any, newval: any) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nSets a networked string value on the entity.\nThe value can then be accessed with @EntityFuncs:GetNWString both from client and server.\n",
      "@name EntityFuncs:SetNWString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNWString",
      "@note Running this function clientside will only set it for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {string} value - The value to set, up to 199 characters.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNWString",
    "typings": [
      "(this: Entity, key: string, value: string): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked integer (whole number) value on the entity.\nThe value can then be accessed with @EntityFuncs:GetNWInt both from client and server.\nSee @EntityFuncs:SetNWFloat for numbers that aren't integers.\n",
      "@name EntityFuncs:SetNWInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNWInt",
      "@note Running this function clientside will only set it for the client it is called on.",
      "@bug #3374 This function will not round decimal values as it actually networks a float internally.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {number} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNWInt",
    "typings": [
      "(this: Entity, key: string, value: number): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked float (number) value on the entity.\nThe value can then be accessed with @EntityFuncs:GetNWFloat both from client and server.\nUnlike @EntityFuncs:SetNWInt, floats don't have to be whole numbers.\n",
      "@name EntityFuncs:SetNWFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNWFloat",
      "@note Running this function clientside will only set it for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {number} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNWFloat",
    "typings": [
      "(this: Entity, key: string, value: number): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked boolean value on the entity.\nThe value can then be accessed with @EntityFuncs:GetNWBool both from client and server.\n",
      "@name EntityFuncs:SetNWBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNWBool",
      "@note Running this function clientside will only set it for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {boolean} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNWBool",
    "typings": [
      "(this: Entity, key: string, value: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked entity value on the entity.\nThe value can then be accessed with @EntityFuncs:GetNWEntity both from client and server.\n",
      "@name EntityFuncs:SetNWEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNWEntity",
      "@note Running this function clientside will only set it for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {Entity} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNWEntity",
    "typings": [
      "(this: Entity, key: string, value: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked angle value on the entity.\nThe value can then be accessed with @EntityFuncs:GetNWAngle both from client and server.\n",
      "@name EntityFuncs:SetNWAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNWAngle",
      "@note Running this function clientside will only set it for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {Angle} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNWAngle",
    "typings": [
      "(this: Entity, key: string, value: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the entity is solid or not.\n",
      "@name EntityFuncs:SetNotSolid",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNotSolid",
      "@param {Entity} this - no description",
      "@param {boolean} IsNotSolid - True will make the entity not solid, false will make it solid.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNotSolid",
    "typings": [
      "(this: Entity, IsNotSolid: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets if the entity's model should render at all.\nIf set on the server, this entity will no longer network to clients, and for all intents and purposes cease to exist clientside.\n",
      "@name EntityFuncs:SetNoDraw",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNoDraw",
      "@param {Entity} this - no description",
      "@param {boolean} shouldNotDraw - true disables drawing",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNoDraw",
    "typings": [
      "(this: Entity, shouldNotDraw: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the next time the clientside @EntityHooks:Think is called.\n",
      "@name EntityFuncs:SetNextClientThink",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNextClientThink",
      "@param {Entity} this - no description",
      "@param {number} nextthink - The next time, relative to @CurTime function, to execute the @EntityHooks:Think clientside.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNextClientThink",
    "typings": [
      "(this: Entity, nextthink: number): void"
    ]
  },
  {
    "comments": [
      "\nVirtually changes entity position for clients. Does the same thing as @EntityFuncs:SetPos when used serverside.\n",
      "@name EntityFuncs:SetNetworkOrigin",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkOrigin",
      "@param {Entity} this - no description",
      "@param {Vector} origin - The position to make clients think this entity is at.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkOrigin",
    "typings": [
      "(this: Entity, origin: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked vector value at specified index on the entity.\nThe value then can be accessed with @EntityFuncs:GetNetworkedVector both from client and server.\n",
      "@name EntityFuncs:SetNetworkedVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkedVector",
      "@note Running this function clientside will only set it clientside for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {Vector} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkedVector",
    "typings": [
      "(this: Entity, key: string, value?: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets callback function to be called when given NWVar changes.\n",
      "@name EntityFuncs:SetNetworkedVarProxy",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkedVarProxy",
      "@note Currently this function only works for the NW2Var system (accessed by adding a 2 in between Networked and Var for most NetworkedVar functions), which will replace the original one at some point in the future",
      "@param {Entity} this - no description",
      "@param {string} name - The name of the NWVar to add callback for.",
      "@param {function} callback - The function to be called when the NWVar changes.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkedVarProxy",
    "typings": [
      "(this: Entity, name: string, callback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked string value at specified index on the entity.\nThe value then can be accessed with @EntityFuncs:GetNetworkedString both from client and server.\n",
      "@name EntityFuncs:SetNetworkedString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkedString",
      "@note Running this function clientside will only set it clientside for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {string} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkedString",
    "typings": [
      "(this: Entity, key: string, value?: string): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked number at the specified index on the entity.\n",
      "@name EntityFuncs:SetNetworkedNumber",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkedNumber",
      "@param {Entity} this - no description",
      "@param {any} index - The index that the value is stored in.",
      "@param {number} num - The value to network.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkedNumber",
    "typings": [
      "(this: Entity, index: any, num: number): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked integer value at specified index on the entity.\nThe value then can be accessed with @EntityFuncs:GetNetworkedInt both from client and server.\n",
      "@name EntityFuncs:SetNetworkedInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkedInt",
      "@note Running this function clientside will only set it clientside for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {number} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkedInt",
    "typings": [
      "(this: Entity, key: string, value?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked float value at specified index on the entity.\nThe value then can be accessed with @EntityFuncs:GetNetworkedFloat both from client and server.\nSeems to be the same as @EntityFuncs:GetNetworkedInt.\n",
      "@name EntityFuncs:SetNetworkedFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkedFloat",
      "@note Running this function clientside will only set it clientside for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {number} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkedFloat",
    "typings": [
      "(this: Entity, key: string, value?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked entity value at specified index on the entity.\nThe value then can be accessed with @EntityFuncs:GetNetworkedEntity both from client and server.\n",
      "@name EntityFuncs:SetNetworkedEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkedEntity",
      "@note Running this function clientside will only set it clientside for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {Entity} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkedEntity",
    "typings": [
      "(this: Entity, key: string, value?: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked boolean value at specified index on the entity.\nThe value then can be accessed with @EntityFuncs:GetNetworkedBool both from client and server.\n",
      "@name EntityFuncs:SetNetworkedBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkedBool",
      "@note Running this function clientside will only set it clientside for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {boolean} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkedBool",
    "typings": [
      "(this: Entity, key: string, value?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets a networked angle value at specified index on the entity.\nThe value then can be accessed with @EntityFuncs:GetNetworkedAngle both from client and server.\n",
      "@name EntityFuncs:SetNetworkedAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkedAngle",
      "@note Running this function clientside will only set it clientside for the client it is called on.",
      "@param {Entity} this - no description",
      "@param {string} key - The key to associate the value with",
      "@param {Angle} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkedAngle",
    "typings": [
      "(this: Entity, key: string, value?: Angle): void"
    ]
  },
  {
    "comments": [
      "\nAlters the entity's perceived serverside angle on the client.\n",
      "@name EntityFuncs:SetNetworkAngles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetNetworkAngles",
      "@param {Entity} this - no description",
      "@param {Angle} angle - Networked angle.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetNetworkAngles",
    "typings": [
      "(this: Entity, angle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the mapping name of the entity.\n",
      "@name EntityFuncs:SetName",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetName",
      "@param {Entity} this - no description",
      "@param {string} mappingName - The name to set for the entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetName",
    "typings": [
      "(this: Entity, mappingName: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the entity's move type. This should be called before initializing the physics object on the entity, unless it will override SetMoveType such as @EntityFuncs:PhysicsInitBox.\nDespite existing on client, it doesn't actually do anything on client.\n",
      "@name EntityFuncs:SetMoveType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetMoveType",
      "@param {Entity} this - no description",
      "@param {MOVETYPE} movetype - The new movetype, see @MOVETYPE enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetMoveType",
    "typings": [
      "(this: Entity, movetype: MOVETYPE): void"
    ]
  },
  {
    "comments": [
      "\nSets the Movement Parent of an entity to another entity.\nSimilar to @EntityFuncs:SetParent, except the object's coordinates are not translated automatically before parenting.\n",
      "@name EntityFuncs:SetMoveParent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetMoveParent",
      "@param {Entity} this - no description",
      "@param {Entity} Parent - The entity to change this entity's Movement Parent to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetMoveParent",
    "typings": [
      "(this: Entity, Parent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the move collide type of the entity. The move collide is the way a physics object reacts to hitting an object - will it bounce, slide?\n",
      "@name EntityFuncs:SetMoveCollide",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetMoveCollide",
      "@param {Entity} this - no description",
      "@param {MOVECOLLIDE} moveCollideType - The move collide type, see @MOVECOLLIDE enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetMoveCollide",
    "typings": [
      "(this: Entity, moveCollideType: MOVECOLLIDE): void"
    ]
  },
  {
    "comments": [
      "\nScales the model of the entity, if the entity is a @Player type or an @NPC type the hitboxes will be scaled as well.\nFor some entities, calling @EntityFuncs:Activate after this will scale the collision bounds and @PhysObj type as well; be wary as there's no optimization being done internally and highly complex collision models might crash the server.\nThis is the same system used in TF2 for the Mann Vs Machine robots.\nTo resize the entity along any axis, use @EntityFuncs:EnableMatrix instead.\nIf your old scales are wrong due to a recent update, use @EntityFuncs:SetLegacyTransform as a quick fix.\n",
      "@name EntityFuncs:SetModelScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetModelScale",
      "@bug #2193 The hull does not scale properly with this function.",
      "@bug #3502 This does not scale procedural bones and disables IK.",
      "@param {Entity} this - no description",
      "@param {number} scale - A float to scale the model by. 0 will not draw anything. < 0 will draw the model inverted.",
      "@param {number} deltaTime - Transition time of the scale change, set to 0 to modify the scale right away.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetModelScale",
    "typings": [
      "(this: Entity, scale: number, deltaTime?: number): void"
    ]
  },
  {
    "comments": [
      "\nAlter the model name returned by @EntityFuncs:GetModel. Does not affect the entity's actual model.\n",
      "@name EntityFuncs:SetModelName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetModelName",
      "@param {Entity} this - no description",
      "@param {string} modelname - The new model name.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetModelName",
    "typings": [
      "(this: Entity, modelname: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the model of the entity.\nThis does not update the physics of the entity - see @EntityFuncs:PhysicsInit.\n",
      "@name EntityFuncs:SetModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetModel",
      "@warning This silently fails when given an empty string.",
      "@param {Entity} this - no description",
      "@param {string} modelName - New model value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetModel",
    "typings": [
      "(this: Entity, modelName: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum health for entity. Note, that you can still set entity's health above this amount with @EntityFuncs:SetHealth.\n",
      "@name EntityFuncs:SetMaxHealth",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetMaxHealth",
      "@param {Entity} this - no description",
      "@param {number} maxhealth - What the max health should be",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetMaxHealth",
    "typings": [
      "(this: Entity, maxhealth: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the rendering material override of the entity.\nTo set a Lua material created with @CreateMaterial function, just prepend a \"!\" to the material name.\n",
      "@name EntityFuncs:SetMaterial",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetMaterial",
      "@note If you wish to override a single material on the model, use @EntityFuncs:SetSubMaterial instead.",
      "@note Please note that to apply materials to models, that material **must** have VertexLitGeneric shader. For that reason you cannot apply map textures onto models, map textures use a different material shader - LightmappedGeneric.",
      "@bug #3362 The server's value takes priority on the client.",
      "@param {Entity} this - no description",
      "@param {string} materialName - New material name. Use an empty string (\"\") to reset to the default materials.",
      "@param {boolean} forceMaterial - Use it if you wish to apply material other than VertexLitGeneric (such as tools/toolswhite).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetMaterial",
    "typings": [
      "(this: Entity, materialName: string, forceMaterial?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the Level Of Detail model to use with this entity. This may not work for all models if the model doesn't include any LOD sub models.\nThis function works exactly like the clientside r_lod convar and takes priority over it.\n",
      "@name EntityFuncs:SetLOD",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLOD",
      "@param {Entity} this - no description",
      "@param {number} lod - The Level Of Detail model ID to use. -1 leaves the engine to automatically set the Level of Detail.\nThe Level Of Detail may range from 0 to 8, with 0 being the highest quality and 8 the lowest.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLOD",
    "typings": [
      "(this: Entity, lod?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the entity's local velocity which is their velocity due to movement in the world from forces such as gravity. Does not include velocity from entity-on-entity collision or other world movement.\n",
      "@name EntityFuncs:SetLocalVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLocalVelocity",
      "@warning Same as @EntityFuncs:SetAbsVelocity, but clamps the given velocity, and is not recommended to be used because of that.",
      "@param {Entity} this - no description",
      "@param {Vector} velocity - The new velocity to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLocalVelocity",
    "typings": [
      "(this: Entity, velocity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets local position relative to the parented position. This is for use with @EntityFuncs:SetParent to offset position.\n",
      "@name EntityFuncs:SetLocalPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLocalPos",
      "@param {Entity} this - no description",
      "@param {Vector} pos - The local position",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLocalPos",
    "typings": [
      "(this: Entity, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the entity's angular velocity (rotation speed).\n",
      "@name EntityFuncs:SetLocalAngularVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLocalAngularVelocity",
      "@param {Entity} this - no description",
      "@param {Angle} angVel - The angular velocity to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLocalAngularVelocity",
    "typings": [
      "(this: Entity, angVel: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets angles relative to angles of @EntityFuncs:GetParent\n",
      "@name EntityFuncs:SetLocalAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLocalAngles",
      "@param {Entity} this - no description",
      "@param {Angle} ang - The local angle",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLocalAngles",
    "typings": [
      "(this: Entity, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the entity to be used as the light origin position for this entity.\n",
      "@name EntityFuncs:SetLightingOriginEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLightingOriginEntity",
      "@param {Entity} this - no description",
      "@param {Entity} lightOrigin - The lighting entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLightingOriginEntity",
    "typings": [
      "(this: Entity, lightOrigin: Entity): void"
    ]
  },
  {
    "comments": [
      "\nThis forces an entity to use the bone transformation behaviour from versions prior to **2014-07-08**.\nThis behaviour affects @EntityFuncs:EnableMatrix and @EntityFuncs:SetModelScale and is incorrect, therefore this function be used exclusively as a quick fix for old scripts that rely on it.\n",
      "@name EntityFuncs:SetLegacyTransform",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLegacyTransform",
      "@param {Entity} this - no description",
      "@param {boolean} enabled - Whether the entity should use the old bone transformation behaviour or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLegacyTransform",
    "typings": [
      "(this: Entity, enabled: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the layer weight. This influences how strongly the animation should be overriding the normal animations of the entity.\n",
      "@name EntityFuncs:SetLayerWeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLayerWeight",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@param {number} weight - The new layer weight.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLayerWeight",
    "typings": [
      "(this: Entity, layerID: number, weight: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the priority of given layer.\n",
      "@name EntityFuncs:SetLayerPriority",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLayerPriority",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@param {number} priority - The new priority of the layer.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLayerPriority",
    "typings": [
      "(this: Entity, layerID: number, priority: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the layer playback rate. See also @EntityFuncs:SetLayerDuration.\n",
      "@name EntityFuncs:SetLayerPlaybackRate",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLayerPlaybackRate",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@param {number} rate - The new playback rate.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLayerPlaybackRate",
    "typings": [
      "(this: Entity, layerID: number, rate: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the duration of given layer. This internally overrides the @EntityFuncs:SetLayerPlaybackRate.\n",
      "@name EntityFuncs:SetLayerDuration",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLayerDuration",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@param {number} duration - The new duration of the layer in seconds.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLayerDuration",
    "typings": [
      "(this: Entity, layerID: number, duration: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the layer should loop or not.\n",
      "@name EntityFuncs:SetLayerLooping",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLayerLooping",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@param {boolean} loop - Whether the layer should loop or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLayerLooping",
    "typings": [
      "(this: Entity, layerID: number, loop: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the animation cycle/frame of given layer.\n",
      "@name EntityFuncs:SetLayerCycle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLayerCycle",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@param {number} cycle - The new animation cycle/frame for given layer.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLayerCycle",
    "typings": [
      "(this: Entity, layerID: number, cycle: number): void"
    ]
  },
  {
    "comments": [
      "@name EntityFuncs:SetLayerBlendOut",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLayerBlendOut",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@param {number} blendOut - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLayerBlendOut",
    "typings": [
      "(this: Entity, layerID: number, blendOut: number): void"
    ]
  },
  {
    "comments": [
      "@name EntityFuncs:SetLayerBlendIn",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLayerBlendIn",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@param {number} blendIn - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLayerBlendIn",
    "typings": [
      "(this: Entity, layerID: number, blendIn: number): void"
    ]
  },
  {
    "comments": [
      "\nThis allows the entity to be lag compensated during @Player:LagCompensation.\nAs a side note for parented entities, if your entity can be shot at, keep in mind that its collision bounds need to be bigger than the bone's hitbox the entity is parented to, or hull/line traces ( such as the crowbar attack or bullets ) might not hit at all.\n",
      "@name EntityFuncs:SetLagCompensated",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetLagCompensated",
      "@note Players are lag compensated by default and there's no need to call this function for them.\nIt's best to not enable lag compensation on parented entities, as the system does not handle it that well ( they will be moved back but then the entity will lag behind ).\nParented entities move back with the parent if it's lag compensated, so if you are making some kind of armor piece you shouldn't do anything.",
      "@param {Entity} this - no description",
      "@param {boolean} enable - Whether the entity should be lag compensated or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetLagCompensated",
    "typings": [
      "(this: Entity, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets Hammer key values on an entity.\nYou can look up which entities have what key values on the [Valve Developer Community](https://developer.valvesoftware.com/wiki/) on entity pages.\nA  list of basic entities can be found [here](https://developer.valvesoftware.com/wiki/List_of_entities).\nAlternatively you can look at the .fgd files shipped with Garry's Mod in the bin/ folder with a text editor to see the key values as they appear in Hammer.\n",
      "@name EntityFuncs:SetKeyValue",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetKeyValue",
      "@param {Entity} this - no description",
      "@param {string} key - The internal key name",
      "@param {string} value - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetKeyValue",
    "typings": [
      "(this: Entity, key: string, value: string): void"
    ]
  },
  {
    "comments": [
      "\nEnables or disable the inverse kinematic usage of this entity.\n",
      "@name EntityFuncs:SetIK",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetIK",
      "@param {Entity} this - no description",
      "@param {boolean} useIK - The state of the IK.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetIK",
    "typings": [
      "(this: Entity, useIK?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the health of the entity.\n",
      "@name EntityFuncs:SetHealth",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetHealth",
      "@note You may want to take @EntityFuncs:GetMaxHealth into account when calculating what to set health to, in case a gamemode has a different max health than 100.",
      "@param {Entity} this - no description",
      "@param {number} newHealth - New health value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetHealth",
    "typings": [
      "(this: Entity, newHealth: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the current Hitbox set for the entity.\n",
      "@name EntityFuncs:SetHitboxSet",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetHitboxSet",
      "@param {Entity} this - no description",
      "@param {number} id - The new hitbox set to set. Can be a name as a @string type, or the ID as a @number type.\nIf the operation failed, the function will silently fail.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetHitboxSet",
    "typings": [
      "(this: Entity, id: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the ground the entity is standing on.\n",
      "@name EntityFuncs:SetGroundEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetGroundEntity",
      "@param {Entity} this - no description",
      "@param {Entity} ground - The ground entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetGroundEntity",
    "typings": [
      "(this: Entity, ground: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the gravity multiplier of the entity.\n",
      "@name EntityFuncs:SetGravity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetGravity",
      "@bug #3648 This function is not predicted.",
      "@param {Entity} this - no description",
      "@param {number} gravityMultiplier - Value which specifies the gravity multiplier.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetGravity",
    "typings": [
      "(this: Entity, gravityMultiplier: number): void"
    ]
  },
  {
    "comments": [
      "\nSets how much friction an entity has when sliding against a surface. Entities default to 1 (100%) and can be higher or even negative.\n",
      "@name EntityFuncs:SetFriction",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetFriction",
      "@note Works only for MOVETYPE_STEP entities.",
      "@bug #1395 This has no effect on players.",
      "@param {Entity} this - no description",
      "@param {number} friction - Friction multiplier",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetFriction",
    "typings": [
      "(this: Entity, friction: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the flex weight.\n",
      "@name EntityFuncs:SetFlexWeight",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetFlexWeight",
      "@param {Entity} this - no description",
      "@param {number} flex - The ID of the flex to modify weight of",
      "@param {number} weight - The new weight to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetFlexWeight",
    "typings": [
      "(this: Entity, flex: number, weight: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the flex scale of the entity.\n",
      "@name EntityFuncs:SetFlexScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetFlexScale",
      "@bug #1779 This does not work on @ClientsideModel functions or @ClientsideRagdoll functions.",
      "@param {Entity} this - no description",
      "@param {number} scale - The new flex scale to set to",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetFlexScale",
    "typings": [
      "(this: Entity, scale: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the position an entity's eyes look toward.\n",
      "@name EntityFuncs:SetEyeTarget",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetEyeTarget",
      "@param {Entity} this - no description",
      "@param {Vector} pos - The world position the entity is looking toward.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetEyeTarget",
    "typings": [
      "(this: Entity, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nAllows you to set the Start or End entity attachment for the rope.\n",
      "@name EntityFuncs:SetEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetEntity",
      "@param {Entity} this - no description",
      "@param {string} name - The name of the variable to modify.\nAccepted names are StartEntity and EndEntity.",
      "@param {Entity} entity - The entity to apply to the specific attachment.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetEntity",
    "typings": [
      "(this: Entity, name: string, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the elasticity of this entity, used by some flying entities such as the Helicopter NPC to determine how much it should bounce around when colliding.\n",
      "@name EntityFuncs:SetElasticity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetElasticity",
      "@param {Entity} this - no description",
      "@param {number} elasticity - The elasticity to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetElasticity",
    "typings": [
      "(this: Entity, elasticity: number): void"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nSets the specified vector on the entity's datatable.\n",
      "@name EntityFuncs:SetDTVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetDTVector",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 31.",
      "@param {Vector} vec - The vector to write on the entity's datatable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetDTVector",
    "typings": [
      "(this: Entity, key: number, vec: Vector): void"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nSets the specified string on the entity's datatable.\n",
      "@name EntityFuncs:SetDTString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetDTString",
      "@internal",
      "@note The length of these strings are capped at 512 characters.",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 3.",
      "@param {string} str - The string to write on the entity's datatable, can't be more than 512 characters per string.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetDTString",
    "typings": [
      "(this: Entity, key: number, str: string): void"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nSets the specified integer on the entity's datatable.\n",
      "@name EntityFuncs:SetDTInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetDTInt",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 31.",
      "@param {number} integer - The integer to write on the entity's datatable. This will be cast to a 32-bit signed integer internally.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetDTInt",
    "typings": [
      "(this: Entity, key: number, integer: number): void"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nSets the specified float on the entity's datatable.\n",
      "@name EntityFuncs:SetDTFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetDTFloat",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 31.",
      "@param {number} float - The float to write on the entity's datatable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetDTFloat",
    "typings": [
      "(this: Entity, key: number, float: number): void"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nSets the specified entity on this entity's datatable.\n",
      "@name EntityFuncs:SetDTEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetDTEntity",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 31.",
      "@param {Entity} ent - The entity to write on this entity's datatable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetDTEntity",
    "typings": [
      "(this: Entity, key: number, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nSets the specified bool on the entity's datatable.\n",
      "@name EntityFuncs:SetDTBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetDTBool",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 31.",
      "@param {boolean} bool - The boolean to write on the entity's metatable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetDTBool",
    "typings": [
      "(this: Entity, key: number, bool: boolean): void"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nSets the specified angle on the entity's datatable.\n",
      "@name EntityFuncs:SetDTAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetDTAngle",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 31.",
      "@param {Angle} ang - The angle to write on the entity's datatable.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetDTAngle",
    "typings": [
      "(this: Entity, key: number, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the progress of the current animation to a specific value between 0 and 1.\n",
      "@name EntityFuncs:SetCycle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetCycle",
      "@bug #3038 This does not work with viewmodels.",
      "@param {Entity} this - no description",
      "@param {number} value - The desired cycle value",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetCycle",
    "typings": [
      "(this: Entity, value: number): void"
    ]
  },
  {
    "comments": [
      "\nMarks the entity to call @GamemodeHooks:ShouldCollide.\n",
      "@name EntityFuncs:SetCustomCollisionCheck",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetCustomCollisionCheck",
      "@param {Entity} this - no description",
      "@param {boolean} enable - Enable or disable the custom collision check",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetCustomCollisionCheck",
    "typings": [
      "(this: Entity, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the creator of the SENT.\n",
      "@name EntityFuncs:SetCreator",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetCreator",
      "@param {Entity} this - no description",
      "@param {Player} ply - The creator",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetCreator",
    "typings": [
      "(this: Entity, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of an entity.\n",
      "@name EntityFuncs:SetColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetColor",
      "@param {Entity} this - no description",
      "@param {Color} color - The color to set. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetColor",
    "typings": [
      "(this: Entity, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the entity's collision group.\n",
      "@name EntityFuncs:SetCollisionGroup",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetCollisionGroup",
      "@param {Entity} this - no description",
      "@param {COLLISION_GROUP} group - Collision group of the entity, see @COLLISION_GROUP enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetCollisionGroup",
    "typings": [
      "(this: Entity, group: COLLISION_GROUP): void"
    ]
  },
  {
    "comments": [
      "\nSets the collision bounds for the entity, which are used for triggers ( @EntityFuncs:SetTrigger, @EntityHooks:Touch ), determining if rendering is necessary clientside, and collision ( If @EntityFuncs:SetSolid set as [SOLID_BBOX](https://wiki.garrysmod.com/page/Enums/SOLID) ).\nInput bounds are in world coordinates!\nSee also @EntityFuncs:SetCollisionBounds.\n",
      "@name EntityFuncs:SetCollisionBoundsWS",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetCollisionBoundsWS",
      "@param {Entity} this - no description",
      "@param {Vector} vec1 - The first vector of the bounds.",
      "@param {Vector} vec2 - The second vector of the bounds.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetCollisionBoundsWS",
    "typings": [
      "(this: Entity, vec1: Vector, vec2: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the collision bounds for the entity, which are used for triggers ( @EntityFuncs:SetTrigger, @EntityHooks:Touch ), determining if rendering is necessary clientside, and collision ( If @EntityFuncs:SetSolid set as [SOLID_BBOX](https://wiki.garrysmod.com/page/Enums/SOLID) ).\nInput bounds are relative to @EntityFuncs:GetPos!\nSee also @EntityFuncs:SetCollisionBoundsWS.\n",
      "@name EntityFuncs:SetCollisionBounds",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetCollisionBounds",
      "@param {Entity} this - no description",
      "@param {Vector} mins - The minimum vector of the bounds. The vector must be smaller than second argument on all axises.",
      "@param {Vector} maxs - The maximum vector of the bounds. The vector must be bigger than first argument on all axises.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetCollisionBounds",
    "typings": [
      "(this: Entity, mins: Vector, maxs: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the bone position and angles.\n",
      "@name EntityFuncs:SetBonePosition",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetBonePosition",
      "@param {Entity} this - no description",
      "@param {number} bone - The bone ID to manipulate",
      "@param {Vector} pos - The position to set",
      "@param {Angle} ang - The angles to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetBonePosition",
    "typings": [
      "(this: Entity, bone: number, pos: Vector, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the bone matrix of given bone to given matrix. See also @EntityFuncs:GetBoneMatrix.\nDespite existing serverside, it does nothing.\n",
      "@name EntityFuncs:SetBoneMatrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetBoneMatrix",
      "@param {Entity} this - no description",
      "@param {number} boneid - The ID of the bone",
      "@param {VMatrix} matrix - The matrix to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetBoneMatrix",
    "typings": [
      "(this: Entity, boneid: number, matrix: VMatrix): void"
    ]
  },
  {
    "comments": [
      "\nSets the specified value on the bone controller with the given ID of this entity, it's used in HL1 to change the head rotation of NPCs, turret aiming and so on.\n",
      "@name EntityFuncs:SetBoneController",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetBoneController",
      "@note This is the precursor of pose parameters, and only works for Half Life 1: Source models supporting it.",
      "@param {Entity} this - no description",
      "@param {number} boneControllerID - The ID of the bone controller to set the value to.\nGoes from 0 to 3.",
      "@param {number} value - The value to set on the specified bone controller.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetBoneController",
    "typings": [
      "(this: Entity, boneControllerID: number, value: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the bodygroups from a string. A convenience function for @EntityFuncs:SetBodygroup.\n",
      "@name EntityFuncs:SetBodyGroups",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetBodyGroups",
      "@param {Entity} this - no description",
      "@param {string} bodygroups - Body groups to set. Each single-digit number in the string represents a separate bodygroup. **This make it impossible to set any bodygroup to a value higher than 9!** For that you need to use @EntityFuncs:SetBodygroup.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetBodyGroups",
    "typings": [
      "(this: Entity, bodygroups: string): void"
    ]
  },
  {
    "comments": [
      "\nSets an entities' bodygroup.\n",
      "@name EntityFuncs:SetBodygroup",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetBodygroup",
      "@param {Entity} this - no description",
      "@param {number} bodygroup - The id of the bodygroup you're setting. Starts from 0.",
      "@param {number} value - The value you're setting the bodygroup to. Starts from 0.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetBodygroup",
    "typings": [
      "(this: Entity, bodygroup: number, value: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the blood color this entity uses.\n",
      "@name EntityFuncs:SetBloodColor",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetBloodColor",
      "@param {Entity} this - no description",
      "@param {BLOOD_COLOR} bloodColor - An integer corresponding to @BLOOD_COLOR enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetBloodColor",
    "typings": [
      "(this: Entity, bloodColor: BLOOD_COLOR): void"
    ]
  },
  {
    "comments": [
      "\nToggles automatic frame advancing for animated sequences on an entity.\nThis has the same effect as setting the **ENT.AutomaticFrameAdvance** property.\n",
      "@name EntityHooks:SetAutomaticFrameAdvance",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/SetAutomaticFrameAdvance",
      "@param {_ENTITY} this - no description",
      "@param {boolean} enable - Whether or not to set automatic frame advancing.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "SetAutomaticFrameAdvance",
    "typings": [
      "(this: _ENTITY, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nParents the sprite to an attachment on another model.\nWorks only on env_sprite.\nDespite existing on client, it doesn't actually do anything on client.\n",
      "@name EntityFuncs:SetAttachment",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetAttachment",
      "@param {Entity} this - no description",
      "@param {Entity} ent - The entity to attach/parent to",
      "@param {number} attachment - The attachment ID to parent to",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetAttachment",
    "typings": [
      "(this: Entity, ent: Entity, attachment: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the time (relative to @CurTime function) of the current animation frame, which is used to determine @EntityFuncs:GetCycle.\n",
      "@name EntityFuncs:SetAnimTime",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetAnimTime",
      "@param {Entity} this - no description",
      "@param {number} time - The current animation time.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetAnimTime",
    "typings": [
      "(this: Entity, time: number): void"
    ]
  },
  {
    "comments": [
      "\nSets a player's third-person animation. Mainly used by @Weapon types to start the player's weapon attack and reload animations.\n",
      "@name EntityFuncs:SetAnimation",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetAnimation",
      "@param {Entity} this - no description",
      "@param {PLAYER_ANIM} playerAnim - Player animation, see @PLAYER_ANIM enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetAnimation",
    "typings": [
      "(this: Entity, playerAnim: PLAYER_ANIM): void"
    ]
  },
  {
    "comments": [
      "\nSets the angles of the entity.\n",
      "@name EntityFuncs:SetAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetAngles",
      "@note To set a player's angles, use @Player:SetEyeAngles instead.",
      "@param {Entity} this - no description",
      "@param {Angle} angles - The new angles.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetAngles",
    "typings": [
      "(this: Entity, angles: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the entity's velocity.\n",
      "@name EntityFuncs:SetAbsVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SetAbsVelocity",
      "@note Actually binds to CBaseEntity::SetLocalVelocity() which sets the entity's velocity due to movement in the world from forces such as gravity. Does not include velocity from entity-on-entity collision or other world movement.",
      "@param {Entity} this - no description",
      "@param {Vector} velocity - The new velocity to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SetAbsVelocity",
    "typings": [
      "(this: Entity, velocity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nReturns length of currently played sequence.\n",
      "@name EntityFuncs:SequenceDuration",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SequenceDuration",
      "@bug #2783 This will return incorrect results for weapons and viewmodels clientside in thirdperson.",
      "@param {Entity} this - no description",
      "@param {number} seqid - A sequence ID to return the length specific sequence of instead of the entity's main/currently playing sequence.",
      "@returns {number} - The length of the sequence"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SequenceDuration",
    "typings": [
      "(this: Entity, seqid?: number): number"
    ]
  },
  {
    "comments": [
      "\nSends sequence animation to the view model. It is recommended to use this for view model animations, instead of @EntityFuncs:ResetSequence.\nThis function is only usable on view models.\n",
      "@name EntityFuncs:SendViewModelMatchingSequence",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SendViewModelMatchingSequence",
      "@bug #3229 Sequences 0-6 will not be looped regardless if they're marked as a looped animation or not.",
      "@param {Entity} this - no description",
      "@param {number} seq - The sequence ID returned by @EntityFuncs:LookupSequence or  @EntityFuncs:SelectWeightedSequence.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SendViewModelMatchingSequence",
    "typings": [
      "(this: Entity, seq: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the sequence ID corresponding to given activity ID, and uses the provided seed for random selection. The seed should be the same server-side and client-side if used in a predicted environment.\nSee @EntityFuncs:SelectWeightedSequence for a provided-seed version of this function.\n",
      "@name EntityFuncs:SelectWeightedSequenceSeeded",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SelectWeightedSequenceSeeded",
      "@param {Entity} this - no description",
      "@param {ACT} act - The activity ID, see @ACT enum.",
      "@param {number} seed - The seed to use for randomly selecting a sequence in the case the activity ID has multiple sequences bound to it. @EntityFuncs:SelectWeightedSequence uses the same seed as @util.SharedRandom internally for this.",
      "@returns {number} - The sequence ID"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SelectWeightedSequenceSeeded",
    "typings": [
      "(this: Entity, act: ACT, seed: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns sequence ID corresponding to given activity ID.\nOpposite of @EntityFuncs:GetSequenceActivity.\nSimilar to @EntityFuncs:LookupSequence.\nSee also @EntityFuncs:SelectWeightedSequenceSeeded.\n",
      "@name EntityFuncs:SelectWeightedSequence",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/SelectWeightedSequence",
      "@param {Entity} this - no description",
      "@param {ACT} act - The activity ID, see @ACT enum.",
      "@returns {number} - The sequence ID"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "SelectWeightedSequence",
    "typings": [
      "(this: Entity, act: ACT): number"
    ]
  },
  {
    "comments": [
      "\nSet the schedule we should be playing right now.\n",
      "@name EntityHooks:SelectSchedule",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/SelectSchedule",
      "@param {_ENTITY} this - no description",
      "@param {number} iNPCState - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "SelectSchedule",
    "typings": [
      "(this: _ENTITY, iNPCState: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a schedule is finished.\n",
      "@name EntityHooks:ScheduleFinished",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/ScheduleFinished",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "ScheduleFinished",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nCalled every think on running task.\nThe actual task function should tell us when the task is finished.\n",
      "@name EntityHooks:RunTask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/RunTask",
      "@param {_ENTITY} this - no description",
      "@param {table} task - The task to run",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "RunTask",
    "typings": [
      "(this: _ENTITY, task: table): void"
    ]
  },
  {
    "comments": [
      "\nCalled when an engine task is ran on the entity.\n",
      "@name EntityHooks:RunEngineTask",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/RunEngineTask",
      "@note This hook only exists for **ai** type SENTs",
      "@param {_ENTITY} this - no description",
      "@param {number} taskID - The task ID, see [ai_task.h](https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/mp/src/game/server/ai_task.h#L89-L502)",
      "@param {number} taskData - The task data.",
      "@returns {boolean} - true to prevent default action"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "RunEngineTask",
    "typings": [
      "(this: _ENTITY, taskID: number, taskData: number): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled from the engine every 0.1 seconds.\n",
      "@name EntityHooks:RunAI",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/RunAI",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "RunAI",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nRestarts the entity's animation gesture. If the given gesture is already playing, it will reset it and play it from the beginning.\n",
      "@name EntityFuncs:RestartGesture",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RestartGesture",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites.",
      "@param {Entity} this - no description",
      "@param {ACT} activity - The activity number to send to the entity. See @ACT enum and @EntityFuncs:GetSequenceActivity",
      "@param {boolean} addIfMissing - Add/start the gesture to if it has not been yet started.",
      "@param {boolean} autokill - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RestartGesture",
    "typings": [
      "(this: Entity, activity: ACT, addIfMissing?: boolean, autokill?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nMakes the entity/weapon respawn.\nOnly usable on HL2 pickups and any weapons. Seems to be buggy with weapons.\nVery unreliable.\n",
      "@name EntityFuncs:Respawn",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Respawn",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Respawn",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nReset entity sequence info such as playback rate, ground speed, last event check, etc.\n",
      "@name EntityFuncs:ResetSequenceInfo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/ResetSequenceInfo",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "ResetSequenceInfo",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nPlays an animation on the entity. This may not always work on engine entities.\n",
      "@name EntityFuncs:ResetSequence",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/ResetSequence",
      "@note This will not work properly if called directly after calling @EntityFuncs:SetModel. Consider waiting until the next Tick.\nWill not work on players due to the animations being reset every frame by the base gamemode animation system. See @GamemodeHooks:CalcMainActivity.\nFor custom scripted entities you will want to apply example from @EntityHooks:Think to make animations work.",
      "@note If set to a string, the function will automatically call @EntityFuncs:LookupSequence to retrieve the sequence ID as a number.",
      "@warning This will not reset the animation on viewmodels, use @EntityFuncs:SendViewModelMatchingSequence instead.",
      "@param {Entity} this - no description",
      "@param {number} sequence - The sequence to play. Also accepts strings.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "ResetSequence",
    "typings": [
      "(this: Entity, sequence: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled instead of the engine drawing function of the entity. This hook works on any entity (scripted or not) it is applied on.\nThis does not work on \"physgun_beam\", use @GamemodeHooks:DrawPhysgunBeam instead.\n",
      "@name EntityHooks:RenderOverride",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/RenderOverride",
      "@note As a downside of this implementation, only one RenderOverride may be applied at a time.",
      "@bug #3292 Drawing a viewmodel in this function will cause @GamemodeHooks:PreDrawViewModel, @WeaponHooks:PreDrawViewModel, @WeaponHooks:ViewModelDrawn, @GamemodeHooks:PostDrawViewModel, and @WeaponHooks:PostDrawViewModel to be called twice.",
      "@bug #3299 This is called before PrePlayerDraw for players. If this function exists at all on a player, their worldmodel will always be rendered regardless of PrePlayerDraw's return.",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "RenderOverride",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nRemoves solid flag(s) from the entity.\n",
      "@name EntityFuncs:RemoveSolidFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RemoveSolidFlags",
      "@param {Entity} this - no description",
      "@param {FSOLID} flags - The flag(s) to remove, see @FSOLID enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RemoveSolidFlags",
    "typings": [
      "(this: Entity, flags: FSOLID): void"
    ]
  },
  {
    "comments": [
      "\nRemoves and stops the gesture with given activity.\n",
      "@name EntityFuncs:RemoveGesture",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RemoveGesture",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {ACT} activity - The activity remove. See @ACT enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RemoveGesture",
    "typings": [
      "(this: Entity, activity: ACT): void"
    ]
  },
  {
    "comments": [
      "\nRemoves a @PhysObj typeect from the entity's motion controller so that @EntityHooks:PhysicsSimulate will no longer be called for given @PhysObj typeect.\nYou must first create a motion controller with @EntityFuncs:StartMotionController.\n",
      "@name EntityFuncs:RemoveFromMotionController",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RemoveFromMotionController",
      "@note Only works on a scripted @Entity type of anim type",
      "@param {Entity} this - no description",
      "@param {PhysObj} physObj - The @PhysObj type to remove from the motion controller.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RemoveFromMotionController",
    "typings": [
      "(this: Entity, physObj: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nRemoves specified flag(s) from the entity\n",
      "@name EntityFuncs:RemoveFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RemoveFlags",
      "@param {Entity} this - no description",
      "@param {FL} flag - The flag(s) to remove, see @FL enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RemoveFlags",
    "typings": [
      "(this: Entity, flag: FL): void"
    ]
  },
  {
    "comments": [
      "\nRemoves specified engine flag\n",
      "@name EntityFuncs:RemoveEFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RemoveEFlags",
      "@param {Entity} this - no description",
      "@param {EFL} flag - The flag to remove, see @EFL enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RemoveEFlags",
    "typings": [
      "(this: Entity, flag: EFL): void"
    ]
  },
  {
    "comments": [
      "\nRemoves an engine effect applied to an entity.\n",
      "@name EntityFuncs:RemoveEffects",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RemoveEffects",
      "@param {Entity} this - no description",
      "@param {EF} effect - The effect to remove, see @EF enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RemoveEffects",
    "typings": [
      "(this: Entity, effect: EF): void"
    ]
  },
  {
    "comments": [
      "\nRemoves a function previously added via @EntityFuncs:CallOnRemove.\n",
      "@name EntityFuncs:RemoveCallOnRemove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RemoveCallOnRemove",
      "@param {Entity} this - no description",
      "@param {string} identifier - Identifier of the function within CallOnRemove",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RemoveCallOnRemove",
    "typings": [
      "(this: Entity, identifier: string): void"
    ]
  },
  {
    "comments": [
      "\nRemoves a callback previously added with @EntityFuncs:AddCallback\n",
      "@name EntityFuncs:RemoveCallback",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RemoveCallback",
      "@param {Entity} this - no description",
      "@param {string} hook - The hook name to remove. See [Entity Callbacks](https://wiki.garrysmod.com/page/Entity%20Callbacks)",
      "@param {number} callbackid - The callback id previously retrieved with the return of @EntityFuncs:AddCallback or @EntityFuncs:GetCallbacks",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RemoveCallback",
    "typings": [
      "(this: Entity, hook: string, callbackid: number): void"
    ]
  },
  {
    "comments": [
      "\nRemoves and stops all gestures.\n",
      "@name EntityFuncs:RemoveAllGestures",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RemoveAllGestures",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RemoveAllGestures",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all decals from the entities surface.\n",
      "@name EntityFuncs:RemoveAllDecals",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RemoveAllDecals",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RemoveAllDecals",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the entity it is used on.\n",
      "@name EntityFuncs:Remove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Remove",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Remove",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nMakes the physics objects follow the set bone positions. This is used alongside Kinect in @EntityFuncs:SetRagdollBuildFunction, for more info see ragdoll_motion entity.\n",
      "@name EntityFuncs:RagdollUpdatePhysics",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RagdollUpdatePhysics",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RagdollUpdatePhysics",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the function to build the ragdoll. This is used alongside Kinect in @EntityFuncs:SetRagdollBuildFunction, for more info see ragdoll_motion entity.\n",
      "@name EntityFuncs:RagdollStopControlling",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RagdollStopControlling",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RagdollStopControlling",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nNormalizes the ragdoll. This is used alongside Kinect in @EntityFuncs:SetRagdollBuildFunction, for more info see ragdoll_motion entity.\n",
      "@name EntityFuncs:RagdollSolve",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/RagdollSolve",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "RagdollSolve",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled before the duplicator copies the entity.\nIf you are looking for a way to make the duplicator spawn another entity when duplicated. ( For example, you duplicate a \"prop_physics\", but you want the duplicator to spawn \"prop_physics_my\" ), you should add prop_physics.ClassOverride = \"prop_physics_my\". The duplication table should be also stored on that prop_physics, not on prop_physics_my.\n",
      "@name EntityHooks:PreEntityCopy",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/PreEntityCopy",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "PreEntityCopy",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nPrecaches gibs for the entity's model.\nNormally this function should be ran when the entity is spawned, for example the @EntityHooks:Initialize, after @EntityFuncs:SetModel is called.\nThis is required for @EntityFuncs:GibBreakServer and @EntityFuncs:GibBreakClient to work.\n",
      "@name EntityFuncs:PrecacheGibs",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PrecacheGibs",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PrecacheGibs",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the @duplicator library pastes the entity, after the bone/entity modifiers have been applied to the entity.\nThis hook is called after @EntityHooks:OnDuplicated.\n",
      "@name EntityHooks:PostEntityPaste",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/PostEntityPaste",
      "@note The keys of each value in this table are the original entity indexes when the duplication was created. This can be utilized to restore entity references that don't get saved in duplications.",
      "@warning This may not be a valid player in some circumstances. For example, when a save is loaded from the main menu, this hook will be called before the player is spawned. This argument will be a NULL entity in that case.",
      "@bug  This will be nil for invalid players.",
      "@param {_ENTITY} this - no description",
      "@param {Player} ply - The player who pasted the entity.",
      "@param {Entity} ent - The entity itself. Same as 'self'.",
      "@param {table} createdEntities - All entities that are within the placed dupe.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "PostEntityPaste",
    "typings": [
      "(this: _ENTITY, ply: Player, ent: Entity, createdEntities: table): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the duplicator finished copying the entity.\nSee also @EntityHooks:PreEntityCopy and @EntityHooks:PostEntityPaste.\n",
      "@name EntityHooks:PostEntityCopy",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/PostEntityCopy",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "PostEntityCopy",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nChanges an entities angles so that it faces the target entity.\n",
      "@name EntityFuncs:PointAtEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PointAtEntity",
      "@param {Entity} this - no description",
      "@param {Entity} target - The entity to face.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PointAtEntity",
    "typings": [
      "(this: Entity, target: Entity): void"
    ]
  },
  {
    "comments": [
      "\nMakes the entity play a .vcd scene.\n",
      "@name EntityFuncs:PlayScene",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PlayScene",
      "@param {Entity} this - no description",
      "@param {string} scene - Filepath to scene",
      "@param {number} delay - Delay in seconds until the scene starts playing.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PlayScene",
    "typings": [
      "(this: Entity, scene: string, delay?: number): void"
    ]
  },
  {
    "comments": [
      "\nWakes up the entity's physics object\n",
      "@name EntityFuncs:PhysWake",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PhysWake",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PhysWake",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the physics of the entity are updated.\n",
      "@name EntityHooks:PhysicsUpdate",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/PhysicsUpdate",
      "@warning This hook won't be called if the Entity's @PhysObj type goes asleep",
      "@param {_ENTITY} this - no description",
      "@param {PhysObj} phys - The physics object of the entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "PhysicsUpdate",
    "typings": [
      "(this: _ENTITY, phys: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nCalled from the Entity's motion controller to simulate physics.\nThis will only be called after using @EntityFuncs:StartMotionController on a scripted entity of \"anim\" type.\n",
      "@name EntityHooks:PhysicsSimulate",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/PhysicsSimulate",
      "@note This hook can work on the CLIENT if you call @EntityFuncs:StartMotionController and use @EntityFuncs:AddToMotionController on the physics objects you want to control",
      "@warning Do not use functions such as @PhysObj:EnableCollisions or @PhysObj:EnableGravity in this hook as they're very likely to crash your game. You may want to use @EntityHooks:PhysicsUpdate instead.",
      "@param {_ENTITY} this - no description",
      "@param {PhysObj} phys - The physics object of the entity.",
      "@param {number} deltaTime - Time since the last call.",
      "@returns {Vector} - Angular force",
      "@returns {Vector} - Linear force",
      "@returns {SIM} - One of the @SIM enum.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "PhysicsSimulate",
    "typings": [
      "(this: _ENTITY, phys: PhysObj, deltaTime: number): [Vector, Vector, SIM]"
    ]
  },
  {
    "comments": [
      "\nInitializes a static physics object of the entity using its [current model](https://wiki.garrysmod.com/page/Entity/GetModel). If successful, the previous physics object is removed.\nThis is what used by entities such as func_breakable, prop_dynamic, item_suitcharger, prop_thumper and npc_rollermine while it is in its \"buried\" state in the Half-Life 2 Campaign.\nIf the entity's current model has no physics mesh associated to it, no physics object will be created.\n",
      "@name EntityFuncs:PhysicsInitStatic",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PhysicsInitStatic",
      "@note This function will automatically call @EntityFuncs:SetSolid( solidType ).",
      "@bug  Clientside physics objects are broken and do not move properly in some cases. Physics objects should only created on the server or you will experience incorrect physgun beam position, prediction issues, and other unexpected behavior.",
      "@param {Entity} this - no description",
      "@param {SOLID} solidType - The solid type of the physics object to create, see @SOLID enum. Should be SOLID_VPHYSICS in most cases.",
      "@returns {boolean} - Returns true on success, false otherwise. This will fail if the entity's current model has no associated physics mesh."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PhysicsInitStatic",
    "typings": [
      "(this: Entity, solidType: SOLID): boolean"
    ]
  },
  {
    "comments": [
      "\nMakes the physics object of the entity a sphere.\n",
      "@name EntityFuncs:PhysicsInitSphere",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PhysicsInitSphere",
      "@note This function will automatically destroy any previous physics objects and call @EntityFuncs:SetSolid( SOLID_BBOX ) and @EntityFuncs:SetMoveType( MOVETYPE_VPHYSICS ).",
      "@bug  Clientside physics objects are broken and do not move properly in some cases. Physics objects should only created on the server or you will experience incorrect physgun beam position, prediction issues, and other unexpected behavior.",
      "@param {Entity} this - no description",
      "@param {number} radius - The radius of the sphere.",
      "@param {string} physmat - Physical material from [surfaceproperties.txt](https://github.com/Facepunch/garrysmod/blob/master/garrysmod/scripts/surfaceproperties.txt) or added with @physenv.AddSurfaceData.",
      "@returns {boolean} - Returns true on success, false otherwise"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PhysicsInitSphere",
    "typings": [
      "(this: Entity, radius: number, physmat: string): boolean"
    ]
  },
  {
    "comments": [
      "\nInitializes the entity's physics object as a physics shadow. Removes the previous physics object if successful. This is used internally for the Player's and NPC's physics object, and certain HL2 entities such as the crane.\nA physics shadow can be used to have static entities that never move by setting both arguments to false.\n",
      "@name EntityFuncs:PhysicsInitShadow",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PhysicsInitShadow",
      "@bug  Clientside physics objects are broken and do not move properly in some cases. Physics objects should only created on the server or you will experience incorrect physgun beam position, prediction issues, and other unexpected behavior.",
      "@param {Entity} this - no description",
      "@param {boolean} allowPhysicsMovement - Whether to allow the physics shadow to move under stress.",
      "@param {boolean} allowPhysicsRotation - Whether to allow the physics shadow to rotate under stress.",
      "@returns {boolean} - Return true on success, nil otherwise."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PhysicsInitShadow",
    "typings": [
      "(this: Entity, allowPhysicsMovement?: boolean, allowPhysicsRotation?: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nAn advanced version of @EntityFuncs:PhysicsInitConvex which initializes a physics object from multiple convex meshes. This should be used for physics objects with a custom shape which cannot be represented by a single convex mesh.\nIf successful, the previous physics object will be removed.\n",
      "@name EntityFuncs:PhysicsInitMultiConvex",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PhysicsInitMultiConvex",
      "@bug  Clientside physics objects are broken and do not move properly in some cases. Physics objects should only created on the server or you will experience incorrect physgun beam position, prediction issues, and other unexpected behavior.\nYou can use the following work-around for movement, though clientside collisions will still be broken.\n```\nfunction ENT:Think()\nif ( CLIENT ) then\nlocal physobj = self:GetPhysicsObject()\nif ( IsValid( physobj ) ) then\nphysobj:SetPos( self:GetPos() )\nphysobj:SetAngles( self:GetAngles() )\nend\nend\nend\n```",
      "@param {Entity} this - no description",
      "@param {table} vertices - A table consisting of tables of @Vector types. Each sub-table defines a set of points to be used in the computation of one convex mesh.",
      "@returns {boolean} - Returns true on success, nil otherwise"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PhysicsInitMultiConvex",
    "typings": [
      "(this: Entity, vertices: table): boolean"
    ]
  },
  {
    "comments": [
      "\nInitializes the physics mesh of the entity with a convex mesh defined by a table of points. The resulting mesh is the [convex hull](https://en.wikipedia.org/wiki/Convex%20hull) of all the input points. If successful, the previous physics object will be removed.\nThis is the standard way of creating moving physics objects with a custom convex shape. For more complex, concave shapes, see @EntityFuncs:PhysicsInitMultiConvex.\n",
      "@name EntityFuncs:PhysicsInitConvex",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PhysicsInitConvex",
      "@bug #3301 This will crash if given all @Vector function(0,0,0)s.",
      "@bug  Clientside physics objects are broken and do not move properly in some cases. Physics objects should only created on the server or you will experience incorrect physgun beam position, prediction issues, and other unexpected behavior.",
      "@param {Entity} this - no description",
      "@param {Vector[]} points - A table of eight @Vector types, in local coordinates, to be used in the computation of the convex mesh. Order does not matter.",
      "@returns {boolean} - Returns true on success, nil otherwise."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PhysicsInitConvex",
    "typings": [
      "(this: Entity, points: Vector[]): boolean"
    ]
  },
  {
    "comments": [
      "\nMakes the physics object of the entity a AABB.\n",
      "@name EntityFuncs:PhysicsInitBox",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PhysicsInitBox",
      "@note If the volume of the resulting box is 0 (the mins and maxs are the same), the mins and maxs will be changed to @Vector function( -1, -1, -1 ) and @Vector function( 1, 1, 1 ), respectively.",
      "@note This function will automatically destroy any previous physics objects if successful and call @EntityFuncs:SetSolid( SOLID_BBOX ), @EntityFuncs:SetMoveType( MOVETYPE_VPHYSICS ), and @EntityFuncs:SetCollisionBounds( mins, maxs ).",
      "@bug  Clientside physics objects are broken and do not move properly in some cases. Physics objects should only created on the server or you will experience incorrect physgun beam position, prediction issues, and other unexpected behavior.",
      "@param {Entity} this - no description",
      "@param {Vector} mins - The minimum position of the box. This is automatically ordered with the maxs.",
      "@param {Vector} maxs - The maximum position of the box. This is automatically ordered with the mins.",
      "@returns {boolean} - Returns true on success, nil otherwise. This fails when the game cannot create any more @PhysCollide types."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PhysicsInitBox",
    "typings": [
      "(this: Entity, mins: Vector, maxs: Vector): boolean"
    ]
  },
  {
    "comments": [
      "\nInitializes the [physics object](https://wiki.garrysmod.com/page/Entity/GetPhysicsObject) of the entity using its current [model](https://wiki.garrysmod.com/page/Entity/GetModel). Deletes the previous physics object if it existed and the new object creation was successful.\nIf the entity's current model has no physics mesh associated to it, no physics object will be created and the previous object will still exist, if applicable.\n",
      "@name EntityFuncs:PhysicsInit",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PhysicsInit",
      "@note When called clientside, this will not create a valid @PhysObj type if the model hasn't been [precached](https://wiki.garrysmod.com/page/util/PrecacheModel) serverside.",
      "@note If successful, this function will automatically call @EntityFuncs:SetSolid( solidType ) and @EntityFuncs:SetSolidFlags( 0 ).",
      "@note Using SOLID_NONE will only delete the current physics object - it does not create a new one.",
      "@bug  Clientside physics objects are broken and do not move properly in some cases. Physics objects should only created on the server or you will experience incorrect physgun beam position, prediction issues, and other unexpected behavior.",
      "@param {Entity} this - no description",
      "@param {SOLID} solidType - The solid type of the physics object to create, see @SOLID enum. Should be SOLID_VPHYSICS in most cases.",
      "@returns {boolean} - Returns true on success, false otherwise."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PhysicsInit",
    "typings": [
      "(this: Entity, solidType: SOLID): boolean"
    ]
  },
  {
    "comments": [
      "\nInitializes the physics mesh of the entity from a triangle soup defined by a table of vertices. The resulting mesh is hollow, may contain holes, and always has a volume of 0.\nWhile this is very useful for static geometry such as terrain displacements, it is advised to use @EntityFuncs:PhysicsInitConvex or @EntityFuncs:PhysicsInitMultiConvex for moving solid objects instead.\n@EntityFuncs:EnableCustomCollisions needs to be called if you want players to collide with the entity correctly.\n",
      "@name EntityFuncs:PhysicsFromMesh",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PhysicsFromMesh",
      "@param {Entity} this - no description",
      "@param {MeshVertex} vertices - A table consisting of @MeshVertex structure (only the *pos* element is taken into account). Every 3 vertices define a triangle in the physics mesh.",
      "@returns {boolean} - Returns true on success, nil otherwise."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PhysicsFromMesh",
    "typings": [
      "(this: Entity, vertices: MeshVertex): boolean"
    ]
  },
  {
    "comments": [
      "\nDestroys the current physics object of an entity.\n",
      "@name EntityFuncs:PhysicsDestroy",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PhysicsDestroy",
      "@note Cannot be used on a ragdoll or the world entity.",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PhysicsDestroy",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity collides with anything. The move type and solid type must be VPHYSICS for the hook to be called.\n",
      "@name EntityHooks:PhysicsCollide",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/PhysicsCollide",
      "@note If you want to use this hook on default/engine/non-Lua entites ( like prop_physics ), use @EntityFuncs:AddCallback instead! This page describes a hook for Lua entities",
      "@param {_ENTITY} this - no description",
      "@param {CollisionData} colData - Information regarding the collision. See @CollisionData structure.",
      "@param {PhysObj} collider - The physics object that collided.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "PhysicsCollide",
    "typings": [
      "(this: _ENTITY, colData: CollisionData, collider: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nPolls whenever the entity should trigger the brush.\n",
      "@name EntityHooks:PassesTriggerFilters",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/PassesTriggerFilters",
      "@warning This hook is broken and will not work without code below",
      "@param {_ENTITY} this - no description",
      "@param {Entity} ent - The entity that is about to trigger.",
      "@returns {boolean} - Should trigger or not."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "PassesTriggerFilters",
    "typings": [
      "(this: _ENTITY, ent: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled by @EntityFuncs:PassesFilter and engine entities to determine whether an entity passes this filter's filter.\n",
      "@name EntityHooks:PassesFilter",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/PassesFilter",
      "@note This hook only works for \"filter\" type SENTs.",
      "@param {_ENTITY} this - no description",
      "@param {Entity} trigger - The 'caller' entity, the one that wants to know if the entity passes the filter",
      "@param {Entity} ent - The entity in question that is being tested",
      "@returns {boolean} - Whether the entity passes the filter ( true ) or not ( false )"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "PassesFilter",
    "typings": [
      "(this: _ENTITY, trigger: Entity, ent: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nTests whether the entity passes the entity filter.\nThis will call @EntityHooks:PassesFilter on scripted entities of the type \"filter\".\n",
      "@name EntityFuncs:PassesFilter",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PassesFilter",
      "@note This function only works on entities of the type \"filter\". ( filter_* entities, including base game filter entites )",
      "@param {Entity} this - no description",
      "@param {Entity} caller - The initiator of the test.\nFor example the trigger this filter entity is used in.",
      "@param {Entity} ent - The entity to test against the entity filter.",
      "@returns {boolean} - Whether the entity info passes the entity filter."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PassesFilter",
    "typings": [
      "(this: Entity, caller: Entity, ent: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled by @EntityFuncs:PassesDamageFilter and engine entities to determine whether an entity passes this filter's damage filter.\n",
      "@name EntityHooks:PassesDamageFilter",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/PassesDamageFilter",
      "@note This hook only works for \"filter\" type SENTs.",
      "@param {_ENTITY} this - no description",
      "@param {CTakeDamageInfo} dmg - Damage to test.",
      "@returns {boolean} - Whether the entity passes the damage filter ( true ) or not. ( false )"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "PassesDamageFilter",
    "typings": [
      "(this: _ENTITY, dmg: CTakeDamageInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nTests whether the damage passes the entity filter.\nThis will call @EntityHooks:PassesDamageFilter on scripted entities of the type \"filter\".\n",
      "@name EntityFuncs:PassesDamageFilter",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/PassesDamageFilter",
      "@note This function only works on entities of the type \"filter\". ( filter_* entities, including base game filter entites )",
      "@param {Entity} this - no description",
      "@param {CTakeDamageInfo} dmg - The damage info to test",
      "@returns {boolean} - Whether the damage info passes the entity filter."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "PassesDamageFilter",
    "typings": [
      "(this: Entity, dmg: CTakeDamageInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled from the engine when TaskComplete is called.\nThis allows us to move onto the next task - even when TaskComplete was called from an engine side task.\n",
      "@name EntityHooks:OnTaskComplete",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/OnTaskComplete",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "OnTaskComplete",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity is taking damage.\n",
      "@name EntityHooks:OnTakeDamage",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/OnTakeDamage",
      "@warning Calling @EntityFuncs:TakeDamage, @EntityFuncs:TakeDamageInfo, @EntityFuncs:DispatchTraceAttack, or @Player:TraceHullAttack (if the entity is hit) in this hook on the victim entity can cause infinite loops since the hook will be called again. Make sure to setup recursion safeguards like the example below.",
      "@param {_ENTITY} this - no description",
      "@param {CTakeDamageInfo} damage - The damage to be applied to the entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "OnTakeDamage",
    "typings": [
      "(this: _ENTITY, damage: CTakeDamageInfo): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity is reloaded from a Source Engine save (not the Sandbox saves or dupes) or on a changelevel (for example Half-Life 2 campaign level transitions).\nFor the @duplicator library callbacks, see @EntityHooks:OnDuplicated.\n",
      "@name EntityHooks:OnRestore",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/OnRestore",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "OnRestore",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity is about to be removed.\nSee also @EntityFuncs:CallOnRemove, which can even be used on engine (non-Lua) entities.\n==Clientside behaviour remarks==\nThis hook may be called at odd times (when entity has actually not yet been removed from the server). This happens during fullupdate with the @EntityHooks:Initialize function not being called even when the entity reappears.\nYou can debug this behaviour by enabling cheats and running **cl_fullupdate** on the client.\n@GamemodeHooks:NotifyShouldTransmit can be used to circumvent this problem. @EntityHooks:Think can also be used to detect that the entity has reappeared. You may reinitialize any necessary data in these hooks.\n",
      "@name EntityHooks:OnRemove",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/OnRemove",
      "@validate",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "OnRemove",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity is reloaded by the lua auto-refresh system, i.e. when the developer edits the lua file for the entity while the game is running.\n",
      "@name EntityHooks:OnReloaded",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/OnReloaded",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "OnReloaded",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if the entity is on the ground, and false if it isn't.\nInternally, this checks if [FL_ONGROUND](https://wiki.garrysmod.com/page/Enums/FL) is set on the entity. This is only updated for players and NPCs, and thus won't inherently work for other entities.\n",
      "@name EntityFuncs:OnGround",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/OnGround",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is on the ground or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "OnGround",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled after duplicator finishes saving the entity, allowing you to modify the save data.\nThis is called after @EntityHooks:PostEntityCopy.\n",
      "@name EntityHooks:OnEntityCopyTableFinish",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/OnEntityCopyTableFinish",
      "@param {_ENTITY} this - no description",
      "@param {EntityCopyData} data - The save @EntityCopyData structure that you can modify.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "OnEntityCopyTableFinish",
    "typings": [
      "(this: _ENTITY, data: EntityCopyData): void"
    ]
  },
  {
    "comments": [
      "\nCalled on any entity after it has been created by the @duplicator library and before any bone/entity modifiers have been applied.\nThis hook is called after @EntityHooks:Initialize and before @EntityHooks:PostEntityPaste.\n",
      "@name EntityHooks:OnDuplicated",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/OnDuplicated",
      "@param {_ENTITY} this - no description",
      "@param {EntityCopyData} entTable - @EntityCopyData structure of the source entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "OnDuplicated",
    "typings": [
      "(this: _ENTITY, entTable: EntityCopyData): void"
    ]
  },
  {
    "comments": [
      "\nCalled each time the NPC updates its condition.\n",
      "@name EntityHooks:OnCondition",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/OnCondition",
      "@param {_ENTITY} this - no description",
      "@param {number} conditionID - The ID of condition. See @NPC:ConditionName.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "OnCondition",
    "typings": [
      "(this: _ENTITY, conditionID: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's capabilities as a bitfield.\nIn the engine this function is mostly used to check the use type, the save/restore system and level transitions flags.\nEven though the function is defined shared, it is not guaranteed to return the same value across states.\n",
      "@name EntityFuncs:ObjectCaps",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/ObjectCaps",
      "@note The enums for this are not currently implemented in Lua, however you can access the defines [here](https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/mp/src/game/shared/baseentity_shared.h#L21-L38).",
      "@param {Entity} this - no description",
      "@returns {number} - The bitfield, a combination of the [FCAP_](https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/mp/src/game/shared/baseentity_shared.h#L21-L38) flags."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "ObjectCaps",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the lowest corner of an entity's bounding box as a local vector.\n",
      "@name EntityFuncs:OBBMins",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/OBBMins",
      "@param {Entity} this - no description",
      "@returns {Vector} - The local position of the lowest corner of the entity's oriented bounding box."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "OBBMins",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the highest corner of an entity's bounding box as a local vector.\n",
      "@name EntityFuncs:OBBMaxs",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/OBBMaxs",
      "@param {Entity} this - no description",
      "@returns {Vector} - The local position of the highest corner of the entity's oriented bounding box."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "OBBMaxs",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the center of an entity's bounding box as a local vector.\n",
      "@name EntityFuncs:OBBCenter",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/OBBCenter",
      "@param {Entity} this - no description",
      "@returns {Vector} - OBBCenter"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "OBBCenter",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nIn the case of a scripted entity, this will cause the next @EntityHooks:Think event to be run at the given time.\nDoes not work clientside! Use @EntityFuncs:SetNextClientThink instead.\n",
      "@name EntityFuncs:NextThink",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/NextThink",
      "@bug #3269 This does not work with SWEPs or Nextbots.",
      "@param {Entity} this - no description",
      "@param {number} timestamp - The relative to @CurTime function timestamp, at which the next think should occur.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "NextThink",
    "typings": [
      "(this: Entity, timestamp: number): void"
    ]
  },
  {
    "comments": [
      "\nStart the next task in specific schedule.\n",
      "@name EntityHooks:NextTask",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/NextTask",
      "@param {_ENTITY} this - no description",
      "@param {table} sched - The schedule to start next task in.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "NextTask",
    "typings": [
      "(this: _ENTITY, sched: table): void"
    ]
  },
  {
    "comments": [
      "\nCreates a callback that will execute when the given network variable changes - that is, when the Set function is run.\n",
      "@name EntityFuncs:NetworkVarNotify",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/NetworkVarNotify",
      "@note The callback is executed *before* the value is changed, and is called even if the new and old values are the same.",
      "@note This function does not exist on entities in which @EntityFuncs:InstallDataTable has not been called. By default, this means this function only exists on SENTs (both serverside and clientside) and on players with a [Player Class](https://wiki.garrysmod.com/page/Player%20Classes) (serverside and clientside @LocalPlayer function only!). It is therefore safest to only use this in @EntityHooks:SetupDataTables.",
      "@bug  The callback will not be called clientside if the var is changed right after entity spawn.",
      "@param {Entity} this - no description",
      "@param {string} name - Name of variable to track changes of",
      "@param {function} callback - The function to call when the variable changes. It is passed 4 arugments:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "NetworkVarNotify",
    "typings": [
      "(this: Entity, name: string, callback: EntityFuncsNetworkVarNotifyCallback): void"
    ],
    "types": [
      {
        "comments": [
          "@type EntityFuncsNetworkVarNotifyCallback",
          "@param {void} this - no description",
          "@param {Entity} entity - Entity whos variable changed (This will be variable called \"self\" in ENT:CallBack format.)",
          "@param {string} name - Name of changed variable",
          "@param {any} prev - Old/current variable value",
          "@param {any} next - New variable value that it was set to"
        ],
        "type": "type",
        "name": "EntityFuncsNetworkVarNotifyCallback",
        "typing": "(this: void, entity: Entity, name: string, prev: any, next: any) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nCreates a network variable on the entity and adds Set/Get functions for it. This function should only be called in @EntityHooks:SetupDataTables.\n",
      "@name EntityFuncs:NetworkVar",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/NetworkVar",
      "@warning Make sure to not call the SetDT* and your custom set methods on the client realm unless you know exactly what you are doing.",
      "@param {Entity} this - no description",
      "@param {string} type - Supported choices:\n* \"String\"\n* \"Bool\"\n* \"Float\"\n* \"Int\" (32-bit signed integer)\n* \"Vector\"\n* \"Angle\"\n* \"Entity\"",
      "@param {number} slot - Each network var has to have a unique slot. The slot is per type - so you can have an int in slot 0, a bool in slot 0 and a float in slot 0 etc. but you can't have two ints in slot 0 instead you would do a int in slot 0 and another int in slot 1.\nThe max slots right now are 64 - so you should pick a number between 0 and 63. An exception to this is strings which has a max slots of 4.",
      "@param {string} name - The name will affect how you access it. If you call it \"Foo\" you would add two new functions on your entity - SetFoo and GetFoo. So be careful that what you call it won't collide with any existing functions (don't call it \"Pos\" for example).",
      "@param {table} extended - A table of extended information.\n**KeyName**\nIf the table contains a \"KeyName\" key the value can be set using @EntityFuncs:SetKeyValue. This is useful if you're making an entity that you want to be loaded in a map. The sky entity uses this.\n**Edit**\nThe edit key lets you mark this variable as editable. See [Editable Entities](https://wiki.garrysmod.com/page/Editable%20Entities) for more information.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "NetworkVar",
    "typings": [
      "(this: Entity, type: string, slot: number, name: string, extended?: table): void"
    ]
  },
  {
    "comments": [
      "\nPerforms a Ray OBBox intersection from the given position to the origin of the OBBox with the entity and returns the hit position on the OBBox\n",
      "@name EntityFuncs:NearestPoint",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/NearestPoint",
      "@param {Entity} this - no description",
      "@param {Vector} position - The vector to start the intersection from.",
      "@returns {Vector} - The nearest hit point of the entity's bounding box in world coordinates."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "NearestPoint",
    "typings": [
      "(this: Entity, position: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nFires the muzzle flash effect of the weapon the entity is carrying. This only creates a light effect and is often called alongside @WeaponFuncs:SendWeaponAnim\n",
      "@name EntityFuncs:MuzzleFlash",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/MuzzleFlash",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "MuzzleFlash",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nRefreshes the shadow of the entity.\n",
      "@name EntityFuncs:MarkShadowAsDirty",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/MarkShadowAsDirty",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "MarkShadowAsDirty",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nReturns entity's map creation ID. Unlike @EntityFuncs:EntIndex or @EntityFuncs:GetCreationID, it will always be the same on same map, no matter how much you clean up or restart it.\nTo be used in conjunction with @ents.GetMapCreatedEntity.\n",
      "@name EntityFuncs:MapCreationID",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/MapCreationID",
      "@param {Entity} this - no description",
      "@returns {number} - The map creation ID or -1 if the entity is not compiled into the map."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "MapCreationID",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nSets custom bone scale.\n",
      "@name EntityFuncs:ManipulateBoneScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/ManipulateBoneScale",
      "@warning When used serverside, this method produces a huge network consumption!",
      "@bug #3502 This does not scale procedural bones.",
      "@bug #1249 The vector will be normalised if its longer than 32 units.",
      "@param {Entity} this - no description",
      "@param {number} boneID - Index of the bone you want to manipulate",
      "@param {Vector} scale - Scale vector to apply. Note that the scale is relative to the original bone scale, not relative to the world or the entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "ManipulateBoneScale",
    "typings": [
      "(this: Entity, boneID: number, scale: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets custom bone offsets.\n",
      "@name EntityFuncs:ManipulateBonePosition",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/ManipulateBonePosition",
      "@param {Entity} this - no description",
      "@param {number} boneID - Index of the bone you want to manipulate",
      "@param {Vector} pos - Position vector to apply\nNote that the position is relative to the original bone position, not relative to the world or the entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "ManipulateBonePosition",
    "typings": [
      "(this: Entity, boneID: number, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nManipulates the bone's jiggle status. This allows non jiggly bones to become jiggly.\n",
      "@name EntityFuncs:ManipulateBoneJiggle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/ManipulateBoneJiggle",
      "@param {Entity} this - no description",
      "@param {number} boneID - Index of the bone you want to manipulate.",
      "@param {number} enabled - 0 = No Jiggle\n1 = Jiggle",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "ManipulateBoneJiggle",
    "typings": [
      "(this: Entity, boneID: number, enabled: number): void"
    ]
  },
  {
    "comments": [
      "\nSets custom bone angles.\n",
      "@name EntityFuncs:ManipulateBoneAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/ManipulateBoneAngles",
      "@note The repeated use of bone manipulation in multiplayer games is highly discouraged due to the huge produced network traffic.",
      "@param {Entity} this - no description",
      "@param {number} boneID - Index of the bone you want to manipulate",
      "@param {Angle} ang - Angle to apply.\nThe angle is relative to the original bone angle, not relative to the world or the entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "ManipulateBoneAngles",
    "typings": [
      "(this: Entity, boneID: number, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nTurns the @EntityFuncs:GetPhysicsObject into a physics shadow.\nIt's used internally for the Player's and NPC's physics object, and certain HL2 entities such as the crane.\nA physics shadow can be used to have static entities that never move by setting both arguments to false.\n",
      "@name EntityFuncs:MakePhysicsObjectAShadow",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/MakePhysicsObjectAShadow",
      "@note Unlike @EntityFuncs:PhysicsInitShadow, this function doesn't remove the current physics object.",
      "@param {Entity} this - no description",
      "@param {boolean} allowPhysicsMovement - Whether to allow the physics shadow to move under stress.",
      "@param {boolean} allowPhysicsRotation - Whether to allow the physics shadow to rotate under stress.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "MakePhysicsObjectAShadow",
    "typings": [
      "(this: Entity, allowPhysicsMovement: boolean, allowPhysicsRotation: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns sequence ID from its name.\n",
      "@name EntityFuncs:LookupSequence",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/LookupSequence",
      "@param {Entity} this - no description",
      "@param {string} name - Sequence name",
      "@returns {number} - Sequence ID for that name. This **will** differ for models with same sequence names. Will be -1 whether the sequence is invalid.",
      "@returns {number} - The sequence duration\n* 0 if the sequence is invalid",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "LookupSequence",
    "typings": [
      "(this: Entity, name: string): [number, number]"
    ]
  },
  {
    "comments": [
      "\nGets the bone index of the given bone name, returns nothing if the bone does not exist.\n",
      "@name EntityFuncs:LookupBone",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/LookupBone",
      "@param {Entity} this - no description",
      "@param {string} boneName - The name of the bone.\nCommon generic bones ( for player models and some HL2 models ):\n* ValveBiped.Bip01_Head1\n* ValveBiped.Bip01_Spine\n* ValveBiped.Anim_Attachment_RH\nCommon hand bones (left hand equivalents also available, replace _R_ with _L_)\n* ValveBiped.Bip01_R_Hand\n* ValveBiped.Bip01_R_Forearm\n* ValveBiped.Bip01_R_Foot\n* ValveBiped.Bip01_R_Thigh\n* ValveBiped.Bip01_R_Calf\n* ValveBiped.Bip01_R_Shoulder\n* ValveBiped.Bip01_R_Elbow",
      "@returns {number} - Index of the given bone name"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "LookupBone",
    "typings": [
      "(this: Entity, boneName: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns the attachment index of the given attachment name.\n",
      "@name EntityFuncs:LookupAttachment",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/LookupAttachment",
      "@param {Entity} this - no description",
      "@param {string} attachmentName - The name of the attachment.",
      "@returns {number} - The attachment index, or 0 if the attachment does not exist and -1 if the model is invalid."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "LookupAttachment",
    "typings": [
      "(this: Entity, attachmentName: string): number"
    ]
  },
  {
    "comments": [
      "\nConverts a local angle (local to the entity) to a world angle.\n",
      "@name EntityFuncs:LocalToWorldAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/LocalToWorldAngles",
      "@param {Entity} this - no description",
      "@param {Angle} ang - The local angle",
      "@returns {Angle} - The world angle"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "LocalToWorldAngles",
    "typings": [
      "(this: Entity, ang: Angle): Angle"
    ]
  },
  {
    "comments": [
      "\nConverts a vector local to an entity into a worldspace vector\n",
      "@name EntityFuncs:LocalToWorld",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/LocalToWorld",
      "@param {Entity} this - no description",
      "@param {Vector} lpos - The local vector",
      "@returns {Vector} - The translated to world coordinates vector"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "LocalToWorld",
    "typings": [
      "(this: Entity, lpos: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nCalled when the engine sets a value for this scripted entity.\nSee @GamemodeHooks:EntityKeyValue for a hook that works for all entities.\nSee @WeaponHooks:KeyValue for a hook that works for scripted weapons.\n",
      "@name EntityHooks:KeyValue",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/KeyValue",
      "@param {_ENTITY} this - no description",
      "@param {string} key - The key that was affected.",
      "@param {string} value - The new value.",
      "@returns {boolean} - Return true to suppress this KeyValue or return false or nothing to apply this key value."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "KeyValue",
    "typings": [
      "(this: _ENTITY, key: string, value: string): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the entity is the map's Entity[0] worldspawn\n",
      "@name EntityFuncs:IsWorld",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsWorld",
      "@param {Entity} this - no description",
      "@returns {boolean} - isWorld"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsWorld",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity is a widget or not.\nThis is used by the \"Edit Bones\" context menu property.\n",
      "@name EntityFuncs:IsWidget",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsWidget",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is a widget or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsWidget",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the entity is a weapon or not.\n",
      "@name EntityFuncs:IsWeapon",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsWeapon",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is a weapon"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsWeapon",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the entity is a vehicle or not.\n",
      "@name EntityFuncs:IsVehicle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsVehicle",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is a vehicle."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsVehicle",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the given layer ID is valid and exists on this entity.\n",
      "@name EntityFuncs:IsValidLayer",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsValidLayer",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@returns {boolean} - Whether the given layer ID is valid and exists on this entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsValidLayer",
    "typings": [
      "(this: Entity, layerID: number): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity is a valid entity or not.\nAn entity is valid if:\n* It is not a [NULL](https://wiki.garrysmod.com/page/Global_Variables) entity\n* It is not the worldspawn entity (@game.GetWorld)\nInstead of calling this method directly, it's a good idea to call the global @IsValid function instead.It will check whether the given variable contains an object (an Entity) or nothing at all for you. See examples.\nThis might be a cause for a lot of headache. Usually happening during networking etc., when completely valid entities suddenly become invalid on the client, but are never filtered with IsValid(). See @GamemodeHooks:InitPostEntity for more details.\n",
      "@name EntityFuncs:IsValid",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsValid",
      "@warning NULL entities can still be assigned with key/value pairs, but they will be instantly negated. See example 3",
      "@param {Entity} this - no description",
      "@returns {boolean} - true if the entity is valid, false otherwise"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsValid",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the entity is solid or not.\nVery useful for determining if the entity is a trigger or not.\n",
      "@name EntityFuncs:IsSolid",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsSolid",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is solid or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsSolid",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the entity is a SENT or a built-in entity.\n",
      "@name EntityFuncs:IsScripted",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsScripted",
      "@param {Entity} this - no description",
      "@returns {boolean} - Returns true if entity is scripted ( SENT ), false if not ( A built-in engine entity )"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsScripted",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the entity is a ragdoll.\n",
      "@name EntityFuncs:IsRagdoll",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsRagdoll",
      "@param {Entity} this - no description",
      "@returns {boolean} - Is ragdoll or not"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsRagdoll",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether there's a gesture is given activity being played.\n",
      "@name EntityFuncs:IsPlayingGesture",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsPlayingGesture",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {ACT} activity - The activity to test. See @ACT enum.",
      "@returns {boolean} - Whether there's a gesture is given activity being played."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsPlayingGesture",
    "typings": [
      "(this: Entity, activity: ACT): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity is on ground or not.\nInternally, this checks if [FL_ONGROUND](https://wiki.garrysmod.com/page/Enums/FL) is set on the entity.\nThis function is an alias of @EntityFuncs:OnGround.\n",
      "@name EntityFuncs:IsOnGround",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsOnGround",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is on ground or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsOnGround",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the entity is a player or not.\n",
      "@name EntityFuncs:IsPlayer",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsPlayer",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is a player."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsPlayer",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity is on fire.\n",
      "@name EntityFuncs:IsOnFire",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsOnFire",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is on fire or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsOnFire",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if the entity is an NPC or not.\nThis will return false for @NextBot types.\n",
      "@name EntityFuncs:IsNPC",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsNPC",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is an NPC."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsNPC",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the target is in line of sight. This will only work on CBaseCombatCharacter entities.\n",
      "@name EntityFuncs:IsLineOfSightClear",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsLineOfSightClear",
      "@param {Entity} this - no description",
      "@param {Entity | Vector} target - The target to test. You can also supply an @Entity type instead of a @Vector type",
      "@returns {boolean} - Returns true if the line of sight is clear"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsLineOfSightClear",
    "typings": [
      "(this: Entity, target: Entity | Vector): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if the entity is going to be deleted in the next frame.\n",
      "@name EntityFuncs:IsMarkedForDeletion",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsMarkedForDeletion",
      "@param {Entity} this - no description",
      "@returns {boolean} - If the entity is going to be deleted."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsMarkedForDeletion",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when deciding if the Scripted NPC should be able to perform a certain jump or not.\n",
      "@name EntityHooks:IsJumpLegal",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/IsJumpLegal",
      "@note This is only called for \"ai\" type entities",
      "@param {_ENTITY} this - no description",
      "@param {Vector} startPos - Start of the jump",
      "@param {Vector} apex - Apex point of the jump",
      "@param {Vector} endPos - The landing position",
      "@returns {boolean} - Return true if this jump should be allowed to be performed, false otherwise.\nNot returning anything, or returning a non boolean will perform the default action."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "IsJumpLegal",
    "typings": [
      "(this: _ENTITY, startPos: Vector, apex: Vector, endPos: Vector): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity is lag compensated or not.\n",
      "@name EntityFuncs:IsLagCompensated",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsLagCompensated",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is lag compensated or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsLagCompensated",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if given flag(s) is set or not.\n",
      "@name EntityFuncs:IsFlagSet",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsFlagSet",
      "@param {Entity} this - no description",
      "@param {FL} flag - The engine flag(s) to test, see @FL enum",
      "@returns {boolean} - Is set or not"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsFlagSet",
    "typings": [
      "(this: Entity, flag: FL): boolean"
    ]
  },
  {
    "comments": [
      "\nChecks if given flag is set or not.\n",
      "@name EntityFuncs:IsEFlagSet",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsEFlagSet",
      "@param {Entity} this - no description",
      "@param {EFL} flag - The engine flag to test, see @EFL enum",
      "@returns {boolean} - Is set or not"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsEFlagSet",
    "typings": [
      "(this: Entity, flag: EFL): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether an entity has engine effect applied or not.\n",
      "@name EntityFuncs:IsEffectActive",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsEffectActive",
      "@param {Entity} this - no description",
      "@param {EF} effect - The effect to check for, see @EF enum.",
      "@returns {boolean} - Whether the entity has the engine effect applied or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsEffectActive",
    "typings": [
      "(this: Entity, effect: EF): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity is dormant or not. Client/server entities become dormant when they leave the PVS on the server. Client side entities can decide for themselves whether to become dormant. This mainly applies to PVS.\n",
      "@name EntityFuncs:IsDormant",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsDormant",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is dormant or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsDormant",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if entity is constraint or not\n",
      "@name EntityFuncs:IsConstraint",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsConstraint",
      "@param {Entity} this - no description",
      "@returns {boolean} - Is the entity a constraint or not"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsConstraint",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the entity has constraints attached to it\n",
      "@name EntityFuncs:IsConstrained",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsConstrained",
      "@bug #3837 This will only update clientside if the server calls it first. This only checks constraints added through the @constraint library so this will not react to map constraints.",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity is constrained or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsConstrained",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nResets the entity's bone cache values in order to prepare for a model change.\nThis should be called after calling @EntityFuncs:SetPoseParameter.\n",
      "@name EntityFuncs:InvalidateBoneCache",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/InvalidateBoneCache",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "InvalidateBoneCache",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets up Data Tables from entity to use with @EntityFuncs:NetworkVar.\n",
      "@name EntityFuncs:InstallDataTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/InstallDataTable",
      "@internal",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "InstallDataTable",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nFires input to the entity with the ability to make another entity responsible.\nSee also @EntityFuncs:Fire and @GamemodeHooks:AcceptInput.\n",
      "@name EntityFuncs:Input",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Input",
      "@param {Entity} this - no description",
      "@param {string} input - The name of the input to fire",
      "@param {Entity} activator - The entity that caused this input (EG the player who pushed a button)",
      "@param {Entity} caller - The entity that is triggering this input (EG the button that was pushed)",
      "@param {string | number | boolean} param - The value to give to the input. Can be either a @string type, a @number type or a @boolean type.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Input",
    "typings": [
      "(this: Entity, input: string, activator: Entity, caller: Entity, param?: string | number | boolean): void"
    ]
  },
  {
    "comments": [
      "\nInitializes this entity as being clientside only.\nOnly works on entities fully created clientside, and as such it has currently no use due to the lack of clientside @ents.Create.\nThis function is automatically called by @ents.CreateClientProp and @ClientsideModel function, @ClientsideModel function and @ClientsideScene function.\n",
      "@name EntityFuncs:InitializeAsClientEntity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/InitializeAsClientEntity",
      "@bug #3368 Calling this on a clientside entity will crash the game.",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "InitializeAsClientEntity",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity is created. This is called when you @EntityFuncs:Spawn the custom entity.\nThis is called **after** @EntityHooks:SetupDataTables and @GamemodeHooks:OnEntityCreated.\n",
      "@name EntityHooks:Initialize",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/Initialize",
      "@bug #2732 This is sometimes not called clientside. You can work around this by setting a variable in Initialize and check if it exists in @EntityHooks:Think. See the example below.",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "Initialize",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a bullet trace hits this entity and allows you to override the default behavior by returning true.\n",
      "@name EntityHooks:ImpactTrace",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/ImpactTrace",
      "@param {_ENTITY} this - no description",
      "@param {TraceResult} traceResult - The trace that hit this entity as a @TraceResult structure.",
      "@param {DMG} damageType - The damage bits associated with the trace, see @DMG enum",
      "@param {string} customImpactName - The effect name to override the impact effect with.\nPossible arguments are ImpactJeep, AirboatGunImpact, HelicopterImpact, ImpactGunship.",
      "@returns {boolean} - Return true to override the default impact effects."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "ImpactTrace",
    "typings": [
      "(this: _ENTITY, traceResult: TraceResult, damageType: DMG, customImpactName?: string): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the entity on fire.\nSee also @EntityFuncs:Extinguish.\n",
      "@name EntityFuncs:Ignite",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Ignite",
      "@param {Entity} this - no description",
      "@param {number} length - How long to keep the entity ignited. Not supplying this argument will not ignite the entity at all.",
      "@param {number} radius - The radius of the ignition, will ignite everything around the entity that is in this radius.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Ignite",
    "typings": [
      "(this: Entity, length: number, radius?: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the health of the entity.\n",
      "@name EntityFuncs:Health",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Health",
      "@param {Entity} this - no description",
      "@returns {number} - health"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Health",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the position of the head of this entity, NPCs use this internally to aim at their targets.\n",
      "@name EntityFuncs:HeadTarget",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/HeadTarget",
      "@note This only works on players and NPCs.",
      "@param {Entity} this - no description",
      "@param {Vector} origin - The vector of where the attack comes from.",
      "@returns {Vector} - The head position."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "HeadTarget",
    "typings": [
      "(this: Entity, origin: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns whether this entity has the specified spawnflags bits set.\n",
      "@name EntityFuncs:HasSpawnFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/HasSpawnFlags",
      "@param {Entity} this - no description",
      "@param {SF} spawnFlags - The spawnflag bits to check, see @SF enum.",
      "@returns {boolean} - Whether the entity has that spawnflag set or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "HasSpawnFlags",
    "typings": [
      "(this: Entity, spawnFlags: SF): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the the entity has had flex manipulations performed with @EntityFuncs:SetFlexWeight or @EntityFuncs:SetFlexScale.\n",
      "@name EntityFuncs:HasFlexManipulatior",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/HasFlexManipulatior",
      "@param {Entity} this - no description",
      "@returns {boolean} - True if the entity has flex manipulations, false otherwise."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "HasFlexManipulatior",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the bone manipulation functions have ever been called on given  entity.\nRelated functions are @EntityFuncs:ManipulateBonePosition, @EntityFuncs:ManipulateBoneAngles, @EntityFuncs:ManipulateBoneJiggle, and @EntityFuncs:ManipulateBoneScale.\n",
      "@name EntityFuncs:HasBoneManipulations",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/HasBoneManipulations",
      "@bug #3131 This will return true if the entity's bones have ever been manipulated. Resetting the position/angles/jiggle/scaling to 0,0,0 will not affect this function.",
      "@param {Entity} this - no description",
      "@returns {boolean} - True if the entity has been bone manipulated, false otherwise."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "HasBoneManipulations",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled before firing serverside animation events, such as weapon reload, drawing and holstering for NPCs, scripted sequences, etc.\nSee @EntityHooks:FireAnimationEvent for the clientside version.\n",
      "@name EntityHooks:HandleAnimEvent",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/HandleAnimEvent",
      "@note This hook only works on \"anim\", \"ai\" and \"nextbot\" type entities.",
      "@param {_ENTITY} this - no description",
      "@param {number} event - The event ID of happened even. See [this page](http://developer.valvesoftware.com/wiki/Animation_Events).",
      "@param {number} eventTime - The absolute time this event occurred using @CurTime function.",
      "@param {number} cycle - The frame this event occurred as a number between 0 and 1.",
      "@param {number} type - Event type. See [the Source SDK](https://github.com/ValveSoftware/source-sdk-2013/blob/master/mp/src/game/shared/eventlist.h#L14-L23).",
      "@param {string} options - Name or options of this event.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "HandleAnimEvent",
    "typings": [
      "(this: _ENTITY, event: number, eventTime: number, cycle: number, type: number, options: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled when this entity is about to be punted with the gravity gun (primary fire).\nOnly works in Sandbox derived gamemodes and only if @GamemodeHooks:GravGunPunt is not overridden.\n",
      "@name EntityHooks:GravGunPunt",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/GravGunPunt",
      "@param {_ENTITY} this - no description",
      "@param {Player} ply - The player pressing left-click with the gravity gun at an entity",
      "@returns {boolean} - Return true or false to enable or disable punting respectively."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "GravGunPunt",
    "typings": [
      "(this: _ENTITY, ply: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled by @GamemodeHooks:GravGunPickupAllowed on ALL entites in Sandbox-derived  gamemodes and acts as an override.\n",
      "@name EntityHooks:GravGunPickupAllowed",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/GravGunPickupAllowed",
      "@param {_ENTITY} this - no description",
      "@param {Player} ply - The player aiming at us",
      "@returns {boolean} - Return true to allow the entity to be picked up"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "GravGunPickupAllowed",
    "typings": [
      "(this: _ENTITY, ply: Player): boolean"
    ]
  },
  {
    "comments": [
      "\nCauses the entity to break into its current models gibs, if it has any.\nYou must call @EntityFuncs:PrecacheGibs on the entity before using this function, or it will not create any gibs.\nThe gibs will be spawned on the server and be synchronized with all clients.\nNote, that this function will not remove or hide the entity it is called on.\n",
      "@name EntityFuncs:GibBreakServer",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GibBreakServer",
      "@note Despite existing on client, it doesn't actually do anything on client.",
      "@warning Large numbers of serverside gibs will cause lag.\nYou can avoid this cost by spawning the gibs on the client using @EntityFuncs:GibBreakClient",
      "@param {Entity} this - no description",
      "@param {Vector} force - The force to apply to the created gibs",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GibBreakServer",
    "typings": [
      "(this: Entity, force: Vector): void"
    ]
  },
  {
    "comments": [
      "\nCauses the entity to break into its current models gibs, if it has any.\nYou must call @EntityFuncs:PrecacheGibs on the entity before using this function, or it will not create any gibs.\nIf called on server, the gibs will be spawned on the currently connected clients and will not be synchronized. Otherwise the gibs will be spawned only for the client the function is called on.\nNote, that this function will not remove or hide the entity it is called on.\nFor more expensive version of this function see @EntityFuncs:GibBreakServer.\n",
      "@name EntityFuncs:GibBreakClient",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GibBreakClient",
      "@param {Entity} this - no description",
      "@param {Vector} force - The force to apply to the created gibs.",
      "@param {table} clr - If set, this will be color of the broken gibs instead of the entity's color.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GibBreakClient",
    "typings": [
      "(this: Entity, force: Vector, clr?: table): void"
    ]
  },
  {
    "comments": [
      "\nReturns the position and angle of the entity as a 3x4 matrix (@VMatrix type is 4x4 so the fourth row goes unused). The first three columns store the angle as a [rotation matrix](https://en.wikipedia.org/wiki/Rotation_matrix), and the fourth column stores the position vector.\n",
      "@name EntityFuncs:GetWorldTransformMatrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetWorldTransformMatrix",
      "@bug #2764 This returns incorrect results for the angular component (columns 1-3) for the local player clientside.",
      "@bug #3106 This will use the local player's @EyeAngles function in [rendering hooks](http://wiki.garrysmod.com/page/Category:3D_Rendering_Hooks).",
      "@bug #3107 Columns 1-3 will be all 0 (angular component) in [rendering hooks](http://wiki.garrysmod.com/page/Category:3D_Rendering_Hooks) while paused in single-player.",
      "@param {Entity} this - no description",
      "@returns {VMatrix} - The position and angle matrix."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetWorldTransformMatrix",
    "typings": [
      "(this: Entity): VMatrix"
    ]
  },
  {
    "comments": [
      "\nReturns ID of workshop addon that the entity is from.\n",
      "@name EntityFuncs:GetWorkshopID",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetWorkshopID",
      "@warning The function **currently** does nothing and always returns nil",
      "@param {Entity} this - no description",
      "@returns {number} - The workshop ID"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetWorkshopID",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's velocity.\n",
      "@name EntityFuncs:GetVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetVelocity",
      "@note Actually binds to CBaseEntity::GetAbsVelocity() on the server and C_BaseEntity::EstimateAbsVelocity() on the client. This returns the total velocity of the entity and is equal to local velocity + base velocity.",
      "@bug #774 This can become out-of-sync on the client if the server has been up for a long time.",
      "@param {Entity} this - no description",
      "@returns {Vector} - The velocity of the entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetVelocity",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nRetrieves a value from entity's @EntityFuncs:GetTable. Set by @EntityFuncs:SetVar.\n",
      "@name EntityFuncs:GetVar",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetVar",
      "@param {Entity} this - no description",
      "@param {any} key - Key of the value to retrieve",
      "@param {any} def - A default value to fallback to if we couldn't retrieve the value from entity",
      "@returns {any} - Retrieved value"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetVar",
    "typings": [
      "(this: Entity, key: any, def?: any): any"
    ]
  },
  {
    "comments": [
      "\nReturns the upward vector of the entity, as a normalized direction vector\n",
      "@name EntityFuncs:GetUp",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetUp",
      "@param {Entity} this - no description",
      "@returns {Vector} - upDir"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetUp",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns if the entity is unfreezable, meaning it can't be frozen with the physgun. By default props are freezable, so this function will typically return false.\n",
      "@name EntityFuncs:GetUnFreezable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetUnFreezable",
      "@bug  This will return nil if @EntityFuncs:SetUnFreezable has not been called.",
      "@param {Entity} this - no description",
      "@returns {boolean} - True if the entity is unfreezable, false otherwise."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetUnFreezable",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the TransmitWithParent flag is set or not.\n",
      "@name EntityFuncs:GetTransmitWithParent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetTransmitWithParent",
      "@param {Entity} this - no description",
      "@returns {boolean} - Is the TransmitWithParent flag is set or not"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetTransmitWithParent",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the last trace used in the collision callbacks such as @EntityHooks:StartTouch, @EntityHooks:Touch and @EntityHooks:EndTouch.\n",
      "@name EntityFuncs:GetTouchTrace",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetTouchTrace",
      "@note This returns the last collision trace used, regardless of the entity that caused it. As such, it's only reliable when used in the hooks mentioned above",
      "@param {Entity} this - no description",
      "@returns {TraceResult} - The @TraceResult structure"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetTouchTrace",
    "typings": [
      "(this: Entity): TraceResult"
    ]
  },
  {
    "comments": [
      "\nReturns the table that contains all values saved within the entity.\n",
      "@name EntityFuncs:GetTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetTable",
      "@param {Entity} this - no description",
      "@returns {table} - entTable"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetTable",
    "typings": [
      "(this: Entity): table"
    ]
  },
  {
    "comments": [
      "\nReturns a list of models included into the entity's model in the .qc file.\n",
      "@name EntityFuncs:GetSubModels",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSubModels",
      "@param {Entity} this - no description",
      "@returns {table} - The list of models included into the entity's model in the .qc file."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSubModels",
    "typings": [
      "(this: Entity): table"
    ]
  },
  {
    "comments": [
      "\nReturns the material override for the given index.\nReturns \"\" if no material override exists. Use @EntityFuncs:GetMaterials to list it's default materials.\n",
      "@name EntityFuncs:GetSubMaterial",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSubMaterial",
      "@bug #3362 The server's value takes priority on the client.",
      "@param {Entity} this - no description",
      "@param {number} index - The index of the sub material. Acceptable values are from 0 to 31.",
      "@returns {string} - The material that overrides this index, if any."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSubMaterial",
    "typings": [
      "(this: Entity, index: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the bitwise spawn flags used by the entity.\n",
      "@name EntityFuncs:GetSpawnFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSpawnFlags",
      "@param {Entity} this - no description",
      "@returns {number} - The spawn flags of the entity, see [SF_Enums](https://wiki.garrysmod.com/page/Enums/SF)."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSpawnFlags",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns if we should show a spawn effect on spawn on this entity.\n",
      "@name EntityFuncs:GetSpawnEffect",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSpawnEffect",
      "@param {Entity} this - no description",
      "@returns {boolean} - The flag to allow or disallow the spawn effect."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSpawnEffect",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns solid flag(s) of an entity.\n",
      "@name EntityFuncs:GetSolidFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSolidFlags",
      "@param {Entity} this - no description",
      "@returns {FSOLID} - The flag(s) of the entity, see @FSOLID enum."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSolidFlags",
    "typings": [
      "(this: Entity): FSOLID"
    ]
  },
  {
    "comments": [
      "\nReturns solid type of an entity.\n",
      "@name EntityFuncs:GetSolid",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSolid",
      "@param {Entity} this - no description",
      "@returns {SOLID} - The solid type. See the @SOLID enum."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSolid",
    "typings": [
      "(this: Entity): SOLID"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity is inside a wall or outside of the map.\n",
      "@name EntityFuncs:IsInWorld",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsInWorld",
      "@note Internally this function uses @util.IsInWorld, that means that this function only checks @EntityFuncs:GetPos of the entity. If an entity is only partially inside a wall, or has a weird GetPos offset, this function may not give reliable output.",
      "@param {Entity} this - no description",
      "@returns {boolean} - Is the entity in world"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsInWorld",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the skin index of the current skin.\n",
      "@name EntityFuncs:GetSkin",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSkin",
      "@param {Entity} this - no description",
      "@returns {number} - skinIndex"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSkin",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns if entity should create a server ragdoll on death or a client one.\n",
      "@name EntityFuncs:GetShouldServerRagdoll",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetShouldServerRagdoll",
      "@param {Entity} this - no description",
      "@returns {boolean} - Returns true if ragdoll will be created on server, false if on client"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetShouldServerRagdoll",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the change in heading direction in between the start and the end of the sequence.\n",
      "@name EntityFuncs:GetSequenceMoveYaw",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequenceMoveYaw",
      "@param {Entity} this - no description",
      "@param {number} seq - The sequence index. See @EntityFuncs:LookupSequence.",
      "@returns {number} - The yaw delta. Returns 99999 for no movement."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequenceMoveYaw",
    "typings": [
      "(this: Entity, seq: number): number"
    ]
  },
  {
    "comments": [
      "\nChecks if the entity plays a sound when picked up by a player.\n",
      "@name EntityFuncs:GetShouldPlayPickupSound",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetShouldPlayPickupSound",
      "@bug  This will return nil if @EntityFuncs:SetShouldPlayPickupSound has not been called.",
      "@param {Entity} this - no description",
      "@returns {boolean} - True if it plays the pickup sound, false otherwise."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetShouldPlayPickupSound",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturn the name of the sequence for the index provided.\nRefer to @EntityFuncs:GetSequence to find the current active sequence on this entity.\n",
      "@name EntityFuncs:GetSequenceName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequenceName",
      "@param {Entity} this - no description",
      "@param {number} index - The index of the sequence to look up.",
      "@returns {string} - Name of the sequence."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequenceName",
    "typings": [
      "(this: Entity, index: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the delta movement and angles of a sequence of the entity's model.\n",
      "@name EntityFuncs:GetSequenceMovement",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequenceMovement",
      "@param {Entity} this - no description",
      "@param {number} sequenceId - The sequence index. See @EntityFuncs:GetSequenceName.",
      "@param {number} startCycle - The sequence start cycle. 0 is the start of the animation, 1 is the end.",
      "@param {number} endCyclnde - The sequence end cycle. 0 is the start of the animation, 1 is the end. Values like 2, etc are allowed.",
      "@returns {boolean} - Whether the operation was successful",
      "@returns {Vector} - The delta vector of the animation, how much the model's origin point moved.",
      "@returns {Angle} - The delta angle of the animation.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequenceMovement",
    "typings": [
      "(this: Entity, sequenceId: number, startCycle: number, endCyclnde: number): [boolean, Vector, Angle]"
    ]
  },
  {
    "comments": [
      "\nReturns an entity's sequence move distance (the change in position over the course of the entire sequence).\n",
      "@name EntityFuncs:GetSequenceMoveDist",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequenceMoveDist",
      "@param {Entity} this - no description",
      "@param {number} sequenceId - The sequence index.",
      "@returns {number} - The move distance of the sequence."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequenceMoveDist",
    "typings": [
      "(this: Entity, sequenceId: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns a list of all sequences ( animations ) the model has.\n",
      "@name EntityFuncs:GetSequenceList",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequenceList",
      "@param {Entity} this - no description",
      "@returns {table} - The list of all sequences ( animations ) the model has. The indices start with 0!"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequenceList",
    "typings": [
      "(this: Entity): table"
    ]
  },
  {
    "comments": [
      "\nReturns the ground speed of the entity's sequence.\n",
      "@name EntityFuncs:GetSequenceGroundSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequenceGroundSpeed",
      "@note In most cases it's better to use @NextBot:BodyMoveXY instead.",
      "@param {Entity} this - no description",
      "@param {number} sequenceId - The sequence ID.",
      "@returns {number} - The ground speed of this sequence."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequenceGroundSpeed",
    "typings": [
      "(this: Entity, sequenceId: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of sequences ( animations ) the entity's model has.\n",
      "@name EntityFuncs:GetSequenceCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequenceCount",
      "@param {Entity} this - no description",
      "@returns {number} - The amount of sequences ( animations ) the entity's model has."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequenceCount",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table of information about an entity's sequence.\n",
      "@name EntityFuncs:GetSequenceInfo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequenceInfo",
      "@param {Entity} this - no description",
      "@param {number} sequenceId - The sequence id of the entity.",
      "@returns {SequenceInfo[]} - Table of information about the entity's sequence, or nil is ID is out of range. See @SequenceInfo structure"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequenceInfo",
    "typings": [
      "(this: Entity, sequenceId: number): SequenceInfo[]"
    ]
  },
  {
    "comments": [
      "\nReturn the index of the model sequence that is currently active for the entity.\n",
      "@name EntityFuncs:GetSequence",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequence",
      "@param {Entity} this - no description",
      "@returns {number} - The index of the model sequence."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequence",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturn activity id out of sequence id. Opposite of @EntityFuncs:SelectWeightedSequence.\n",
      "@name EntityFuncs:GetSequenceActivity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequenceActivity",
      "@param {Entity} this - no description",
      "@param {number} seq - The sequence ID",
      "@returns {ACT} - The activity ID, ie @ACT enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequenceActivity",
    "typings": [
      "(this: Entity, seq: number): ACT"
    ]
  },
  {
    "comments": [
      "\nReturns the activity name for the given sequence id.\n",
      "@name EntityFuncs:GetSequenceActivityName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSequenceActivityName",
      "@param {Entity} this - no description",
      "@param {number} sequenceId - The sequence id.",
      "@returns {string} - The @ACT enum as a string, returns \"Not Found!\" with an invalid sequence and \"No model!\" when no model is set."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSequenceActivityName",
    "typings": [
      "(this: Entity, sequenceId: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns a table of save values for an entity.\nThese tables are not the same between the client and the server, and different entities may have different fields.\nYou can get the list different fields an entity has by looking at it's source code ( the 2013 SDK can be found online, https://github.com/ValveSoftware/source-sdk-2013 ). Accessible fields are defined by each DEFINE_FIELD and DEFINE_KEYFIELD inside the DATADESC block.\nTake the headcrab, for example:\n```BEGIN_DATADESC( CBaseHeadcrab )\n// m_nGibCount - don't save\nDEFINE_FIELD( m_bHidden, FIELD_BOOLEAN ),\nDEFINE_FIELD( m_flTimeDrown, FIELD_TIME ),\nDEFINE_FIELD( m_bCommittedToJump, FIELD_BOOLEAN ),\nDEFINE_FIELD( m_vecCommittedJumpPos, FIELD_POSITION_VECTOR ),\nDEFINE_FIELD( m_flNextNPCThink, FIELD_TIME ),\nDEFINE_FIELD( m_flIgnoreWorldCollisionTime, FIELD_TIME ),\nDEFINE_KEYFIELD( m_bStartBurrowed, FIELD_BOOLEAN, \"startburrowed\" ),\nDEFINE_FIELD( m_bBurrowed, FIELD_BOOLEAN ),\nDEFINE_FIELD( m_flBurrowTime, FIELD_TIME ),\nDEFINE_FIELD( m_nContext, FIELD_INTEGER ),\nDEFINE_FIELD( m_bCrawlFromCanister, FIELD_BOOLEAN ),\nDEFINE_FIELD( m_bMidJump, FIELD_BOOLEAN ),\nDEFINE_FIELD( m_nJumpFromCanisterDir, FIELD_INTEGER ),\nDEFINE_FIELD( m_bHangingFromCeiling, FIELD_BOOLEAN ),\nDEFINE_FIELD( m_flIlluminatedTime, FIELD_TIME ),\nDEFINE_INPUTFUNC( FIELD_VOID, \"Burrow\", InputBurrow ),\nDEFINE_INPUTFUNC( FIELD_VOID, \"BurrowImmediate\", InputBurrowImmediate ),\nDEFINE_INPUTFUNC( FIELD_VOID, \"Unburrow\", InputUnburrow ),\nDEFINE_INPUTFUNC( FIELD_VOID, \"StartHangingFromCeiling\", InputStartHangingFromCeiling ),\nDEFINE_INPUTFUNC( FIELD_VOID, \"DropFromCeiling\", InputDropFromCeiling ),\n// Function Pointers\nDEFINE_THINKFUNC( EliminateRollAndPitch ),\nDEFINE_THINKFUNC( ThrowThink ),\nDEFINE_ENTITYFUNC( LeapTouch ),\nEND_DATADESC()\n```\nFor each **DEFINE_FIELD**, the save table will have a key with name of **first** argument.\nFor each **DEFINE_KEYFIELD**, the save table will have a key with name of the **third** argument.\nSee @EntityFuncs:GetInternalVariable for only retrieving one key of the save table.\n",
      "@name EntityFuncs:GetSaveTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetSaveTable",
      "@param {Entity} this - no description",
      "@param {boolean} showAll - If set, shows all variables, not just the ones for save.",
      "@returns {table} - A table containing all save values in key/value format.\nThe value may be a sequential table (starting with 1) if the field in question is an array in engine."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetSaveTable",
    "typings": [
      "(this: Entity, showAll: boolean): table"
    ]
  },
  {
    "comments": [
      "\nReturns the min and max of the entity's axis-aligned bounding box.\n",
      "@name EntityFuncs:GetRotatedAABB",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetRotatedAABB",
      "@param {Entity} this - no description",
      "@param {Vector} min - Minimum extent of the bounding box.",
      "@param {Vector} max - Maximum extent of the bounding box.",
      "@returns {Vector} - Minimum extent of the AABB",
      "@returns {Vector} - Maximum extent of the AABB",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetRotatedAABB",
    "typings": [
      "(this: Entity, min: Vector, max: Vector): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nReturns the rightward vector of the entity, as a normalized direction vector\n",
      "@name EntityFuncs:GetRight",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetRight",
      "@param {Entity} this - no description",
      "@returns {Vector} - rightDir"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetRight",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's render origin, set by @EntityFuncs:SetRenderOrigin in a drawing hook.\n",
      "@name EntityFuncs:GetRenderOrigin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetRenderOrigin",
      "@param {Entity} this - no description",
      "@returns {Vector} - The entitys render origin"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetRenderOrigin",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the render mode of the entity.\n",
      "@name EntityFuncs:GetRenderMode",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetRenderMode",
      "@param {Entity} this - no description",
      "@returns {RENDERMODE} - The render Mode. See @RENDERMODE enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetRenderMode",
    "typings": [
      "(this: Entity): RENDERMODE"
    ]
  },
  {
    "comments": [
      "\nSpecify a mesh that should be rendered instead of this SENT's model.\n",
      "@name EntityHooks:GetRenderMesh",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/GetRenderMesh",
      "@param {_ENTITY} this - no description",
      "@returns {IEntityHooksGetRenderMeshReturn} - A table containing the following keys:"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "GetRenderMesh",
    "typings": [
      "(this: _ENTITY): IEntityHooksGetRenderMeshReturn"
    ],
    "types": [
      {
        "comments": [
          "Mesh - {IMesh}: Required"
        ],
        "type": "interface",
        "name": "Mesh",
        "typing": "IMesh",
        "context": "IEntityHooksGetRenderMeshReturn"
      },
      {
        "comments": [
          "Material - {IMaterial}: Required"
        ],
        "type": "interface",
        "name": "Material",
        "typing": "IMaterial",
        "context": "IEntityHooksGetRenderMeshReturn"
      },
      {
        "comments": [
          "Matrix - {VMatrix}: Optional"
        ],
        "type": "interface",
        "name": "Matrix",
        "typing": "VMatrix",
        "context": "IEntityHooksGetRenderMeshReturn"
      }
    ]
  },
  {
    "comments": [
      "\nReturns the render group of the entity.\n",
      "@name EntityFuncs:GetRenderGroup",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetRenderGroup",
      "@param {Entity} this - no description",
      "@returns {RENDERGROUP} - The render group. See @RENDERGROUP enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetRenderGroup",
    "typings": [
      "(this: Entity): RENDERGROUP"
    ]
  },
  {
    "comments": [
      "\nReturns current render FX of the entity.\n",
      "@name EntityFuncs:GetRenderFX",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetRenderFX",
      "@param {Entity} this - no description",
      "@returns {kRenderFx} - The current render FX of the entity. See @kRenderFx enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetRenderFX",
    "typings": [
      "(this: Entity): kRenderFx"
    ]
  },
  {
    "comments": [
      "\nReturns render bounds of the entity. Can be overridden by @EntityFuncs:SetRenderBounds.\nIf the render bounds are not inside players view, the entity will not be drawn!\n",
      "@name EntityFuncs:GetRenderBounds",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetRenderBounds",
      "@param {Entity} this - no description",
      "@returns {Vector} - The minimum vector of the bounds",
      "@returns {Vector} - The maximum vector of the bounds.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetRenderBounds",
    "typings": [
      "(this: Entity): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nReturns true if the entity is being held by a player. Either by physics gun, gravity gun or use-key (+use).\n",
      "@name EntityFuncs:IsPlayerHolding",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/IsPlayerHolding",
      "@bug #2046 If multiple players are holding an object and one drops it, this will return false despite the object still being held.",
      "@param {Entity} this - no description",
      "@returns {boolean} - IsBeingHeld"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "IsPlayerHolding",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's render angles, set by @EntityFuncs:SetRenderAngles in a drawing hook.\n",
      "@name EntityFuncs:GetRenderAngles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetRenderAngles",
      "@param {Entity} this - no description",
      "@returns {Angle} - The entitys render angles"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetRenderAngles",
    "typings": [
      "(this: Entity): Angle"
    ]
  },
  {
    "comments": [
      "\nCalled when scripted NPC needs to check how he \"feels\" against another entity, such as when @NPC:Disposition is called.\n",
      "@name EntityHooks:GetRelationship",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/GetRelationship",
      "@param {_ENTITY} this - no description",
      "@param {Entity} ent - The entity in question",
      "@returns {D} - How our scripter NPC \"feels\" towards the entity in question. See @D enum."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "GetRelationship",
    "typings": [
      "(this: _ENTITY, ent: Entity): D"
    ]
  },
  {
    "comments": [
      "\nReturns the entity which the ragdoll came from. The opposite of @Player:GetRagdollEntity.\n",
      "@name EntityFuncs:GetRagdollOwner",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetRagdollOwner",
      "@param {Entity} this - no description",
      "@returns {Entity} - The entity who owns the ragdoll."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetRagdollOwner",
    "typings": [
      "(this: Entity): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns whether this entity is predictable or not.\nSee @EntityFuncs:SetPredictable for more information\n",
      "@name EntityFuncs:GetPredictable",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPredictable",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether this entity is predictable or not."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPredictable",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns name of given pose parameter\n",
      "@name EntityFuncs:GetPoseParameterName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPoseParameterName",
      "@param {Entity} this - no description",
      "@param {number} id - Id of the pose paremeter",
      "@returns {string} - Name of given pose parameter"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPoseParameterName",
    "typings": [
      "(this: Entity, id: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the pose parameter value\n",
      "@name EntityFuncs:GetPoseParameter",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPoseParameter",
      "@warning This value will be from 0 - 1 on the client and from minimum range to maximum range on the server! You'll have to [remap](https://wiki.garrysmod.com/page/math/Remap) this value clientside to @EntityFuncs:GetPoseParameterRange's returns if you want get the actual pose parameter value. See @EntityFuncs:SetPoseParameter's example.",
      "@param {Entity} this - no description",
      "@param {string} name - Pose parameter name to look up",
      "@returns {number} - Value of given pose parameter."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPoseParameter",
    "typings": [
      "(this: Entity, name: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns pose parameter range\n",
      "@name EntityFuncs:GetPoseParameterRange",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPoseParameterRange",
      "@param {Entity} this - no description",
      "@param {number} id - Pose parameter ID to look up",
      "@returns {number} - The minimum value",
      "@returns {number} - The maximum value",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPoseParameterRange",
    "typings": [
      "(this: Entity, id: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the playback rate of the main sequence on this entity, with 1.0 being the default speed.\n",
      "@name EntityFuncs:GetPlaybackRate",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPlaybackRate",
      "@param {Entity} this - no description",
      "@returns {number} - The playback rate."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPlaybackRate",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nGets the position of entity in world.\n",
      "@name EntityFuncs:GetPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPos",
      "@param {Entity} this - no description",
      "@returns {Vector} - The position of the entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPos",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns a specific physics object from an entity with multiple @PhysObj typeects (like ragdolls)\nSee also @EntityFuncs:TranslateBoneToPhysBone.\n",
      "@name EntityFuncs:GetPhysicsObjectNum",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPhysicsObjectNum",
      "@param {Entity} this - no description",
      "@param {number} physNum - The number corresponding to the @PhysObj type to grab. Starts at 0.",
      "@returns {PhysObj} - The physics object"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPhysicsObjectNum",
    "typings": [
      "(this: Entity, physNum: number): PhysObj"
    ]
  },
  {
    "comments": [
      "\nReturns the number of physics objects an entity has (usually 1 for non-ragdolls)\n",
      "@name EntityFuncs:GetPhysicsObjectCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPhysicsObjectCount",
      "@param {Entity} this - no description",
      "@returns {number} - numObjects"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPhysicsObjectCount",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns player who is claiming kills of physics damage the entity deals.\n",
      "@name EntityFuncs:GetPhysicsAttacker",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPhysicsAttacker",
      "@note Some entities such as the Combine Ball disregard the time limit and always return the physics attacker.",
      "@param {Entity} this - no description",
      "@param {number} timeLimit - The time to check if the entity was still a proper physics attacker.",
      "@returns {Player} - The player. If entity that was set is not a player, it will return NULL entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPhysicsAttacker",
    "typings": [
      "(this: Entity, timeLimit: number): Player"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's physics object, if the entity has physics.\n",
      "@name EntityFuncs:GetPhysicsObject",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPhysicsObject",
      "@note Entities don't have clientside physics objects by default, so this will return [NULL PHYSOBJ] on the client in most cases.",
      "@param {Entity} this - no description",
      "@returns {PhysObj} - The entity's physics object."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPhysicsObject",
    "typings": [
      "(this: Entity): PhysObj"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity is persistent or not.\nSee @EntityFuncs:SetPersistent for more information on persistence.\n",
      "@name EntityFuncs:GetPersistent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetPersistent",
      "@param {Entity} this - no description",
      "@returns {boolean} - True if the entity is set to be persistent."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetPersistent",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the position and angle of the entity's move parent as a 3x4 matrix (@VMatrix type is 4x4 so the fourth row goes unused). The first three columns store the angle as a [rotation matrix](https://en.wikipedia.org/wiki/Rotation_matrix), and the fourth column stores the position vector.\n",
      "@name EntityFuncs:GetParentWorldTransformMatrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetParentWorldTransformMatrix",
      "@param {Entity} this - no description",
      "@returns {VMatrix} - The position and angle matrix.\nIf the entity has no move parent, an identity matrix will be returned.\nIf the entity is [parented to attachment](https://wiki.garrysmod.com/page/Entity/GetParentAttachment) 0 or the parent isn't a BaseAnimating entity, the equivalent of Entity:GetMoveParent():GetWorldTransformMatrix()``` will be returned."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetParentWorldTransformMatrix",
    "typings": [
      "(this: Entity): VMatrix"
    ]
  },
  {
    "comments": [
      "\nReturns the parent entity of this entity.\n",
      "@name EntityFuncs:GetParent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetParent",
      "@param {Entity} this - no description",
      "@returns {Entity} - parentEntity"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetParent",
    "typings": [
      "(this: Entity): Entity"
    ]
  },
  {
    "comments": [
      "\nIf the entity is parented to an entity that has a model with multiple physics objects (like a ragdoll), this is used to retrieve what physics object number the entity is parented to on it's parent.\n",
      "@name EntityFuncs:GetParentPhysNum",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetParentPhysNum",
      "@param {Entity} this - no description",
      "@returns {number} - The physics object id, or nil if the entity has no parent"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetParentPhysNum",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the attachment index of the entity's parent. Returns 0 if the entity is not parented to a specific attachment or if it isn't parented at all.\nThis is set by second argument of @EntityFuncs:SetParent or the **SetParentAttachment** input.\n",
      "@name EntityFuncs:GetParentAttachment",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetParentAttachment",
      "@param {Entity} this - no description",
      "@returns {number} - The parented attachment index"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetParentAttachment",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the owner entity of this entity. See @EntityFuncs:SetOwner for more info.\n",
      "@name EntityFuncs:GetOwner",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetOwner",
      "@param {Entity} this - no description",
      "@returns {Entity} - The owner entity of this entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetOwner",
    "typings": [
      "(this: Entity): Entity"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked vector value at specified index on the entity that is set by @EntityFuncs:SetNWVector.\n",
      "@name EntityFuncs:GetNWVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNWVector",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {any} fallback - The value to return if we failed to retrieve the value. (If it isn't set)",
      "@returns {any} - The value associated with the key"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNWVector",
    "typings": [
      "(this: Entity, key: string, fallback?: any): any"
    ]
  },
  {
    "comments": [
      "\nReturns all the networked variables in an entity.\n",
      "@name EntityFuncs:GetNWVarTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNWVarTable",
      "@param {Entity} this - no description",
      "@returns {table} - Key-Value table of all networked variables."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNWVarTable",
    "typings": [
      "(this: Entity): table"
    ]
  },
  {
    "comments": [
      "\nReturns callback function for given NWVar of this entity.\n",
      "@name EntityFuncs:GetNWVarProxy",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNWVarProxy",
      "@param {Entity} this - no description",
      "@param {any} key - The key of the NWVar to get callback of.",
      "@returns {function} - The callback of given NWVar, or nil if not found."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNWVarProxy",
    "typings": [
      "(this: Entity, key: any): UnknownFunc"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked string value at specified index on the entity that is set by @EntityFuncs:SetNWString.\n",
      "@name EntityFuncs:GetNWString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNWString",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {any} fallback - The value to return if we failed to retrieve the value. (If it isn't set)",
      "@returns {any} - The value associated with the key"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNWString",
    "typings": [
      "(this: Entity, key: string, fallback?: any): any"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked float value at specified index on the entity that is set by @EntityFuncs:SetNWFloat.\n",
      "@name EntityFuncs:GetNWFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNWFloat",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {any} fallback - The value to return if we failed to retrieve the value. (If it isn't set)",
      "@returns {any} - The value associated with the key"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNWFloat",
    "typings": [
      "(this: Entity, key: string, fallback?: any): any"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked entity value at specified index on the entity that is set by @EntityFuncs:SetNWEntity.\n",
      "@name EntityFuncs:GetNWEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNWEntity",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {any} fallback - The value to return if we failed to retrieve the value. (If it isn't set)",
      "@returns {any} - The value associated with the key"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNWEntity",
    "typings": [
      "(this: Entity, key: string, fallback?: any): any"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked integer (whole number) value that was previously set by @EntityFuncs:SetNWInt.\n",
      "@name EntityFuncs:GetNWInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNWInt",
      "@bug #3374 This function will not round decimal values as it actually networks a float internally.",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {any} fallback - The value to return if we failed to retrieve the value (If it isn't set).",
      "@returns {any} - The value associated with the key"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNWInt",
    "typings": [
      "(this: Entity, key: string, fallback?: any): any"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked boolean value at specified index on the entity that is set by @EntityFuncs:SetNWBool.\n",
      "@name EntityFuncs:GetNWBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNWBool",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {any} fallback - The value to return if we failed to retrieve the value. (If it isn't set)",
      "@returns {any} - The value associated with the key"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNWBool",
    "typings": [
      "(this: Entity, key: string, fallback?: any): any"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked angle value at specified index on the entity that is set by @EntityFuncs:SetNWAngle.\n",
      "@name EntityFuncs:GetNWAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNWAngle",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {any} fallback - The value to return if we failed to retrieve the value. (If it isn't set)",
      "@returns {any} - The value associated with the key"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNWAngle",
    "typings": [
      "(this: Entity, key: string, fallback?: any): any"
    ]
  },
  {
    "comments": [
      "\nReturns the body group count of the entity.\n",
      "@name EntityFuncs:GetNumBodyGroups",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNumBodyGroups",
      "@param {Entity} this - no description",
      "@returns {number} - Amount of bodygroups the entitys model has"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNumBodyGroups",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the number of pose parameters this entity has.\n",
      "@name EntityFuncs:GetNumPoseParameters",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNumPoseParameters",
      "@param {Entity} this - no description",
      "@returns {number} - Amount of pose parameters the entity has"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNumPoseParameters",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns if the entity's rendering and transmitting has been disabled.\n",
      "@name EntityFuncs:GetNoDraw",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNoDraw",
      "@note This is equivalent to calling @EntityFuncs:IsEffectActive( EF_NODRAW )",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether the entity's rendering and transmitting has been disabled."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNoDraw",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nGets networked origin for entity.\n",
      "@name EntityFuncs:GetNetworkOrigin",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkOrigin",
      "@param {Entity} this - no description",
      "@returns {Vector} - origin"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkOrigin",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked vector value at specified index on the entity that is set by @EntityFuncs:SetNetworkedVector.\n",
      "@name EntityFuncs:GetNetworkedVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkedVector",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {Vector} fallback - The value to return if we failed to retrieve the value. ( If it isn't set )",
      "@returns {Vector} - The retrieved value"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkedVector",
    "typings": [
      "(this: Entity, key: string, fallback?: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns all the networked variables in an entity.\n",
      "@name EntityFuncs:GetNetworkedVarTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkedVarTable",
      "@param {Entity} this - no description",
      "@returns {table} - Key-Value table of all networked variables."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkedVarTable",
    "typings": [
      "(this: Entity): table"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked string value at specified index on the entity that is set by @EntityFuncs:SetNetworkedString.\n",
      "@name EntityFuncs:GetNetworkedString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkedString",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {string} fallback - The value to return if we failed to retrieve the value. ( If it isn't set )",
      "@returns {string} - The retrieved value"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkedString",
    "typings": [
      "(this: Entity, key: string, fallback?: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns callback function for given NWVar of this entity.\n",
      "@name EntityFuncs:GetNetworkedVarProxy",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkedVarProxy",
      "@note Currently this function only works for the NW2Var system (accessed by adding a 2 in between Networked and Var for most NetworkedVar functions), which will replace the original one at some point in the future",
      "@param {Entity} this - no description",
      "@param {string} name - The name of the NWVar to get callback of.",
      "@returns {function} - The callback of given NWVar, if any."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkedVarProxy",
    "typings": [
      "(this: Entity, name: string): UnknownFunc"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked integer value at specified index on the entity that is set by @EntityFuncs:SetNetworkedInt.\n",
      "@name EntityFuncs:GetNetworkedInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkedInt",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {number} fallback - The value to return if we failed to retrieve the value. ( If it isn't set )",
      "@returns {number} - The retrieved value"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkedInt",
    "typings": [
      "(this: Entity, key: string, fallback?: number): number"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked float value at specified index on the entity that is set by @EntityFuncs:SetNetworkedFloat.\nSeems to be the same as @EntityFuncs:GetNetworkedInt.\n",
      "@name EntityFuncs:GetNetworkedFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkedFloat",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {number} fallback - The value to return if we failed to retrieve the value. ( If it isn't set )",
      "@returns {number} - The retrieved value"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkedFloat",
    "typings": [
      "(this: Entity, key: string, fallback?: number): number"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked float value at specified index on the entity that is set by @EntityFuncs:SetNetworkedEntity.\n",
      "@name EntityFuncs:GetNetworkedEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkedEntity",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {Entity} fallback - The value to return if we failed to retrieve the value. ( If it isn't set )",
      "@returns {Entity} - The retrieved value"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkedEntity",
    "typings": [
      "(this: Entity, key: string, fallback?: Entity): Entity"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked boolean value at specified index on the entity that is set by @EntityFuncs:SetNetworkedBool.\n",
      "@name EntityFuncs:GetNetworkedBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkedBool",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {boolean} fallback - The value to return if we failed to retrieve the value. ( If it isn't set )",
      "@returns {boolean} - The retrieved value"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkedBool",
    "typings": [
      "(this: Entity, key: string, fallback?: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nRetrieves a networked angle value at specified index on the entity that is set by @EntityFuncs:SetNetworkedAngle.\n",
      "@name EntityFuncs:GetNetworkedAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkedAngle",
      "@param {Entity} this - no description",
      "@param {string} key - The key that is associated with the value",
      "@param {Angle} fallback - The value to return if we failed to retrieve the value. ( If it isn't set )",
      "@returns {Angle} - The retrieved value"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkedAngle",
    "typings": [
      "(this: Entity, key: string, fallback?: Angle): Angle"
    ]
  },
  {
    "comments": [
      "\nGets networked angles for entity.\n",
      "@name EntityFuncs:GetNetworkAngles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetNetworkAngles",
      "@param {Entity} this - no description",
      "@returns {Angle} - angle"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetNetworkAngles",
    "typings": [
      "(this: Entity): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the mapping name of this entity.\n",
      "@name EntityFuncs:GetName",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetName",
      "@param {Entity} this - no description",
      "@returns {string} - The name of the Entity"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetName",
    "typings": [
      "(this: Entity): string"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's movetype\n",
      "@name EntityFuncs:GetMoveType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetMoveType",
      "@param {Entity} this - no description",
      "@returns {MOVETYPE} - Move type. See @MOVETYPE enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetMoveType",
    "typings": [
      "(this: Entity): MOVETYPE"
    ]
  },
  {
    "comments": [
      "\nReturns the movement parent of this entity.\nSee @EntityFuncs:SetMoveParent for more info.\n",
      "@name EntityFuncs:GetMoveParent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetMoveParent",
      "@param {Entity} this - no description",
      "@returns {Entity} - The movement parent of this entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetMoveParent",
    "typings": [
      "(this: Entity): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the move collide type of the entity. The move collide is the way a physics object reacts to hitting an object - will it bounce, slide?\n",
      "@name EntityFuncs:GetMoveCollide",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetMoveCollide",
      "@param {Entity} this - no description",
      "@returns {MOVECOLLIDE} - The move collide type, see @MOVECOLLIDE enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetMoveCollide",
    "typings": [
      "(this: Entity): MOVECOLLIDE"
    ]
  },
  {
    "comments": [
      "\nReturns the amount a momentary_rot_button entity is turned based on the given angle. 0 meaning completely turned closed, 1 meaning completely turned open.\n",
      "@name EntityFuncs:GetMomentaryRotButtonPos",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetMomentaryRotButtonPos",
      "@warning This only works on momentary_rot_button entities.",
      "@param {Entity} this - no description",
      "@param {Angle} turnAngle - The angle of rotation to compare - usually should be @EntityFuncs:GetAngles.",
      "@returns {number} - The amount the momentary_rot_button is turned, ranging from 0 to 1, or nil if the entity is not a momentary_rot_button."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetMomentaryRotButtonPos",
    "typings": [
      "(this: Entity, turnAngle: Angle): number"
    ]
  },
  {
    "comments": [
      "\nGets the selected entity's model scale.\n",
      "@name EntityFuncs:GetModelScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetModelScale",
      "@param {Entity} this - no description",
      "@returns {number} - Scale of that entity's model."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetModelScale",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's model render bounds. By default this will return the same bounds as @EntityFuncs:GetModelBounds.\n",
      "@name EntityFuncs:GetModelRenderBounds",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetModelRenderBounds",
      "@validate",
      "@param {Entity} this - no description",
      "@returns {Vector} - The minimum vector of the bounds",
      "@returns {Vector} - The maximum vector of the bounds",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetModelRenderBounds",
    "typings": [
      "(this: Entity): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nGets the models radius.\n",
      "@name EntityFuncs:GetModelRadius",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetModelRadius",
      "@param {Entity} this - no description",
      "@returns {number} - The radius of the model"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetModelRadius",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the contents of the entity's current model.\n",
      "@name EntityFuncs:GetModelContents",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetModelContents",
      "@param {Entity} this - no description",
      "@returns {CONTENTS} - The contents of the entity's model. See @CONTENTS enum."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetModelContents",
    "typings": [
      "(this: Entity): CONTENTS"
    ]
  },
  {
    "comments": [
      "\nGets the physics bone count of the entity's model. This is only applicable to ragdoll models and only to \"anim\" type [Scripted Entities](https://wiki.garrysmod.com/page/Scripted%20Entities).\n",
      "@name EntityFuncs:GetModelPhysBoneCount",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetModelPhysBoneCount",
      "@param {Entity} this - no description",
      "@returns {number} - How many physics bones exist on the model."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetModelPhysBoneCount",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's model bounds. This is different than the collision bounds/hull. This is not scaled with @EntityFuncs:SetModelScale, and will return the model's original, unmodified mins and maxs.\n",
      "@name EntityFuncs:GetModelBounds",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetModelBounds",
      "@param {Entity} this - no description",
      "@returns {Vector} - The minimum vector of the bounds",
      "@returns {Vector} - The maximum vector of the bounds",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetModelBounds",
    "typings": [
      "(this: Entity): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nGets the model of given entity.\n",
      "@name EntityFuncs:GetModel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetModel",
      "@bug #2246 This does not necessarily return the model's path, as is the case for brush and virtual models. This is intentional behaviour, however, there is currently no way to retrieve the actual file path.",
      "@param {Entity} this - no description",
      "@returns {string} - The entity's model. Will be a filesystem path for most models.\nThis will be @nil type for entities which cannot have models, such as point entities."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetModel",
    "typings": [
      "(this: Entity): string"
    ]
  },
  {
    "comments": [
      "\nReturns the max health that the entity was given. It can be set via @EntityFuncs:SetMaxHealth.\n",
      "@name EntityFuncs:GetMaxHealth",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetMaxHealth",
      "@param {Entity} this - no description",
      "@returns {number} - Max health."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetMaxHealth",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the surface material of this entity.\n",
      "@name EntityFuncs:GetMaterialType",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetMaterialType",
      "@param {Entity} this - no description",
      "@returns {MAT} - Surface material. See @MAT enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetMaterialType",
    "typings": [
      "(this: Entity): MAT"
    ]
  },
  {
    "comments": [
      "\nReturns all materials of the entity's model.\nThis function is unaffected by @EntityFuncs:SetSubMaterial as it returns the original materials.\n",
      "@name EntityFuncs:GetMaterials",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetMaterials",
      "@bug #3362 The server's values take priority on the client.",
      "@bug  The table returned by this function will not contain materials if they are missing from the disk/repository. This means that if you are attempting to find the ID of a material to replace with @EntityFuncs:SetSubMaterial and there are missing materials on the model, all subsequent materials will be offset in the table, meaning that the ID you are trying to get will be incorrect.",
      "@bug #3216 This table is limited to 256 materials, even if the entity has more.",
      "@param {Entity} this - no description",
      "@returns {table} - A table containing full paths to the materials of the model."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetMaterials",
    "typings": [
      "(this: Entity): table"
    ]
  },
  {
    "comments": [
      "\nReturns the material override for this entity.\nReturns an empty string if no material override exists. Use @EntityFuncs:GetMaterials to list it's default materials.\n",
      "@name EntityFuncs:GetMaterial",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetMaterial",
      "@bug #3362 The server's value takes priority on the client.",
      "@param {Entity} this - no description",
      "@returns {string} - material"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetMaterial",
    "typings": [
      "(this: Entity): string"
    ]
  },
  {
    "comments": [
      "\nGets the entity's scale manipulation of the given bone. Normal scale is Vector( 1, 1, 1 )\n",
      "@name EntityFuncs:GetManipulateBoneScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetManipulateBoneScale",
      "@param {Entity} this - no description",
      "@param {number} boneID - The bone's ID",
      "@returns {Vector} - The entity's scale manipulation of the given bone"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetManipulateBoneScale",
    "typings": [
      "(this: Entity, boneID: number): Vector"
    ]
  },
  {
    "comments": [
      "\nGets the entity's position manipulation of the given bone. This is relative to the default position, so it is zero when unmodified.\n",
      "@name EntityFuncs:GetManipulateBonePosition",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetManipulateBonePosition",
      "@param {Entity} this - no description",
      "@param {number} boneId - The bone's ID",
      "@returns {Vector} - The entity's position manipulation of the given bone."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetManipulateBonePosition",
    "typings": [
      "(this: Entity, boneId: number): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the jiggle amount of the entity's bone.\nSee @EntityFuncs:ManipulateBoneJiggle for more info.\n",
      "@name EntityFuncs:GetManipulateBoneJiggle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetManipulateBoneJiggle",
      "@param {Entity} this - no description",
      "@param {number} boneID - The bone ID",
      "@returns {number} - Returns a value ranging from 0 to 255 depending on the value set with @EntityFuncs:ManipulateBoneJiggle."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetManipulateBoneJiggle",
    "typings": [
      "(this: Entity, boneID: number): number"
    ]
  },
  {
    "comments": [
      "\nGets the entity's angle manipulation of the given bone. This is relative to the default angle, so the angle is zero when unmodified.\n",
      "@name EntityFuncs:GetManipulateBoneAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetManipulateBoneAngles",
      "@param {Entity} this - no description",
      "@param {number} boneID - The bone's ID",
      "@returns {Angle} - The entity's angle manipulation of the given bone."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetManipulateBoneAngles",
    "typings": [
      "(this: Entity, boneID: number): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns entity's position relative to it's parent.\n",
      "@name EntityFuncs:GetLocalPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetLocalPos",
      "@param {Entity} this - no description",
      "@returns {Vector} - Relative position"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetLocalPos",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the non-VPhysics angular velocity of the entity relative to its parent entity.\n",
      "@name EntityFuncs:GetLocalAngularVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetLocalAngularVelocity",
      "@param {Entity} this - no description",
      "@returns {Angle} - The velocity"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetLocalAngularVelocity",
    "typings": [
      "(this: Entity): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the entity that is being used as the light origin position for this entity.\n",
      "@name EntityFuncs:GetLightingOriginEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetLightingOriginEntity",
      "@param {Entity} this - no description",
      "@returns {Entity} - The lighting entity. This will usually be NULL."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetLightingOriginEntity",
    "typings": [
      "(this: Entity): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the rotation of the entity relative to its parent entity.\n",
      "@name EntityFuncs:GetLocalAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetLocalAngles",
      "@param {Entity} this - no description",
      "@returns {Angle} - Relative angle"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetLocalAngles",
    "typings": [
      "(this: Entity): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the current weight of the layer. See @EntityFuncs:SetLayerWeight for more information.\n",
      "@name EntityFuncs:GetLayerWeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetLayerWeight",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@returns {number} - The current weight of the layer"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetLayerWeight",
    "typings": [
      "(this: Entity, layerID: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the duration of given layer.\n",
      "@name EntityFuncs:GetLayerDuration",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetLayerDuration",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@returns {number} - The duration of the layer"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetLayerDuration",
    "typings": [
      "(this: Entity, layerID: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the animation cycle/frame for given layer.\n",
      "@name EntityFuncs:GetLayerCycle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetLayerCycle",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} layerID - The Layer ID",
      "@returns {number} - The animation cycle/frame for given layer."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetLayerCycle",
    "typings": [
      "(this: Entity, layerID: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table containing all key values the entity has.\n",
      "@name EntityFuncs:GetKeyValues",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetKeyValues",
      "@note This only includes engine defined key values. \"targetname\" is not an actual key value in-engine, use @EntityFuncs:GetName for that instead. For custom key values, use @GamemodeHooks:EntityKeyValue or @EntityHooks:KeyValue to capture and store them.",
      "@param {Entity} this - no description",
      "@returns {table} - A table of key values."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetKeyValues",
    "typings": [
      "(this: Entity): table"
    ]
  },
  {
    "comments": [
      "\nAn interface for accessing internal key values on entities.\nThis function returns variables created with **DEFINE_KEYFIELD** in C++ entities.\nSee @EntityFuncs:GetSaveTable for a more detailed explanation.\n",
      "@name EntityFuncs:GetInternalVariable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetInternalVariable",
      "@param {Entity} this - no description",
      "@param {string} VariableName - Name of variable corresponding to an entity save value.",
      "@returns {any} - The internal variable value"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetInternalVariable",
    "typings": [
      "(this: Entity, VariableName: string): any"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of hitbox sets in the entity.\n",
      "@name EntityFuncs:GetHitboxSetCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetHitboxSetCount",
      "@param {Entity} this - no description",
      "@returns {number} - The amount of hitbox sets in the entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetHitboxSetCount",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns entity's current hit box set\n",
      "@name EntityFuncs:GetHitboxSet",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetHitboxSet",
      "@param {Entity} this - no description",
      "@returns {number} - The current hit box set id, or no value if the entity doesn't have hit boxes",
      "@returns {string} - The current hit box set name, or no value if the entity doesn't have hit boxes",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetHitboxSet",
    "typings": [
      "(this: Entity): [number, string]"
    ]
  },
  {
    "comments": [
      "\nReturns the number of hit box groups that an entity has.\n",
      "@name EntityFuncs:GetHitBoxGroupCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetHitBoxGroupCount",
      "@param {Entity} this - no description",
      "@returns {number} - number of hit box groups"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetHitBoxGroupCount",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nGets how many hit boxes are in a given hit box group\n",
      "@name EntityFuncs:GetHitBoxCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetHitBoxCount",
      "@param {Entity} this - no description",
      "@param {number} group - The number of the hit box group",
      "@returns {number} - The number of hit boxes."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetHitBoxCount",
    "typings": [
      "(this: Entity, group: number): number"
    ]
  },
  {
    "comments": [
      "\nGets the bounds (min and max corners) of a hit box.\n",
      "@name EntityFuncs:GetHitBoxBounds",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetHitBoxBounds",
      "@param {Entity} this - no description",
      "@param {number} hitbox - The number of the hit box.",
      "@param {number} group - The group of the hit box. This should be 0 in most cases.",
      "@returns {Vector} - Hit box mins. Will be nil if the hit box index was out of range.",
      "@returns {Vector} - Hit box maxs. Will be nil if the hit box index was out of range.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetHitBoxBounds",
    "typings": [
      "(this: Entity, hitbox: number, group: number): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "@name EntityFuncs:GetHitboxBone",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetHitboxBone",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetHitboxBone",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nGets the bone the hit box is attached to.\n",
      "@name EntityFuncs:GetHitBoxBone",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetHitBoxBone",
      "@param {Entity} this - no description",
      "@param {number} hitbox - The number of the hit box.",
      "@param {number} group - The number of the hit box group. This should be 0 in most cases.\nNumbering for these groups start from 0. The total group count can be found with @EntityFuncs:GetHitBoxGroupCount.",
      "@returns {number} - The number of the bone. Will be nil if the hit box index was out of range."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetHitBoxBone",
    "typings": [
      "(this: Entity, hitbox: number, group: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's ground speed velocity, which is based on the entity's walk/run speed and/or the ground speed of their sequence ( @EntityFuncs:GetSequenceGroundSpeed ). Will return an empty @Vector type if the entity isn't moving on the ground.\n",
      "@name EntityFuncs:GetGroundSpeedVelocity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetGroundSpeedVelocity",
      "@param {Entity} this - no description",
      "@returns {Vector} - The ground speed velocity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetGroundSpeedVelocity",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the object the entity is standing on.\n",
      "@name EntityFuncs:GetGroundEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetGroundEntity",
      "@param {Entity} this - no description",
      "@returns {Entity} - The ground entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetGroundEntity",
    "typings": [
      "(this: Entity): Entity"
    ]
  },
  {
    "comments": [
      "\nGets the gravity multiplier of the entity.\n",
      "@name EntityFuncs:GetGravity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetGravity",
      "@param {Entity} this - no description",
      "@returns {number} - gravityMultiplier"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetGravity",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns how much friction an entity has. Entities default to 1 (100%) and can be higher or even negative.\n",
      "@name EntityFuncs:GetFriction",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetFriction",
      "@param {Entity} this - no description",
      "@returns {number} - friction"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetFriction",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the forward vector of the entity, as a normalized direction vector\n",
      "@name EntityFuncs:GetForward",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetForward",
      "@param {Entity} this - no description",
      "@returns {Vector} - forwardDir"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetForward",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns current weight ( value ) of the flex.\n",
      "@name EntityFuncs:GetFlexWeight",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetFlexWeight",
      "@param {Entity} this - no description",
      "@param {number} flex - The ID of the flex to get weight of",
      "@returns {number} - The current weight of the flex"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetFlexWeight",
    "typings": [
      "(this: Entity, flex: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the flex scale of the entity.\n",
      "@name EntityFuncs:GetFlexScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetFlexScale",
      "@param {Entity} this - no description",
      "@returns {number} - The flex scale"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetFlexScale",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the number of flexes this entity has.\n",
      "@name EntityFuncs:GetFlexNum",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetFlexNum",
      "@param {Entity} this - no description",
      "@returns {number} - The number of flexes."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetFlexNum",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns flex name.\n",
      "@name EntityFuncs:GetFlexName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetFlexName",
      "@param {Entity} this - no description",
      "@param {number} id - The flex id to look up name of",
      "@returns {string} - The flex name"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetFlexName",
    "typings": [
      "(this: Entity, id: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the ID of the flex based on given name.\n",
      "@name EntityFuncs:GetFlexIDByName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetFlexIDByName",
      "@param {Entity} this - no description",
      "@param {string} name - The name of the flex to get the ID of. Case sensitive.",
      "@returns {number} - The ID of flex\n* nil if no flex with given name was found"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetFlexIDByName",
    "typings": [
      "(this: Entity, name: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns acceptable value range for the flex.\n",
      "@name EntityFuncs:GetFlexBounds",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetFlexBounds",
      "@param {Entity} this - no description",
      "@param {number} flex - The ID of the flex to look up bounds of",
      "@returns {number} - The minimum value for this flex",
      "@returns {number} - The maximum value for this flex",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetFlexBounds",
    "typings": [
      "(this: Entity, flex: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns all flags of given entity.\n",
      "@name EntityFuncs:GetFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetFlags",
      "@param {Entity} this - no description",
      "@returns {FL} - Flags of given entity as a bitflag, see @FL enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetFlags",
    "typings": [
      "(this: Entity): FL"
    ]
  },
  {
    "comments": [
      "\nReturns the elasticity of this entity, used by some flying entities such as the Helicopter NPC to determine how much it should bounce around when colliding.\n",
      "@name EntityFuncs:GetElasticity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetElasticity",
      "@param {Entity} this - no description",
      "@returns {number} - elasticity"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetElasticity",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns a bit flag of all engine flags of the entity.\n",
      "@name EntityFuncs:GetEFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetEFlags",
      "@param {Entity} this - no description",
      "@returns {EFL} - Engine flags, see @EFL enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetEFlags",
    "typings": [
      "(this: Entity): EFL"
    ]
  },
  {
    "comments": [
      "\nReturns a bit flag of all engine effect flags of the entity.\n",
      "@name EntityFuncs:GetEffects",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetEffects",
      "@param {Entity} this - no description",
      "@returns {EF} - Engine effect flags, see @EF enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetEffects",
    "typings": [
      "(this: Entity): EF"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nGet a vector stored in the datatable of the entity.\n",
      "@name EntityFuncs:GetDTVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetDTVector",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 63.\nSpecifies what key to grab from datatable.",
      "@returns {Vector} - Requested vector."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetDTVector",
    "typings": [
      "(this: Entity, key: number): Vector"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nGet a string stored in the datatable of the entity.\n",
      "@name EntityFuncs:GetDTString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetDTString",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 3.\nSpecifies what key to grab from datatable.",
      "@returns {string} - Requested string."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetDTString",
    "typings": [
      "(this: Entity, key: number): string"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nGet an integer stored in the datatable of the entity.\n",
      "@name EntityFuncs:GetDTInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetDTInt",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 63.\nSpecifies what key to grab from datatable.",
      "@returns {number} - 32-bit signed integer"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetDTInt",
    "typings": [
      "(this: Entity, key: number): number"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nGet a float stored in the datatable of the entity.\n",
      "@name EntityFuncs:GetDTFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetDTFloat",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 31.\nSpecifies what key to grab from datatable.",
      "@returns {number} - Requested float."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetDTFloat",
    "typings": [
      "(this: Entity, key: number): number"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nReturns an entity stored in the datatable of the entity.\n",
      "@name EntityFuncs:GetDTEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetDTEntity",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 63.\nSpecifies what key to grab from datatable.",
      "@returns {Entity} - Requested entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetDTEntity",
    "typings": [
      "(this: Entity, key: number): Entity"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nGet a boolean stored in the datatable of the entity.\n",
      "@name EntityFuncs:GetDTBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetDTBool",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 63.\nSpecifies what key to grab from datatable.",
      "@returns {boolean} - Requested boolean."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetDTBool",
    "typings": [
      "(this: Entity, key: number): boolean"
    ]
  },
  {
    "comments": [
      "\nThis is called internally by the @EntityFuncs:NetworkVar system, you can use this in cases where using NetworkVar is not possible.\nGet an angle stored in the datatable of the entity.\n",
      "@name EntityFuncs:GetDTAngle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetDTAngle",
      "@internal",
      "@param {Entity} this - no description",
      "@param {number} key - Goes from 0 to 63.\nSpecifies what key to grab from datatable.",
      "@returns {Angle} - Requested angle."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetDTAngle",
    "typings": [
      "(this: Entity, key: number): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the frame of the currently played sequence. This will be a number between 0 and 1 as a representation of sequence progress.\n",
      "@name EntityFuncs:GetCycle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetCycle",
      "@param {Entity} this - no description",
      "@returns {number} - The frame of the currently played sequence"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetCycle",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether this entity uses custom collision check set by @EntityFuncs:SetCustomCollisionCheck.\n",
      "@name EntityFuncs:GetCustomCollisionCheck",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetCustomCollisionCheck",
      "@param {Entity} this - no description",
      "@returns {boolean} - Whether this entity uses custom collision check or not"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetCustomCollisionCheck",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the creator of the SENT.\n",
      "@name EntityFuncs:GetCreator",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetCreator",
      "@param {Entity} this - no description",
      "@returns {Player} - The creator, NULL for no creator."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetCreator",
    "typings": [
      "(this: Entity): Player"
    ]
  },
  {
    "comments": [
      "\nReturns the time the entity was created on, relative to @CurTime function.\n",
      "@name EntityFuncs:GetCreationTime",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetCreationTime",
      "@param {Entity} this - no description",
      "@returns {number} - The time the entity was created on."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetCreationTime",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the two entities physobjects involved in a constraint ent, or no value if the entity is not a constraint.\n",
      "@name EntityFuncs:GetConstrainedPhysObjects",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetConstrainedPhysObjects",
      "@param {Entity} this - no description",
      "@returns {PhysObj} - phys1",
      "@returns {PhysObj} - phys2",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetConstrainedPhysObjects",
    "typings": [
      "(this: Entity): [PhysObj, PhysObj]"
    ]
  },
  {
    "comments": [
      "\nReturns entity's creation ID. Unlike @EntityFuncs:EntIndex or  @EntityFuncs:MapCreationID, it will always increase and old values won't be reused.\n",
      "@name EntityFuncs:GetCreationID",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetCreationID",
      "@param {Entity} this - no description",
      "@returns {number} - The creation ID"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetCreationID",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the two entities involved in a constraint ent, or nil if the entity is not a constraint.\n",
      "@name EntityFuncs:GetConstrainedEntities",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetConstrainedEntities",
      "@param {Entity} this - no description",
      "@returns {Entity} - ent1",
      "@returns {Entity} - ent2",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetConstrainedEntities",
    "typings": [
      "(this: Entity): [Entity, Entity]"
    ]
  },
  {
    "comments": [
      "\nReturns the color the entity is set to.\n",
      "@name EntityFuncs:GetColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetColor",
      "@bug #2407 The returned color will not have the color metatable.",
      "@param {Entity} this - no description",
      "@returns {IColor} - The color of the entity as a @IColor structure."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetColor",
    "typings": [
      "(this: Entity): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's collision group\n",
      "@name EntityFuncs:GetCollisionGroup",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetCollisionGroup",
      "@param {Entity} this - no description",
      "@returns {COLLISION_GROUP} - The collision group. See @COLLISION_GROUP enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetCollisionGroup",
    "typings": [
      "(this: Entity): COLLISION_GROUP"
    ]
  },
  {
    "comments": [
      "\nReturns an entity's collision bounding box. In most cases, this will return the same bounding box as @EntityFuncs:GetModelBounds unless the entity does not have a physics mesh or it has a @PhysObj type different from the default.\n",
      "@name EntityFuncs:GetCollisionBounds",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetCollisionBounds",
      "@bug #223 This can be out-of-sync between the client and server for weapons.",
      "@param {Entity} this - no description",
      "@returns {Vector} - The minimum vector of the collision bounds",
      "@returns {Vector} - The maximum vector of the collision bounds",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetCollisionBounds",
    "typings": [
      "(this: Entity): [Vector, Vector]"
    ]
  },
  {
    "comments": [
      "\nReturns the classname of a entity. This is often the name of the Lua file or folder containing the files for the entity\n",
      "@name EntityFuncs:GetClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetClass",
      "@param {Entity} this - no description",
      "@returns {string} - The entity's classname"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetClass",
    "typings": [
      "(this: Entity): string"
    ]
  },
  {
    "comments": [
      "\nGets the children of the entity - that is, every entity whose move parent is this entity.\n",
      "@name EntityFuncs:GetChildren",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetChildren",
      "@note This function returns @EntityFuncs:SetMoveParent children, **NOT** @EntityFuncs:SetParent!@EntityFuncs:SetParent however also calls @EntityFuncs:SetMoveParent.This means that some entities in the returned list might have a NULL @EntityFuncs:GetParent.This also means that using this function on players will return their weapons on the client but not the server.",
      "@param {Entity} this - no description",
      "@returns {table} - A list of movement children entities"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetChildren",
    "typings": [
      "(this: Entity): table"
    ]
  },
  {
    "comments": [
      "\nReturns ids of child bones of given bone.\n",
      "@name EntityFuncs:GetChildBones",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetChildBones",
      "@param {Entity} this - no description",
      "@param {number} boneid - Bone id to lookup children of",
      "@returns {table} - A table of bone ids"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetChildBones",
    "typings": [
      "(this: Entity, boneid: number): table"
    ]
  },
  {
    "comments": [
      "\nReturns the specified hook callbacks for this entity added with @EntityFuncs:AddCallback\nThe callbacks can then be removed with @EntityFuncs:RemoveCallback.\n",
      "@name EntityFuncs:GetCallbacks",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetCallbacks",
      "@param {Entity} this - no description",
      "@param {string} hook - The hook to retrieve the callbacks from, see [Entity Callbacks](https://wiki.garrysmod.com/page/Entity%20Callbacks) for the possible hooks.",
      "@returns {table} - A table containing the callbackid and function of all the callbacks for the specified hook"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetCallbacks",
    "typings": [
      "(this: Entity, hook: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of planes of non-nodraw brush model surfaces of the entity's model.\n",
      "@name EntityFuncs:GetBrushPlaneCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBrushPlaneCount",
      "@param {Entity} this - no description",
      "@returns {number} - The amount of brush model planes of the entity's model. This will be 0 for any non-brush model."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBrushPlaneCount",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table of brushes surfaces for brush model entities.\n",
      "@name EntityFuncs:GetBrushSurfaces",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBrushSurfaces",
      "@param {Entity} this - no description",
      "@returns {SurfaceInfo[]} - Table of @SurfaceInfo types if the entity has a brush model, or @no value type otherwise."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBrushSurfaces",
    "typings": [
      "(this: Entity): SurfaceInfo[]"
    ]
  },
  {
    "comments": [
      "\nReturns info about given plane of non-nodraw brush model surfaces of the entity's model. Works on worldspawn as well.\n",
      "@name EntityFuncs:GetBrushPlane",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBrushPlane",
      "@warning This only works on entities with brush models.",
      "@param {Entity} this - no description",
      "@param {number} id - The index of the plane to get info of. Starts from 0.",
      "@returns {Vector} - The origin of the plane.\nThis will be either the first vertex's position (if available) or the plane's normal multiplied by the plane's distance.",
      "@returns {Vector} - The normal of the plane.",
      "@returns {number} - The \"distance\" of the plane.\nThe distance is the dot product of the plane's normal and the point it was initialized with.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBrushPlane",
    "typings": [
      "(this: Entity, id: number): [Vector, Vector, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the surface property of the specified bone.\n",
      "@name EntityFuncs:GetBoneSurfaceProp",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBoneSurfaceProp",
      "@param {Entity} this - no description",
      "@param {number} bone - The bone id. See @EntityFuncs:LookupBone.",
      "@returns {string} - The surface property of the bone to be used with @util.GetSurfaceIndex or an empty string on failure."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBoneSurfaceProp",
    "typings": [
      "(this: Entity, bone: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the position and angle of the given attachment, relative to the world.\n",
      "@name EntityFuncs:GetBonePosition",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBonePosition",
      "@bug #884 This can return the server's position during server lag.",
      "@bug #3285 This can return garbage serverside or @Vector function(0,0,0) for v49 models.",
      "@bug #3739 This can return garbage if a trace passed through the target bone during bone matrix access.",
      "@param {Entity} this - no description",
      "@param {number} boneIndex - The bone index of the bone to get the position of. See @EntityFuncs:LookupBone.",
      "@returns {Vector} - The bone's position relative to the world.",
      "@returns {Angle} - The bone's angle relative to the world.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBonePosition",
    "typings": [
      "(this: Entity, boneIndex: number): [Vector, Angle]"
    ]
  },
  {
    "comments": [
      "\nReturns parent bone of given bone.\n",
      "@name EntityFuncs:GetBoneParent",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBoneParent",
      "@note Will return -1 for @ClientsideModel function until @EntityFuncs:SetupBones is called on the entity.",
      "@param {Entity} this - no description",
      "@param {number} bone - The bode ID of the bone to get parent of",
      "@returns {number} - Parent bone ID or -1 if we failed for some reason."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBoneParent",
    "typings": [
      "(this: Entity, bone: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns name of given bone id.\n",
      "@name EntityFuncs:GetBoneName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBoneName",
      "@param {Entity} this - no description",
      "@param {number} index - ID of bone to lookup name of",
      "@returns {string} - The name of given bone\n* nil in case we failed or entity doesn't have a model\n* \"__INVALIDBONE__\" in case the name cannot be read or the index is out of range."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBoneName",
    "typings": [
      "(this: Entity, index: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the matrix (position / rotation transform) of a given bone entity.\n",
      "@name EntityFuncs:GetBoneMatrix",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBoneMatrix",
      "@bug #884 This can return the server's matrix during server lag.",
      "@bug #3285 This can return garbage serverside or a 0,0,0 fourth column (represents position) for v49 models.",
      "@param {Entity} this - no description",
      "@param {number} boneID - The bone to retrieve matrix of.\n* Bones clientside and serverside will differ",
      "@returns {VMatrix} - The matrix\n* Some entities don't update animation every frame such as prop_physics and won't have accurate bone matrix."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBoneMatrix",
    "typings": [
      "(this: Entity, boneID: number): VMatrix"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of bones in the entity.\n",
      "@name EntityFuncs:GetBoneCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBoneCount",
      "@note Will return -1 for @ClientsideModel function or undrawn entities until @EntityFuncs:SetupBones is called on the entity.",
      "@param {Entity} this - no description",
      "@returns {number} - The amount of bones in given entity; -1 on failure."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBoneCount",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns the value of the bone controller with the specified ID.\n",
      "@name EntityFuncs:GetBoneController",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBoneController",
      "@note This is the precursor of pose parameters, and only works for Half Life 1: Source models supporting it.",
      "@param {Entity} this - no description",
      "@param {number} boneID - ID of the bone controller. Goes from 0 to 3.",
      "@returns {number} - The value set on the bone controller."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBoneController",
    "typings": [
      "(this: Entity, boneID: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the contents of the specified bone.\n",
      "@name EntityFuncs:GetBoneContents",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBoneContents",
      "@param {Entity} this - no description",
      "@param {number} bone - The bone id. See @EntityFuncs:LookupBone.",
      "@returns {CONTENTS} - The contents as a @CONTENTS enum or 0 on failure."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBoneContents",
    "typings": [
      "(this: Entity, bone: number): CONTENTS"
    ]
  },
  {
    "comments": [
      "\nReturns a list of all bodygroups of the entity.\n",
      "@name EntityFuncs:GetBodyGroups",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBodyGroups",
      "@param {Entity} this - no description",
      "@returns {BodyGroupData[]} - Bodygroups as a table of @BodyGroupData structures if the entity can have bodygroups."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBodyGroups",
    "typings": [
      "(this: Entity): BodyGroupData[]"
    ]
  },
  {
    "comments": [
      "\nGets the name of specific bodygroup for given entity.\n",
      "@name EntityFuncs:GetBodygroupName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBodygroupName",
      "@param {Entity} this - no description",
      "@param {number} id - The id of bodygroup to get the name of.",
      "@returns {string} - The name of the bodygroup"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBodygroupName",
    "typings": [
      "(this: Entity, id: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns the count of possible values for this bodygroup.\nThis is **not** the maximum value, since the bodygroups start with 0, not 1.\n",
      "@name EntityFuncs:GetBodygroupCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBodygroupCount",
      "@param {Entity} this - no description",
      "@param {number} bodygroup - The ID of bodygroup to retrieve count of.",
      "@returns {number} - Count of values of passed bodygroup."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBodygroupCount",
    "typings": [
      "(this: Entity, bodygroup: number): number"
    ]
  },
  {
    "comments": [
      "\nGets the exact value for specific bodygroup of given entity.\n",
      "@name EntityFuncs:GetBodygroup",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBodygroup",
      "@param {Entity} this - no description",
      "@param {number} id - The id of bodygroup to get value of. Starts from 0.",
      "@returns {number} - Current bodygroup. Starts from 0."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBodygroup",
    "typings": [
      "(this: Entity, id: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the blood color of this entity. This can be set with @EntityFuncs:SetBloodColor.\n",
      "@name EntityFuncs:GetBloodColor",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBloodColor",
      "@param {Entity} this - no description",
      "@returns {BLOOD_COLOR} - Color from @BLOOD_COLOR enum"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBloodColor",
    "typings": [
      "(this: Entity): BLOOD_COLOR"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's base velocity which is their velocity due to forces applied by other entities. This includes entity-on-entity collision or riding a treadmill.\n",
      "@name EntityFuncs:GetBaseVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetBaseVelocity",
      "@param {Entity} this - no description",
      "@returns {Vector} - The base velocity of the entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetBaseVelocity",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nCalled to determine how good an NPC is at using a particular weapon.\n[Category:ENT_AI_Hooks](https://wiki.garrysmod.com/page/Category:ENT_AI_Hooks)\n",
      "@name EntityHooks:GetAttackSpread",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/GetAttackSpread",
      "@note \"ai\" base only",
      "@param {_ENTITY} this - no description",
      "@param {Entity} wep - The weapon being used by the NPC.",
      "@param {Entity} target - The target the NPC is attacking",
      "@returns {number} - The number of degrees of inaccuracy in the NPC's attack."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "GetAttackSpread",
    "typings": [
      "(this: _ENTITY, wep: Entity, target: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table containing all attachments of the given entitys model.\nReturns an empty table or **nil** in case it's model has no attachments.\n",
      "@name EntityFuncs:GetAttachments",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetAttachments",
      "@bug #3167 This can have inconsistent results in single-player.",
      "@param {Entity} this - no description",
      "@returns {AttachmentData} - Attachment data. See @AttachmentData structure."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetAttachments",
    "typings": [
      "(this: Entity): AttachmentData"
    ]
  },
  {
    "comments": [
      "\nGets the orientation and position of the attachment by its ID, returns nothing if the attachment does not exist.\n",
      "@name EntityFuncs:GetAttachment",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetAttachment",
      "@note The update rate of this function is limited by the setting of ENT.AutomaticFrameAdvance for [Scripted Entities](https://wiki.garrysmod.com/page/Scripted%20Entities)!",
      "@bug #1255 This will return improper values for viewmodels if used in @GamemodeHooks:CalcView.",
      "@param {Entity} this - no description",
      "@param {number} attachmentId - The internal ID of the attachment.",
      "@returns {AngPos} - The angle and position of the attachment. See the @AngPos structure. Most notably, the table contains the keys \"Ang\" and \"Pos\"."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetAttachment",
    "typings": [
      "(this: Entity, attachmentId: number): AngPos"
    ]
  },
  {
    "comments": [
      "\nReturns the last time the entity had an animation update. Returns 0 if the entity doesn't animate.\n",
      "@name EntityFuncs:GetAnimTime",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetAnimTime",
      "@param {Entity} this - no description",
      "@returns {number} - The last time the entity had an animation update."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetAnimTime",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table containing the number of frames, flags, name, and FPS of an entity's animation ID.\n",
      "@name EntityFuncs:GetAnimInfo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetAnimInfo",
      "@note Animation ID is not the same as sequence ID.",
      "@param {Entity} this - no description",
      "@param {number} animIndex - The animation ID to look up",
      "@returns {table} - Information about the animation, or nil if the index is out of bounds"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetAnimInfo",
    "typings": [
      "(this: Entity, animIndex: number): table"
    ]
  },
  {
    "comments": [
      "\nGets the angles of given entity.\n",
      "@name EntityFuncs:GetAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetAngles",
      "@bug #2764 This returns incorrect results for the local player clientside.",
      "@bug #3106 This will return the local player's @EyeAngles function in [rendering hooks](http://wiki.garrysmod.com/page/Category:3D_Rendering_Hooks).",
      "@bug #3107 This will return @Angle function(0,0,0) in [rendering hooks](http://wiki.garrysmod.com/page/Category:3D_Rendering_Hooks) while paused in single-player.",
      "@param {Entity} this - no description",
      "@returns {Angle} - The angles of the entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetAngles",
    "typings": [
      "(this: Entity): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the entity's velocity.\n",
      "@name EntityFuncs:GetAbsVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/GetAbsVelocity",
      "@note Actually binds to CBaseEntity::GetLocalVelocity() which retrieves the velocity of the entity due to its movement in the world from forces such as gravity. Does not include velocity from entity-on-entity collision.",
      "@param {Entity} this - no description",
      "@returns {Vector} - The velocity of the entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "GetAbsVelocity",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nAdvances the cycle of an animated entity.\nAnimations that loop will automatically reset the cycle so you don't have to - ones that do not will stop animating once you reach the end of their sequence.\n",
      "@name EntityFuncs:FrameAdvance",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/FrameAdvance",
      "@param {Entity} this - no description",
      "@param {number} interval - How many seconds to advance the cycle. Set to 0 to let the engine calculate this for you based on @CurTime function.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "FrameAdvance",
    "typings": [
      "(this: Entity, interval: number): void"
    ]
  },
  {
    "comments": [
      "\nForces the Entity to be dropped, when it is being held by a player's gravitygun or physgun.\n",
      "@name EntityFuncs:ForcePlayerDrop",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/ForcePlayerDrop",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "ForcePlayerDrop",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nMakes an entity follow another entity's bone.\nInternally this function calls @EntityFuncs:SetParent( parent, boneid ) and @EntityFuncs:AddEffects( EF_FOLLOWBONE ).\n",
      "@name EntityFuncs:FollowBone",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/FollowBone",
      "@note If the entity vibrates, you probably need to run @EntityFuncs:SetPredictable( false ) clientside.",
      "@warning This function will not work if the target bone's parent bone is invalid or if the bone is not used by VERTEX LOD0",
      "@param {Entity} this - no description",
      "@param {Entity} parent - The entity to follow the bone of. If unset, removes the FollowBone effect.",
      "@param {number} boneid - The bone to follow",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "FollowBone",
    "typings": [
      "(this: Entity, parent?: Entity, boneid: number): void"
    ]
  },
  {
    "comments": [
      "\nFires a bullet.\nWhen used in a [ WEAPON](https://wiki.garrysmod.com/page/Category:WEAPON_Hooks%20) hook such as @WeaponHooks:Think or @WeaponHooks:PrimaryAttack, it will use @Player:LagCompensation internally.\n",
      "@name EntityFuncs:FireBullets",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/FireBullets",
      "@note Lag compensation will not work if this function is called in a timer, regardless if the timer was made in a [WEAPON](https://wiki.garrysmod.com/page/Category:WEAPON_Hooks) hook.",
      "@param {Entity} this - no description",
      "@param {Bullet} bulletInfo - The bullet data to be used. See the @Bullet structure.",
      "@param {boolean} suppressHostEvents - Has the effect of encasing the FireBullets call in @SuppressHostEvents function, only works in multiplayer.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "FireBullets",
    "typings": [
      "(this: Entity, bulletInfo: Bullet, suppressHostEvents?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled before firing clientside animation events, such as muzzle flashes or shell ejections.\nSee @EntityHooks:HandleAnimEvent for the serverside version.\n",
      "@name EntityHooks:FireAnimationEvent",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/FireAnimationEvent",
      "@note This hook only works on \"anim\", \"nextbot\" and \"ai\" type entities.",
      "@param {_ENTITY} this - no description",
      "@param {Vector} pos - Position of the effect",
      "@param {Angle} ang - Angle of the effect",
      "@param {number} event - The event ID of happened even. See [this page](http://developer.valvesoftware.com/wiki/Animation_Events).",
      "@param {string} name - Name of the event",
      "@returns {boolean} - Return true to disable the effect"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "FireAnimationEvent",
    "typings": [
      "(this: _ENTITY, pos: Vector, ang: Angle, event: number, name: string): boolean"
    ]
  },
  {
    "comments": [
      "\nFires an entity's input. You can find inputs for most entities on the [Valve Developer Wiki](https://developer.valvesoftware.com/wiki/Output)\nSee also @EntityFuncs:Input and @GamemodeHooks:AcceptInput.\n",
      "@name EntityFuncs:Fire",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Fire",
      "@param {Entity} this - no description",
      "@param {string} input - The name of the input to fire",
      "@param {string} param - The value to give to the input, can also be a @number type or a @boolean type.",
      "@param {number} delay - Delay in seconds before firing",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Fire",
    "typings": [
      "(this: Entity, input: string, param?: string, delay?: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns a transition from the given start and end sequence.\nThis function was only used by HL1 entities and NPCs, before the advent of sequence blending and gestures.\n",
      "@name EntityFuncs:FindTransitionSequence",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/FindTransitionSequence",
      "@param {Entity} this - no description",
      "@param {number} currentSequence - The currently playing sequence",
      "@param {number} goalSequence - The goal sequence.",
      "@returns {number} - The transition sequence, -1 if not available."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "FindTransitionSequence",
    "typings": [
      "(this: Entity, currentSequence: number, goalSequence: number): number"
    ]
  },
  {
    "comments": [
      "\nSearches for bodygroup with given name.\n",
      "@name EntityFuncs:FindBodygroupByName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/FindBodygroupByName",
      "@param {Entity} this - no description",
      "@param {string} name - The bodygroup name to search for.",
      "@returns {number} - Bodygroup ID, -1 if not found"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "FindBodygroupByName",
    "typings": [
      "(this: Entity, name: string): number"
    ]
  },
  {
    "comments": [
      "\nReturns the position of an Player/NPC's view.\n",
      "@name EntityFuncs:EyePos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/EyePos",
      "@param {Entity} this - no description",
      "@returns {Vector} - View position of the entity."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "EyePos",
    "typings": [
      "(this: Entity): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the direction a player/npc/ragdoll is looking as a world-oriented angle.\n",
      "@name EntityFuncs:EyeAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/EyeAngles",
      "@bug #1150 This can return an incorrect value in pods.",
      "@bug #2620 This can return an incorrect value in jeeps when used with @Player:EnterVehicle.",
      "@param {Entity} this - no description",
      "@returns {Angle} - eyeAng"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "EyeAngles",
    "typings": [
      "(this: Entity): Angle"
    ]
  },
  {
    "comments": [
      "\nExtinguishes the entity if it is on fire.\nHas no effect if called inside @GamemodeHooks:EntityTakeDamage (and the attacker is the flame that's hurting the entity)\nSee also @EntityFuncs:Ignite.\n",
      "@name EntityFuncs:Extinguish",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Extinguish",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Extinguish",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when an NPC's expression has finished.\n",
      "@name EntityHooks:ExpressionFinished",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/ExpressionFinished",
      "@validate",
      "@param {_ENTITY} this - no description",
      "@param {string} strExp - The path of the expression.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "ExpressionFinished",
    "typings": [
      "(this: _ENTITY, strExp: string): void"
    ]
  },
  {
    "comments": [
      "\nGets the unique entity index of an entity.\n",
      "@name EntityFuncs:EntIndex",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/EntIndex",
      "@note Entity indices are marked as unused after deletion, and can be reused by newly-created entities",
      "@param {Entity} this - no description",
      "@returns {number} - The index of the entity.\n-1 for clientside-only or serverside-only entities."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "EntIndex",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nCalled whenever an engine schedule is finished.\n",
      "@name EntityHooks:EngineScheduleFinish",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/EngineScheduleFinish",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "EngineScheduleFinish",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity stops touching another entity.\n",
      "@name EntityHooks:EndTouch",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/EndTouch",
      "@warning This only works for **brush** entities and for entities that have @EntityFuncs:SetTrigger set to true.",
      "@param {_ENTITY} this - no description",
      "@param {Entity} entity - The entity which was touched.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "EndTouch",
    "typings": [
      "(this: _ENTITY, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCan be used to apply a custom @VMatrix type to the entity, mostly used for scaling the model by a @Vector type.\nTo disable it, use @EntityFuncs:DisableMatrix.\nIf your old scales are wrong due to a recent update, use @EntityFuncs:SetLegacyTransform as a quick fix.\n",
      "@name EntityFuncs:EnableMatrix",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/EnableMatrix",
      "@note The matrix can also be modified to apply a custom rotation and offset via the @VMatrix:SetAngles and @VMatrix:SetTranslation functions.",
      "@bug #3502 This does not scale procedural bones.",
      "@bug #3502 This disables inverse kinematics of an entity.",
      "@param {Entity} this - no description",
      "@param {string} matrixType - The name of the matrix type.\nThe only implemented matrix type is \"RenderMultiply\".",
      "@param {VMatrix} matrix - The matrix to apply before drawing the entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "EnableMatrix",
    "typings": [
      "(this: Entity, matrixType: string, matrix: VMatrix): void"
    ]
  },
  {
    "comments": [
      "\nFlags an entity as using custom lua defined collisions. Fixes entities having spongy player collisions or not hitting traces, such as after @EntityFuncs:PhysicsFromMesh\n",
      "@name EntityFuncs:EnableCustomCollisions",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/EnableCustomCollisions",
      "@param {Entity} this - no description",
      "@param {boolean} useCustom - True to flag this entity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "EnableCustomCollisions",
    "typings": [
      "(this: Entity, useCustom: boolean): void"
    ]
  },
  {
    "comments": [
      "\nToggles the constraints of this ragdoll entity on and off.\n",
      "@name EntityFuncs:EnableConstraints",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/EnableConstraints",
      "@param {Entity} this - no description",
      "@param {boolean} toggleConstraints - Set to true to enable the constraints and false to disable them.\nDisabling constraints will delete the constraint entities.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "EnableConstraints",
    "typings": [
      "(this: Entity, toggleConstraints: boolean): void"
    ]
  },
  {
    "comments": [
      "\nPlays a sound on an entity. If run clientside, the sound will only be heard locally.\nIf used on a player or NPC character with the mouth rigged, the character will \"lip-sync\". This does not work with all sound files.\nIt is recommended to use sound scripts ( see @sound.Add ) over direct file paths. This will allow you to use @EntityFuncs:StopSound to stop the played sound scripts.\n",
      "@name EntityFuncs:EmitSound",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/EmitSound",
      "@note When using this function with weapons, use the @Weapon type itself as the entity, not its owner!",
      "@warning Do not use this for looping sounds with a filepath: see @EntityFuncs:StopSound for more details.",
      "@warning The string will cannot have whitespace at the start or end. You can remove this with @string.Trim.",
      "@bug #2651 This does not respond to @SuppressHostEvents function.",
      "@param {Entity} this - no description",
      "@param {string} soundName - The name of the sound to be played.",
      "@param {SNDLVL} soundLevel - A modifier for the distance this sound will reach, acceptable range is 0 to 511. 100 means no adjustment to the level. See @SNDLVL enum\nWill not work if a [sound script](https://developer.valvesoftware.com/wiki/Soundscripts) is used.",
      "@param {number} pitchPercent - The pitch applied to the sound. The acceptable range is from 0 to 255. 100 means the pitch is not changed.",
      "@param {number} volume - The volume, from 0 to 1.",
      "@param {CHAN} channel - The sound channel, see @CHAN enum.\nWill not work if a [sound script](https://developer.valvesoftware.com/wiki/Soundscripts) is used.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "EmitSound",
    "typings": [
      "(this: Entity, soundName: string, soundLevel?: SNDLVL, pitchPercent?: number, volume?: number, channel?: CHAN): void"
    ]
  },
  {
    "comments": [
      "\nSets up a self.dt.NAME alias for a Data Table variable.\n",
      "@name EntityFuncs:DTVar",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/DTVar",
      "@internal",
      "@warning You should use @EntityFuncs:NetworkVar instead",
      "@param {Entity} this - no description",
      "@param {string} Type - The type of the DTVar being set up. It can be one of the following: 'Int', 'Float', 'Vector', 'Angle', 'Bool', 'Entity' or 'String'",
      "@param {number} ID - The ID of the DTVar. Can be between 0 and 3 for strings, 0 and 31 for everything else.",
      "@param {string} Name - Name by which you will refer to DTVar. It must be a valid variable name. (No spaces!)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "DTVar",
    "typings": [
      "(this: Entity, Type: string, ID: number, Name: string): void"
    ]
  },
  {
    "comments": [
      "\nMove an entity down until it collides with something.\n",
      "@name EntityFuncs:DropToFloor",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/DropToFloor",
      "@warning The entity needs to already have something below it within 256 units.",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "DropToFloor",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity should be drawn translucently.\n",
      "@name EntityHooks:DrawTranslucent",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/DrawTranslucent",
      "@param {_ENTITY} this - no description",
      "@param {STUDIO} flags - The bit flags from @STUDIO enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "DrawTranslucent",
    "typings": [
      "(this: _ENTITY, flags: STUDIO): void"
    ]
  },
  {
    "comments": [
      "\nSets whether an entity's shadow should be drawn.\n",
      "@name EntityFuncs:DrawShadow",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/DrawShadow",
      "@param {Entity} this - no description",
      "@param {boolean} shouldDraw - True to enable, false to disable shadow drawing.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "DrawShadow",
    "typings": [
      "(this: Entity, shouldDraw: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDraws the entity or model.\nIf called inside @EntityHooks:Draw or @EntityHooks:DrawTranslucent, it only draws the entity's model itself.\nIf called outside of those hooks, it will call both of said hooks depending on @EntityFuncs:GetRenderGroup, drawing the entire entity again.\n",
      "@name EntityFuncs:DrawModel",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/DrawModel",
      "@rendering function:3d",
      "@note When drawing an entity more than once per frame in different positions, you should call @EntityFuncs:SetupBones before each draw; Otherwise, the entity will retain its first drawn position.",
      "@bug #1558 Calling this on entities with [EF_BONEMERGE](https://wiki.garrysmod.com/page/Enums/EF) and [EF_NODRAW](https://wiki.garrysmod.com/page/Enums/EF) applied causes a crash.",
      "@bug #2688 Using this with a map model (@game.GetWorld():[GetModel](https://wiki.garrysmod.com/page/Entity/GetModel)()) crashes the game.",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "DrawModel",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled if and when the entity should be drawn opaquely, based on the @EntityFuncs:GetRenderGroup of the entity.\nSee @IEntity structure and @RENDERGROUP enum for more information.\nSee also @EntityHooks:DrawTranslucent.\n",
      "@name EntityHooks:Draw",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/Draw",
      "@param {_ENTITY} this - no description",
      "@param {STUDIO} flags - The bit flags from @STUDIO enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "Draw",
    "typings": [
      "(this: _ENTITY, flags: STUDIO): void"
    ]
  },
  {
    "comments": [
      "\nRuns a Lua schedule. Runs tasks inside the schedule.\n[Category:ENT_AI_Hooks](https://wiki.garrysmod.com/page/Category:ENT_AI_Hooks)\n",
      "@name EntityHooks:DoSchedule",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/DoSchedule",
      "@param {_ENTITY} this - no description",
      "@param {table} sched - The schedule to run.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "DoSchedule",
    "typings": [
      "(this: _ENTITY, sched: table): void"
    ]
  },
  {
    "comments": [
      "\nThis removes the argument entity from an ent's list of entities to 'delete on remove'\n",
      "@name EntityFuncs:DontDeleteOnRemove",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/DontDeleteOnRemove",
      "@param {Entity} this - no description",
      "@param {Entity} entityToUnremove - The entity to be removed from the list of entities to delete",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "DontDeleteOnRemove",
    "typings": [
      "(this: Entity, entityToUnremove: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever an engine schedule is being ran.\n",
      "@name EntityHooks:DoingEngineSchedule",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/DoingEngineSchedule",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "DoingEngineSchedule",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nCalled so the entity can override the bullet impact effects it makes.\n",
      "@name EntityHooks:DoImpactEffect",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/DoImpactEffect",
      "@note This hook only works for the \"anim\" type entities.",
      "@param {_ENTITY} this - no description",
      "@param {TraceResult} tr - A @TraceResult structure from the bullet's start point to the impact point",
      "@param {DMG} damageType - The damage type of bullet. See @DMG enum",
      "@returns {boolean} - Return true to not do the default thing - which is to call UTIL_ImpactTrace in C++"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "DoImpactEffect",
    "typings": [
      "(this: _ENTITY, tr: TraceResult, damageType: DMG): boolean"
    ]
  },
  {
    "comments": [
      "\nPerforms a trace attack.\n",
      "@name EntityFuncs:DispatchTraceAttack",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/DispatchTraceAttack",
      "@warning Calling this function on the victim entity in @EntityHooks:OnTakeDamage can cause infinite loops.",
      "@param {Entity} this - no description",
      "@param {CTakeDamageInfo} damageInfo - The damage to apply.",
      "@param {TraceResult} traceRes - Trace result to use to deal damage. See @TraceResult structure",
      "@param {Vector} dir - Direction of the attack.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "DispatchTraceAttack",
    "typings": [
      "(this: Entity, damageInfo: CTakeDamageInfo, traceRes: TraceResult, dir?: Vector): void"
    ]
  },
  {
    "comments": [
      "\nDisables an active matrix.\n",
      "@name EntityFuncs:DisableMatrix",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/DisableMatrix",
      "@param {Entity} this - no description",
      "@param {string} matrixType - The name of the matrix type to disable.\nThe only known matrix type is \"RenderMultiply\".",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "DisableMatrix",
    "typings": [
      "(this: Entity, matrixType: string): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the shadow for the entity.\nThe shadow will be recreated as soon as the entity wakes.\nDoesn't affect shadows from flashlight/lamps/env_projectedtexture.\n",
      "@name EntityFuncs:DestroyShadow",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/DestroyShadow",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "DestroyShadow",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nWhenever the entity is removed, entityToRemove will be removed also.\n",
      "@name EntityFuncs:DeleteOnRemove",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/DeleteOnRemove",
      "@param {Entity} this - no description",
      "@param {Entity} entityToRemove - The entity to be removed",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "DeleteOnRemove",
    "typings": [
      "(this: Entity, entityToRemove: Entity): void"
    ]
  },
  {
    "comments": [
      "\nDraws the shadow of an entity.\n",
      "@name EntityFuncs:CreateShadow",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/CreateShadow",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "CreateShadow",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled just before @EntityHooks:Initialize for \"ai\" type entities only.\n",
      "@name EntityHooks:CreateSchedulesInternal",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/CreateSchedulesInternal",
      "@internal",
      "@param {_ENTITY} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "CreateSchedulesInternal",
    "typings": [
      "(this: _ENTITY): void"
    ]
  },
  {
    "comments": [
      "\nCreates a clientside particle system attached to the entity. See also @CreateParticleSystem function\n",
      "@name EntityFuncs:CreateParticleEffect",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/CreateParticleEffect",
      "@note The particle effect must be precached with @PrecacheParticleSystem function and the file its from must be added via @game.AddParticles before it can be used!",
      "@param {Entity} this - no description",
      "@param {string} particle - The particle name to create",
      "@param {number} attachment - Attachment ID to attach the particle to",
      "@param {table[]} options - A table of tables ( IDs 1 to 64 ) having the following structure:\nThis only affects the control points of the particle effects and will do nothing if the effect doesn't use control points.",
      "@returns {CNewParticleEffect} - The created particle system."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "CreateParticleEffect",
    "typings": [
      "(this: Entity, particle: string, attachment: number, options?: table[]): CNewParticleEffect"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity was created by map or not.\n",
      "@name EntityFuncs:CreatedByMap",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/CreatedByMap",
      "@param {Entity} this - no description",
      "@returns {boolean} - Is created by map?"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "CreatedByMap",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nDeclares that the collision rules of the entity have changed, and subsequent calls for @GamemodeHooks:ShouldCollide with this entity may return a different value than they did previously.\n",
      "@name EntityFuncs:CollisionRulesChanged",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/CollisionRulesChanged",
      "@warning This function must **not** be called inside of @GamemodeHooks:ShouldCollide. Instead, it must be called in advance when the condition is known to change.",
      "@warning Failure to use this function correctly will result in a crash of the physics engine.",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "CollisionRulesChanged",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nResets all pose parameters such as aim_yaw, aim_pitch and rotation.\n",
      "@name EntityFuncs:ClearPoseParameters",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/ClearPoseParameters",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "ClearPoseParameters",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nControls if a property can be used on this entity or not.\nThis hook will only work in Sandbox derived gamemodes that do not have @SandboxHooks:CanProperty overridden.\n",
      "@name EntityHooks:CanProperty",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/CanProperty",
      "@note This hook will work on ALL entities, not just the scripted ones (SENTs)",
      "@param {_ENTITY} this - no description",
      "@param {Player} ply - Player, that tried to use the property",
      "@param {string} property - Class of the property that is tried to use, for example - bonemanipulate",
      "@returns {boolean} - Return false to disallow using that property, return true to allow.\nYou must return a value. Not returning anything can cause unexpected results."
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "CanProperty",
    "typings": [
      "(this: _ENTITY, ply: Player, property: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCauses a specified function to be run if the entity is removed by any means. This can later be undone by @EntityFuncs:RemoveCallOnRemove if you need it to not run.\n",
      "@name EntityFuncs:CallOnRemove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/CallOnRemove",
      "@bug  Using players with this function will provide a gimped entity to the callback.",
      "@param {Entity} this - no description",
      "@param {string} identifier - Identifier of the function within CallOnRemove",
      "@param {function} removeFunc - Function to be called on remove",
      "@param {any[]} ...argn - Optional arguments to pass to removeFunc. Do note that the first argument passed to the function will always be the entity being removed, and the arguments passed on here start after that.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "CallOnRemove",
    "typings": [
      "(this: Entity, identifier: string, removeFunc: UnknownFunc, ...argn: any[]): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the entity's position changes. A callback for when an entity's angle changes is available via @EntityFuncs:AddCallback.\nLike @EntityHooks:RenderOverride, this hook works on any entity (scripted or not) it is applied on.\n",
      "@name EntityHooks:CalcAbsolutePosition",
      "@predicted false",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/CalcAbsolutePosition",
      "@note If EFL_DIRTY_ABSTRANSFORM is set on the entity, this will be called serverside only; otherwise, this will be called clientside only. This means serverside calls of @EntityFuncs:SetPos without the EFL_DIRTY_ABSTRANSFORM flag enabled (most cases) will be called clientside only.",
      "@note The give concommand will call this hook serverside only upon entity spawn.",
      "@param {_ENTITY} this - no description",
      "@param {Vector} pos - The entity's actual position. May differ from @EntityFuncs:GetPos",
      "@param {Angle} ang - The entity's actual angles. May differ from @EntityFuncs:GetAngles",
      "@returns {Vector} - New position",
      "@returns {Angle} - New angles",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "CalcAbsolutePosition",
    "typings": [
      "(this: _ENTITY, pos: Vector, ang: Angle): [Vector, Angle]"
    ]
  },
  {
    "comments": [
      "\nReturns the distance between the center of the bounding box and the furthest bounding box corner.\n",
      "@name EntityFuncs:BoundingRadius",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/BoundingRadius",
      "@param {Entity} this - no description",
      "@returns {number} - The radius of the bounding box."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "BoundingRadius",
    "typings": [
      "(this: Entity): number"
    ]
  },
  {
    "comments": [
      "\nThis function takes the boneID and returns the length of it in an unrounded decimal\n",
      "@name EntityFuncs:BoneLength",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/BoneLength",
      "@param {Entity} this - no description",
      "@param {number} boneID - The ID of the bone you want the length of. You may want to get the length of the next bone ( boneID + 1 ) for decent results",
      "@returns {number} - The length of the bone"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "BoneLength",
    "typings": [
      "(this: Entity, boneID: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity's bone has the flag or not.\n",
      "@name EntityFuncs:BoneHasFlag",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/BoneHasFlag",
      "@param {Entity} this - no description",
      "@param {number} boneID - Bone ID to test flag of.",
      "@param {BONE} flag - The flag to test, see @BONE enum",
      "@returns {boolean} - Whether the bone has that flag or not"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "BoneHasFlag",
    "typings": [
      "(this: Entity, boneID: number, flag: BONE): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns a centered vector of this entity, NPCs use this internally to aim at their targets.\n",
      "@name EntityFuncs:BodyTarget",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/BodyTarget",
      "@note This only works on players and NPCs.",
      "@param {Entity} this - no description",
      "@param {Vector} origin - The vector of where the the attack comes from.",
      "@param {boolean} noisy - Decides if it should return the centered vector with a random offset to it.",
      "@returns {Vector} - The centered vector."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "BodyTarget",
    "typings": [
      "(this: Entity, origin: Vector, noisy?: boolean): Vector"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity is blocked.\n",
      "@name EntityHooks:Blocked",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/Blocked",
      "@note This only works for entities with MOVETYPE_PUSH as their @EntityFuncs:SetMoveType",
      "@param {_ENTITY} this - no description",
      "@param {Entity} other - The entity that is blocking this entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "Blocked",
    "typings": [
      "(this: _ENTITY, other: Entity): void"
    ]
  },
  {
    "comments": [
      "\nDispatches blocked events to this entity's blocked handler. This function is only useful when interacting with entities like func_movelinear.\n",
      "@name EntityFuncs:Blocked",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Blocked",
      "@internal",
      "@param {Entity} this - no description",
      "@param {Entity} entity - The entity that is blocking us",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Blocked",
    "typings": [
      "(this: Entity, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if the entity is being looked at by the local player and is within 256 units of distance.\n",
      "@name EntityFuncs:BeingLookedAtByLocalPlayer",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/BeingLookedAtByLocalPlayer",
      "@note This function is only available in entities that are based off of sandbox's base_gmodentity",
      "@note This function uses Distance instead of DistToSqr so it may not be suitable in situations where it's called often",
      "@param {Entity} this - no description",
      "@returns {boolean} - Is the entity being looked at by the local player and within 256 units."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "BeingLookedAtByLocalPlayer",
    "typings": [
      "(this: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nSpawns a clientside ragdoll for the entity, positioning it in place of the original entity, and makes the entity invisible. It doesn't preserve flex values (face posing) as CSRagdolls don't support flex.\nIt does not work on players. Use @Player:CreateRagdoll instead.\nThe original entity is not removed, and neither are any ragdolls previously generated with this function.\nTo make the entity re-appear, run @EntityFuncs:SetNoDraw( false )\n",
      "@name EntityFuncs:BecomeRagdollOnClient",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/Entity/BecomeRagdollOnClient",
      "@param {Entity} this - no description",
      "@returns {CSEnt} - The created ragdoll."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "BecomeRagdollOnClient",
    "typings": [
      "(this: Entity): CSEnt"
    ]
  },
  {
    "comments": [
      "\nReturns an angle based on the ones inputted that you can use to align an object.\n",
      "@name EntityFuncs:AlignAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/AlignAngles",
      "@note This function doesn't change the angle of the entity on its own (see example).",
      "@param {Entity} this - no description",
      "@param {Angle} from - The angle you want to align from",
      "@param {Angle} to - The angle you want to align to",
      "@returns {Angle} - The resulting aligned angle"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "AlignAngles",
    "typings": [
      "(this: Entity, from: Angle, to: Angle): Angle"
    ]
  },
  {
    "comments": [
      "\nAdds a @PhysObj typeect to the entity's motion controller so that @EntityHooks:PhysicsSimulate will be called for given @PhysObj typeect as well.\nYou must first create a motion controller with @EntityFuncs:StartMotionController.\nYou can remove added @PhysObj typeects by using @EntityFuncs:RemoveFromMotionController.\n",
      "@name EntityFuncs:AddToMotionController",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/AddToMotionController",
      "@note Only works on a scripted @Entity type of anim type",
      "@param {Entity} this - no description",
      "@param {PhysObj} physObj - The @PhysObj type to add to the motion controller.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "AddToMotionController",
    "typings": [
      "(this: Entity, physObj: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nAdds solid flag(s) to the entity.\n",
      "@name EntityFuncs:AddSolidFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/AddSolidFlags",
      "@param {Entity} this - no description",
      "@param {FSOLID} flags - The flag(s) to apply, see @FSOLID enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "AddSolidFlags",
    "typings": [
      "(this: Entity, flags: FSOLID): void"
    ]
  },
  {
    "comments": [
      "\nAdds a gesture animation to the entity and plays it.\nSee @EntityFuncs:AddGestureSequence for a function that doesn't take priority.\nSee @EntityFuncs:AddGesture for a function that takes @ACT enum.\n",
      "@name EntityFuncs:AddLayeredSequence",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/AddLayeredSequence",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} sequence - The sequence ID to play as the gesture. See @EntityFuncs:LookupSequence.",
      "@param {number} priority - no description",
      "@returns {number} - Layer ID of created layer"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "AddLayeredSequence",
    "typings": [
      "(this: Entity, sequence: number, priority: number): number"
    ]
  },
  {
    "comments": [
      "\nAdds a gesture animation to the entity and plays it.\nSee @EntityFuncs:AddGesture for a function that takes @ACT enum.\nSee also @EntityFuncs:AddLayeredSequence.\n",
      "@name EntityFuncs:AddGestureSequence",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/AddGestureSequence",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {number} sequence - The sequence ID to play as the gesture. See @EntityFuncs:LookupSequence.",
      "@param {boolean} autokill - no description",
      "@returns {number} - Layer ID of the started gesture, used to manipulate the played gesture by other functions."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "AddGestureSequence",
    "typings": [
      "(this: Entity, sequence: number, autokill?: boolean): number"
    ]
  },
  {
    "comments": [
      "\nAdds a gesture animation to the entity and plays it.\nSee @EntityFuncs:AddGestureSequence and @EntityFuncs:AddLayeredSequence for functions that takes sequences instead of @ACT enum.\n",
      "@name EntityFuncs:AddGesture",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/Entity/AddGesture",
      "@note This function only works on [BaseAnimatingOverlay](https://wiki.garrysmod.com/page/BaseAnimatingOverlay) entites!",
      "@param {Entity} this - no description",
      "@param {ACT} activity - The activity to play as the gesture. See @ACT enum.",
      "@param {boolean} autokill - no description",
      "@returns {number} - Layer ID of the started gesture, used to manipulate the played gesture by other functions."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "AddGesture",
    "typings": [
      "(this: Entity, activity: ACT, autokill?: boolean): number"
    ]
  },
  {
    "comments": [
      "\nAdds flags to the entity.\n",
      "@name EntityFuncs:AddFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/AddFlags",
      "@param {Entity} this - no description",
      "@param {FL} flag - Flag to add, see @FL enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "AddFlags",
    "typings": [
      "(this: Entity, flag: FL): void"
    ]
  },
  {
    "comments": [
      "\nApplies an engine effect to an entity.\nSee also @EntityFuncs:IsEffectActive and  @EntityFuncs:RemoveEffects.\n",
      "@name EntityFuncs:AddEffects",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/AddEffects",
      "@param {Entity} this - no description",
      "@param {EF} effect - The effect to apply, see @EF enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "AddEffects",
    "typings": [
      "(this: Entity, effect: EF): void"
    ]
  },
  {
    "comments": [
      "\nAdds engine flags.\n",
      "@name EntityFuncs:AddEFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/AddEFlags",
      "@param {Entity} this - no description",
      "@param {EFL} flag - Engine flag to add, see @EFL enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "AddEFlags",
    "typings": [
      "(this: Entity, flag: EFL): void"
    ]
  },
  {
    "comments": [
      "\nAdd a callback function to a specific event. This is used instead of hooks to avoid calling empty functions unnecessarily.\nThis also allows you to use certain hooks in engine entities (non-scripted entities).\n",
      "@name EntityFuncs:AddCallback",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/AddCallback",
      "@warning This method does not check if the function has already been added to this object before, so if you add the same callback twice, it will be run twice! Make sure to add your callback only once.",
      "@param {Entity} this - no description",
      "@param {string} hook - The hook name to hook onto. See [Entity Callbacks](https://wiki.garrysmod.com/page/Entity%20Callbacks)",
      "@param {function} func - The function to call",
      "@returns {number} - The callback ID that was just added, which can later be used in @EntityFuncs:RemoveCallback.\nReturns nothing if the passed callback function was invalid or when asking for a non-existent hook."
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "AddCallback",
    "typings": [
      "(this: Entity, hook: string, func: UnknownFunc): number"
    ]
  },
  {
    "comments": [
      "\nActivates the entity. This needs to be used on some entities (like constraints) after being spawned.\n",
      "@name EntityFuncs:Activate",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Entity/Activate",
      "@note For some entity types when this function is used after @EntityFuncs:SetModelScale, the physics object will be recreated with the new scale. [Source-sdk-2013](https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/mp/src/game/server/baseanimating.cpp#L321-L327)",
      "@bug #3372 This crashes the game with scaled vehicles.",
      "@param {Entity} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EntityFuncs",
    "name": "Activate",
    "typings": [
      "(this: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when another entity fires an event to this entity.\n",
      "@name EntityHooks:AcceptInput",
      "@predicted false",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ENTITY/AcceptInput",
      "@param {_ENTITY} this - no description",
      "@param {string} inputName - The name of the input that was triggered.",
      "@param {Entity} activator - The initial cause for the input getting triggered. (EG the player who pushed a button)",
      "@param {Entity} caller - The entity that directly triggered the input. (EG the button that was pushed)",
      "@param {string} data - The data passed.",
      "@returns {boolean} - Should we suppress the default action for this input?"
    ],
    "type": "class",
    "context": "EntityHooks",
    "name": "AcceptInput",
    "typings": [
      "(this: _ENTITY, inputName: string, activator: Entity, caller: Entity, data: string): boolean"
    ]
  },
  {
    "comments": [
      "\nStores savedata into the game (can be loaded using the LoadGame menu)\n",
      "@name engine.WriteSave",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/engine/WriteSave",
      "@param {void} this - no description",
      "@param {string} saveData - Data generated by gmsave.SaveMap",
      "@param {string} name - Name the save will have.",
      "@param {number} time - When the save was saved during the game (Put CurTime here)",
      "@param {string} map - The map the save is used for.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "engine",
    "name": "WriteSave",
    "typings": [
      "(this: void, saveData: string, name: string, time: number, map: string): void"
    ]
  },
  {
    "comments": [
      "\nSaves a duplication as a file.\n",
      "@name engine.WriteDupe",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/engine/WriteDupe",
      "@param {void} this - no description",
      "@param {string} dupe - Dupe table, encoded by @util.TableToJSON and compressed by @util.Compress",
      "@param {string} jpeg - The dupe icon, created by @render.Capture",
      "@returns {void}"
    ],
    "type": "func",
    "context": "engine",
    "name": "WriteDupe",
    "typings": [
      "(this: void, dupe: string, jpeg: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns video recording settings set by @video.Record. Used by Demo-To-Video feature.\n",
      "@name engine.VideoSettings",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/engine/VideoSettings",
      "@param {void} this - no description",
      "@returns {VideoData} - The video recording settings, see @VideoData structure."
    ],
    "type": "func",
    "context": "engine",
    "name": "VideoSettings",
    "typings": [
      "(this: void): VideoData"
    ]
  },
  {
    "comments": [
      "\nReturns the number of seconds between each gametick.\n",
      "@name engine.TickInterval",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/TickInterval",
      "@param {void} this - no description",
      "@returns {number} - Number of seconds between each gametick."
    ],
    "type": "func",
    "context": "engine",
    "name": "TickInterval",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nSets the mounting options for mountable content.\n",
      "@name engine.SetMounted",
      "@realm menu",
      "@wiki https://wiki.garrysmod.com/page/engine/SetMounted",
      "@param {void} this - no description",
      "@param {string} depotID - The depot id of the game to mount.",
      "@param {boolean} doMount - The mount state, true to mount, false to unmount",
      "@returns {void}"
    ],
    "type": "func",
    "context": "engine",
    "name": "SetMounted",
    "typings": [
      "(this: void, depotID: string, doMount: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns an estimate of the server's performance. Equivalent to calling @FrameTime function from the server, according to source code.\n",
      "@name engine.ServerFrameTime",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/engine/ServerFrameTime",
      "@param {void} this - no description",
      "@returns {number} - Frame time",
      "@returns {number} - Server Framerate Std Deviation",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "engine",
    "name": "ServerFrameTime",
    "typings": [
      "(this: void): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the number of ticks since the game server started.\n",
      "@name engine.TickCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/engine/TickCount",
      "@param {void} this - no description",
      "@returns {number} - Number of ticks since the game server started."
    ],
    "type": "func",
    "context": "engine",
    "name": "TickCount",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nLoads a duplication from the local filesystem.\n",
      "@name engine.OpenDupe",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/engine/OpenDupe",
      "@param {void} this - no description",
      "@param {string} dupeName - Name of the file. e.g, engine.OpenDupe(\"dupes/8b809dd7a1a9a375e75be01cdc12e61f.dupe\")",
      "@returns {string} - Compressed dupeData. Use util.JSONToTable to make it into a format useable by the duplicator tool."
    ],
    "type": "func",
    "context": "engine",
    "name": "OpenDupe",
    "typings": [
      "(this: void, dupeName: string): string"
    ]
  },
  {
    "comments": [
      "\nThis is a direct binding to the function “engine->LightStyle”. This function allows you to change the default light style of the map - so you can make lighting lighter or darker. You’ll need to call @render.RedownloadAllLightmaps clientside to refresh the lightmaps to this new color.\n",
      "@name engine.LightStyle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/engine/LightStyle",
      "@bug #3626 Calling this function with arguments 0 and \"a\" will cause dynamic lights such as those produced by the Light tool to stop working.",
      "@param {void} this - no description",
      "@param {number} lightstyle - The lightstyle to edit. 0 to 63. If you want to edit map lighting, you want to set this to 0.",
      "@param {string} pattern - The pattern to change the lightstyle to. \"a\" is the darkest, \"z\" is the brightest. You can use stuff like \"abcxyz\" to make flashing patterns. The normal brightness for a map is \"m\". Values over \"z\" are allowed, \"~\" for instance.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "engine",
    "name": "LightStyle",
    "typings": [
      "(this: void, lightstyle: number, pattern: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if the game is currently recording a demo file (.dem) using gm_demo\n",
      "@name engine.IsRecordingDemo",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/IsRecordingDemo",
      "@param {void} this - no description",
      "@returns {boolean} - Whether the game is currently recording a demo or not."
    ],
    "type": "func",
    "context": "engine",
    "name": "IsRecordingDemo",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if we're currently playing a demo.\nYou will notice that there's no server-side version of this. That's because there is no server when playing a demo. Demos are both recorded and played back purely clientside.\n",
      "@name engine.IsPlayingDemo",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/IsPlayingDemo",
      "@param {void} this - no description",
      "@returns {boolean} - Whether the game is currently playing a demo or not."
    ],
    "type": "func",
    "context": "engine",
    "name": "IsPlayingDemo",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the UGC (demos, saves and dupes) the player have subscribed to on the workshop.\n",
      "@name engine.GetUserContent",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/GetUserContent",
      "@param {void} this - no description",
      "@returns {table} - Returns a table with 6 keys (title, type, tags, wsid, timeadded)"
    ],
    "type": "func",
    "context": "engine",
    "name": "GetUserContent",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nReturns an array of tables corresponding to all games from which Garry's Mod supports mounting content.\n",
      "@name engine.GetGames",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/GetGames",
      "@param {void} this - no description",
      "@returns {table[]} - A table of tables containing all mountable games"
    ],
    "type": "func",
    "context": "engine",
    "name": "GetGames",
    "typings": [
      "(this: void): table[]"
    ]
  },
  {
    "comments": [
      "\nReturns a table containing info for all installed gamemodes\n",
      "@name engine.GetGamemodes",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/GetGamemodes",
      "@param {void} this - no description",
      "@returns {table} - gamemodes"
    ],
    "type": "func",
    "context": "engine",
    "name": "GetGamemodes",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nReturns time scale of demo playback.\nIf not during demo playback, returns 1.\n",
      "@name engine.GetDemoPlaybackTimeScale",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/GetDemoPlaybackTimeScale",
      "@param {void} this - no description",
      "@returns {number} - The time scale of demo playback, value of demo_timescale console variable."
    ],
    "type": "func",
    "context": "engine",
    "name": "GetDemoPlaybackTimeScale",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns total amount of ticks of currently loaded demo.\nIf not playing a demo, returns 0 or the value of last played demo.\n",
      "@name engine.GetDemoPlaybackTotalTicks",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/GetDemoPlaybackTotalTicks",
      "@param {void} this - no description",
      "@returns {number} - Total amount of ticks of currently loaded demo."
    ],
    "type": "func",
    "context": "engine",
    "name": "GetDemoPlaybackTotalTicks",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nCurrent tick of currently loaded demo.\nIf not playing a demo, it will return amount of ticks since last demo playback.\n",
      "@name engine.GetDemoPlaybackTick",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/GetDemoPlaybackTick",
      "@param {void} this - no description",
      "@returns {number} - The amount of ticks of currently loaded demo."
    ],
    "type": "func",
    "context": "engine",
    "name": "GetDemoPlaybackTick",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nWhen starting playing a demo, @engine.GetDemoPlaybackTick will be reset and its old value will be added to this functions return value.\n",
      "@name engine.GetDemoPlaybackStartTick",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/GetDemoPlaybackStartTick",
      "@param {void} this - no description",
      "@returns {number} - no description"
    ],
    "type": "func",
    "context": "engine",
    "name": "GetDemoPlaybackStartTick",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nReturns a list of addons the player have subscribed to on the workshop.\nThis list will also include \"Floating\" .gma addons that are mounted by the game, but not the folder addons.\n",
      "@name engine.GetAddons",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/GetAddons",
      "@param {void} this - no description",
      "@returns {table} - A table with 6 keys (downloaded, models, title, file, mounted, wsid)"
    ],
    "type": "func",
    "context": "engine",
    "name": "GetAddons",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nCloses the server and completely exits.\nThis is only functional when running in server test mode (launch option -systemtest). Server test mode is used internally at Facepunch as part of the build process to make sure that the dedicated servers aren't crashing on startup.\n",
      "@name engine.CloseServer",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/engine/CloseServer",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "engine",
    "name": "CloseServer",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the currently running gamemode.\n",
      "@name engine.ActiveGamemode",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/engine/ActiveGamemode",
      "@bug #1988 This will return the incorrect gamemode name on the client if used too early.",
      "@param {void} this - no description",
      "@returns {string} - The active gamemode's name. This is the name of the gamemode's folder."
    ],
    "type": "func",
    "context": "engine",
    "name": "ActiveGamemode",
    "typings": [
      "(this: void): string"
    ]
  },
  {
    "comments": [
      "@name EffectHooks:Touch",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/EFFECT/Touch",
      "@param {_EFFECT} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EffectHooks",
    "name": "Touch",
    "typings": [
      "(this: _EFFECT): void"
    ]
  },
  {
    "comments": [
      "\nRegisters a new effect.\n",
      "@name effects.Register",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/effects/Register",
      "@internal",
      "@param {void} this - no description",
      "@param {table} effect_table - Effect table.",
      "@param {string} name - Effect name.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "effects",
    "name": "Register",
    "typings": [
      "(this: void, effect_table: table, name: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the table of the effect specified.\n",
      "@name effects.Create",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/effects/Create",
      "@internal You are looking for @util.Effect.",
      "@param {void} this - no description",
      "@param {string} name - Effect name.",
      "@returns {table} - Effect table."
    ],
    "type": "func",
    "context": "effects",
    "name": "Create",
    "typings": [
      "(this: void, name: string): table"
    ]
  },
  {
    "comments": [
      "@name EffectHooks:StartTouch",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/EFFECT/StartTouch",
      "@param {_EFFECT} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EffectHooks",
    "name": "StartTouch",
    "typings": [
      "(this: _EFFECT): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the effect should think, return false to kill the effect.\n",
      "@name EffectHooks:Think",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/EFFECT/Think",
      "@param {_EFFECT} this - no description",
      "@returns {boolean} - Return false to remove this effect."
    ],
    "type": "class",
    "context": "EffectHooks",
    "name": "Think",
    "typings": [
      "(this: _EFFECT): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when the effect should be rendered.\n",
      "@name EffectHooks:Render",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/EFFECT/Render",
      "@param {_EFFECT} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EffectHooks",
    "name": "Render",
    "typings": [
      "(this: _EFFECT): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the effect collides with anything.\n",
      "@name EffectHooks:PhysicsCollide",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/EFFECT/PhysicsCollide",
      "@param {_EFFECT} this - no description",
      "@param {CollisionData} colData - Information regarding the collision. See @CollisionData structure",
      "@param {PhysObj} collider - The physics object of the entity that collided with the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EffectHooks",
    "name": "PhysicsCollide",
    "typings": [
      "(this: _EFFECT, colData: CollisionData, collider: PhysObj): void"
    ]
  },
  {
    "comments": [
      "\nUsed to get the \"real\" start position of a trace, for weapon tracer effects.\n\"real\" meaning in 3rd person, the 3rd person position will be used, in first person the first person position will be used.\n",
      "@name EffectHooks:GetTracerShootPos",
      "@predicted false",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/EFFECT/GetTracerShootPos",
      "@note Please note that it is expected that the same attachment ID is used on both, the world and the view model.",
      "@param {_EFFECT} this - no description",
      "@param {Vector} pos - Default position if we fail",
      "@param {Weapon} ent - The weapon to use.",
      "@param {number} attachment - Attachment ID of on the weapon \"muzzle\", to use as the start position.",
      "@returns {Vector} - The \"real\" start position."
    ],
    "type": "class",
    "context": "EffectHooks",
    "name": "GetTracerShootPos",
    "typings": [
      "(this: _EFFECT, pos: Vector, ent: Weapon, attachment: number): Vector"
    ]
  },
  {
    "comments": [
      "\nCalled when the effect is created.\n",
      "@name EffectHooks:Init",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/EFFECT/Init",
      "@param {_EFFECT} this - no description",
      "@param {CEffectData} effectData - The effect data used to create the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EffectHooks",
    "name": "Init",
    "typings": [
      "(this: _EFFECT, effectData: CEffectData): void"
    ]
  },
  {
    "comments": [
      "@name EffectHooks:EndTouch",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/EFFECT/EndTouch",
      "@param {_EFFECT} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "EffectHooks",
    "name": "EndTouch",
    "typings": [
      "(this: _EFFECT): void"
    ]
  },
  {
    "comments": [
      "\nShould return nil in all cases. See @DVScrollBar:GetScroll.\n",
      "@name DVScrollBar:Value",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/Value",
      "@param {DVScrollBar} this - no description",
      "@returns {any} - no description"
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "Value",
    "typings": [
      "(this: DVScrollBar): any"
    ]
  },
  {
    "comments": [
      "\nSets up the scrollbar for use.\nThe scrollbar will automatically disable itself if the total height of the canvas is lower than the height of the panel that holds the canvas during this function call.\n",
      "@name DVScrollBar:SetUp",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/SetUp",
      "@param {DVScrollBar} this - no description",
      "@param {number} barSize - The size of the panel that holds the canvas, basically size of \"1 page\".",
      "@param {number} cavasSize - The total size of the canvas, this typically is the bigger number.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "SetUp",
    "typings": [
      "(this: DVScrollBar, barSize: number, cavasSize: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the scroll level in pixels.\n",
      "@name DVScrollBar:SetScroll",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/SetScroll",
      "@param {DVScrollBar} this - no description",
      "@param {number} scroll - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "SetScroll",
    "typings": [
      "(this: DVScrollBar, scroll: number): void"
    ]
  },
  {
    "comments": [
      "\nAllows hiding the up and down buttons for better visual stylisation.\n",
      "@name DVScrollBar:SetHideButtons",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/SetHideButtons",
      "@param {DVScrollBar} this - no description",
      "@param {boolean} hide - True to hide",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "SetHideButtons",
    "typings": [
      "(this: DVScrollBar, hide: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled from within @DScrollBarGrip type\n",
      "@name DVScrollBar:Grip",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/Grip",
      "@internal",
      "@param {DVScrollBar} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "Grip",
    "typings": [
      "(this: DVScrollBar): void"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of scroll level from the top in pixels\n",
      "@name DVScrollBar:GetScroll",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/GetScroll",
      "@param {DVScrollBar} this - no description",
      "@returns {number} - The amount of scroll level from the top"
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "GetScroll",
    "typings": [
      "(this: DVScrollBar): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the manual up/down scroll buttons are visible or not. Set by @DVScrollBar:SetHideButtons.\n",
      "@name DVScrollBar:GetHideButtons",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/GetHideButtons",
      "@param {DVScrollBar} this - no description",
      "@returns {boolean} - Whether or not the manual up/down scroll buttons are visible or not."
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "GetHideButtons",
    "typings": [
      "(this: DVScrollBar): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the negative of @DVScrollBar:GetScroll.\n",
      "@name DVScrollBar:GetOffset",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/GetOffset",
      "@param {DVScrollBar} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "GetOffset",
    "typings": [
      "(this: DVScrollBar): number"
    ]
  },
  {
    "comments": [
      "@name DVScrollBar:BarScale",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/BarScale",
      "@param {DVScrollBar} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "BarScale",
    "typings": [
      "(this: DVScrollBar): number"
    ]
  },
  {
    "comments": [
      "\nSmoothly scrolls to given level.\n",
      "@name DVScrollBar:AnimateTo",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/AnimateTo",
      "@param {DVScrollBar} this - no description",
      "@param {number} scroll - The scroll level to animate to. In pixels from the top ( from 0 )",
      "@param {number} length - Length of the animation in seconds",
      "@param {number} delay - Delay of the animation in seconds",
      "@param {number} ease - See @Panel:NewAnimation for explanation.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "AnimateTo",
    "typings": [
      "(this: DVScrollBar, scroll: number, length: number, delay?: number, ease?: number): void"
    ]
  },
  {
    "comments": [
      "\nAdds specified amount of scroll in pixels.\n",
      "@name DVScrollBar:AddScroll",
      "@wiki https://wiki.garrysmod.com/page/DVScrollBar/AddScroll",
      "@param {DVScrollBar} this - no description",
      "@param {number} add - How much to scroll downwards. Can be negative for upwards scroll",
      "@returns {boolean} - True if the scroll level was changed (i.e. if we did or did not scroll)"
    ],
    "type": "class",
    "context": "DVScrollBar",
    "extends": [
      "Panel"
    ],
    "name": "AddScroll",
    "typings": [
      "(this: DVScrollBar, add: number): boolean"
    ]
  },
  {
    "comments": [
      "\nCauses the user to start dragging the divider.\n",
      "@name DVerticalDivider:StartGrab",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/StartGrab",
      "@internal",
      "@param {DVerticalDivider} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "StartGrab",
    "typings": [
      "(this: DVerticalDivider): void"
    ]
  },
  {
    "comments": [
      "\nSets the height of the top content panel.\nThe height of the bottom content panel is automatically calculated by taking the total height of the @DVerticalDivider type and subtracting it with the height of the top content panel and the divider bar.\n",
      "@name DVerticalDivider:SetTopHeight",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/SetTopHeight",
      "@param {DVerticalDivider} this - no description",
      "@param {number} height - The height of the top content panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetTopHeight",
    "typings": [
      "(this: DVerticalDivider, height: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum height of the top content panel. This is ignored if the panel would exceed the minimum bottom content panel height set from @DVerticalDivider:SetBottomMin.\n",
      "@name DVerticalDivider:SetTopMax",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/SetTopMax",
      "@param {DVerticalDivider} this - no description",
      "@param {number} height - The maximum height of the top content panel. Default is 4096.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetTopMax",
    "typings": [
      "(this: DVerticalDivider, height: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum height of the top content panel.\n",
      "@name DVerticalDivider:SetTopMin",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/SetTopMin",
      "@param {DVerticalDivider} this - no description",
      "@param {number} height - The minimum height of the top content panel. Default is 50.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetTopMin",
    "typings": [
      "(this: DVerticalDivider, height: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the passed panel as the top content of the @DVerticalDivider type.\n",
      "@name DVerticalDivider:SetTop",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/SetTop",
      "@param {DVerticalDivider} this - no description",
      "@param {Panel} pnl - The panel to set as the top content.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetTop",
    "typings": [
      "(this: DVerticalDivider, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the local Y position of where the user starts dragging the divider.\n",
      "@name DVerticalDivider:SetHoldPos",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/SetHoldPos",
      "@internal",
      "@param {DVerticalDivider} this - no description",
      "@param {number} y - The local Y position where divider dragging has started.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetHoldPos",
    "typings": [
      "(this: DVerticalDivider, y: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the divider is being dragged or not.\n",
      "@name DVerticalDivider:SetDragging",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/SetDragging",
      "@internal",
      "@param {DVerticalDivider} this - no description",
      "@param {boolean} isDragging - Setting this to true causes cursor movement to alter the position of the divider.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetDragging",
    "typings": [
      "(this: DVerticalDivider, isDragging: boolean): void"
    ]
  },
  {
    "comments": [
      "\nPlaces the passed panel in between the top and bottom content panels of the @DVerticalDivider type.\n",
      "@name DVerticalDivider:SetMiddle",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/SetMiddle",
      "@param {DVerticalDivider} this - no description",
      "@param {Panel} pnl - The panel to set as the middle content.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetMiddle",
    "typings": [
      "(this: DVerticalDivider, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the height of the divider bar between the top and bottom content panels of the @DVerticalDivider type.\n",
      "@name DVerticalDivider:SetDividerHeight",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/SetDividerHeight",
      "@param {DVerticalDivider} this - no description",
      "@param {number} height - The height of the divider bar.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetDividerHeight",
    "typings": [
      "(this: DVerticalDivider, height: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum height of the bottom content panel.\n",
      "@name DVerticalDivider:SetBottomMin",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/SetBottomMin",
      "@param {DVerticalDivider} this - no description",
      "@param {number} height - The minimum height of the bottom content panel. Default is 50.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetBottomMin",
    "typings": [
      "(this: DVerticalDivider, height: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the passed panel as the bottom content of the @DVerticalDivider type.\n",
      "@name DVerticalDivider:SetBottom",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/SetBottom",
      "@param {DVerticalDivider} this - no description",
      "@param {Panel} pnl - The panel to set as the bottom content.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetBottom",
    "typings": [
      "(this: DVerticalDivider, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns the minimum height of the top content panel.\n",
      "@name DVerticalDivider:GetTopMin",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/GetTopMin",
      "@param {DVerticalDivider} this - no description",
      "@returns {number} - The minimum height of the top content panel."
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetTopMin",
    "typings": [
      "(this: DVerticalDivider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum height of the top content panel. See @DVerticalDivider:SetTopMax for more information.\n",
      "@name DVerticalDivider:GetTopMax",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/GetTopMax",
      "@param {DVerticalDivider} this - no description",
      "@returns {number} - The maximum height of the top content panel."
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetTopMax",
    "typings": [
      "(this: DVerticalDivider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the current height of the top content panel set by @DVerticalDivider:SetTopHeight or by the user.\n",
      "@name DVerticalDivider:GetTopHeight",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/GetTopHeight",
      "@param {DVerticalDivider} this - no description",
      "@returns {number} - The current height of the @DVerticalDivider type."
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetTopHeight",
    "typings": [
      "(this: DVerticalDivider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the top content panel of the @DVerticalDivider type.\n",
      "@name DVerticalDivider:GetTop",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/GetTop",
      "@param {DVerticalDivider} this - no description",
      "@returns {Panel} - The top content panel."
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetTop",
    "typings": [
      "(this: DVerticalDivider): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the middle content panel of the @DVerticalDivider type.\n",
      "@name DVerticalDivider:GetMiddle",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/GetMiddle",
      "@param {DVerticalDivider} this - no description",
      "@returns {Panel} - The middle content panel."
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetMiddle",
    "typings": [
      "(this: DVerticalDivider): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the local Y position of where the user starts dragging the divider.\n",
      "@name DVerticalDivider:GetHoldPos",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/GetHoldPos",
      "@internal",
      "@param {DVerticalDivider} this - no description",
      "@returns {number} - The local Y position where divider dragging has started."
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetHoldPos",
    "typings": [
      "(this: DVerticalDivider): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether the divider is being dragged or not.\n",
      "@name DVerticalDivider:GetDragging",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/GetDragging",
      "@param {DVerticalDivider} this - no description",
      "@returns {boolean} - If true, mouse movement will alter the size of the divider."
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetDragging",
    "typings": [
      "(this: DVerticalDivider): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the height of the divider bar between the top and bottom content panels of the @DVerticalDivider type.\n",
      "@name DVerticalDivider:GetDividerHeight",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/GetDividerHeight",
      "@param {DVerticalDivider} this - no description",
      "@returns {number} - The height of the divider bar."
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetDividerHeight",
    "typings": [
      "(this: DVerticalDivider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the minimum height of the bottom content panel.\n",
      "@name DVerticalDivider:GetBottomMin",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/GetBottomMin",
      "@param {DVerticalDivider} this - no description",
      "@returns {number} - The minimum height of the bottom content panel."
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetBottomMin",
    "typings": [
      "(this: DVerticalDivider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the bottom content panel of the @DVerticalDivider type.\n",
      "@name DVerticalDivider:GetBottom",
      "@wiki https://wiki.garrysmod.com/page/DVerticalDivider/GetBottom",
      "@param {DVerticalDivider} this - no description",
      "@returns {Panel} - The bottom content panel."
    ],
    "type": "class",
    "context": "DVerticalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetBottom",
    "typings": [
      "(this: DVerticalDivider): Panel"
    ]
  },
  {
    "comments": [
      "\n\"Work out the AABB size\"\n",
      "@name duplicator.WorkoutSize",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/WorkoutSize",
      "@param {void} this - no description",
      "@param {table} Ents - A table of entity duplication datums.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "WorkoutSize",
    "typings": [
      "(this: void, Ents: table): void"
    ]
  },
  {
    "comments": [
      "\nStores an entity modifier into an entity for saving\n",
      "@name duplicator.StoreEntityModifier",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/StoreEntityModifier",
      "@param {void} this - no description",
      "@param {Entity} entity - The entity to store modifier in",
      "@param {string} name - Unique modifier name as defined in @duplicator.RegisterEntityModifier",
      "@param {table} data - Modifier data",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "StoreEntityModifier",
    "typings": [
      "(this: void, entity: Entity, name: string, data: table): void"
    ]
  },
  {
    "comments": [
      "\nStores bone mod data for a registered bone modification function\n",
      "@name duplicator.StoreBoneModifier",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/StoreBoneModifier",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to add bone mod data to",
      "@param {number} boneID - The bone ID.\nSee @EntityFuncs:GetPhysicsObjectNum",
      "@param {any} key - The key for the bone modification",
      "@param {table} data - The bone modification data that is passed to the bone modification function",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "StoreBoneModifier",
    "typings": [
      "(this: void, ent: Entity, boneID: number, key: any, data: table): void"
    ]
  },
  {
    "comments": [
      "\n\"When a copy is copied it will be translated according to these.\nIf you set them - make sure to set them back to 0 0 0!\"\n",
      "@name duplicator.SetLocalPos",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/SetLocalPos",
      "@param {void} this - no description",
      "@param {Vector} v - The position to offset all pastes from",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "SetLocalPos",
    "typings": [
      "(this: void, v: Vector): void"
    ]
  },
  {
    "comments": [
      "\nHelp to remove certain map created entities before creating the saved entities\nThis is obviously so we don't get duplicate props everywhere.\nIt should be called before calling Paste.\n",
      "@name duplicator.RemoveMapCreatedEntities",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/RemoveMapCreatedEntities",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "RemoveMapCreatedEntities",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\n\"When a copy is copied it will be translated according to these.\nIf you set them - make sure to set them back to 0 0 0!\"\n",
      "@name duplicator.SetLocalAng",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/SetLocalAng",
      "@param {void} this - no description",
      "@param {Angle} v - The angle to offset all pastes from",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "SetLocalAng",
    "typings": [
      "(this: void, v: Angle): void"
    ]
  },
  {
    "comments": [
      "\nThis allows you to specify a specific function to be run when your SENT is pasted with the duplicator, instead of relying on the generic automatic functions.\n",
      "@name duplicator.RegisterEntityClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/RegisterEntityClass",
      "@note Automatically calls @duplicator.Allow for the entity class.",
      "@param {void} this - no description",
      "@param {string} name - The ClassName of the entity you wish to register a factory for",
      "@param {function} func - The factory function you want to have called. It should have the arguments (Player, ...) where ... is whatever arguments you request to be passed.",
      "@param {any[]} ...args - Strings of the names of arguments you want passed to function the from the @EntityCopyData structure. As a special case, \"Data\" will pass the whole structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "RegisterEntityClass",
    "typings": [
      "(this: void, name: string, func: UnknownFunc, ...args: any[]): void"
    ]
  },
  {
    "comments": [
      "\nThis allows you to register tweaks to entities. For instance, if you were making an \"unbreakable\" addon, you would use this to enable saving the \"unbreakable\" state of entities between duplications.\nThis function registers a piece of generic code that is run on all entities with this modifier. In order to have it actually run, use @duplicator.StoreEntityModifier.\nThis function does nothing when run clientside.\n",
      "@name duplicator.RegisterEntityModifier",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/RegisterEntityModifier",
      "@param {void} this - no description",
      "@param {string} name - An identifier for your modification. This is not limited, so be verbose. \"Person's 'Unbreakable' mod\" is far less likely to cause conflicts than \"unbreakable\"",
      "@param {function} func - The function to be called for your modification. It should have the arguments (Player, Entity, Data), where data is what you pass to @duplicator.StoreEntityModifier.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "RegisterEntityModifier",
    "typings": [
      "(this: void, name: string, func: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nRegister a function used for creating a duplicated constraint.\n",
      "@name duplicator.RegisterConstraint",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/RegisterConstraint",
      "@param {void} this - no description",
      "@param {string} name - The unique name of new constraint",
      "@param {function} callback - Function to be called when this constraint is created",
      "@param {any} ...args - Arguments passed to the callback function",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "RegisterConstraint",
    "typings": [
      "(this: void, name: string, callback: UnknownFunc, ...args: any): void"
    ]
  },
  {
    "comments": [
      "\nRegisters a function to be called on each of an entity's bones when @duplicator.ApplyBoneModifiers is called.\n",
      "@name duplicator.RegisterBoneModifier",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/RegisterBoneModifier",
      "@note This function is available to call on the client, but registered functions aren't used anywhere!",
      "@param {void} this - no description",
      "@param {any} key - The type of the key doesn't appear to matter, but it is preferable to use a string.",
      "@param {function} boneModifier - Function called on each bone that an ent has. Called during @duplicator.ApplyBoneModifiers.\nFunction parameters are:\nThe data table that is passed to boneModifier is set with @duplicator.StoreBoneModifier",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "RegisterBoneModifier",
    "typings": [
      "(this: void, key: any, boneModifier: duplicatorRegisterBoneModifierBoneModifier): void"
    ],
    "types": [
      {
        "comments": [
          "@type duplicatorRegisterBoneModifierBoneModifier",
          "@param {void} this - no description",
          "@param {Player} ply - no description",
          "@param {Entity} ent - no description",
          "@param {number} boneID - no description",
          "@param {PhysObj} bone - no description",
          "@param {table} data - no description"
        ],
        "type": "type",
        "name": "duplicatorRegisterBoneModifierBoneModifier",
        "typing": "(this: void, ply: Player, ent: Entity, boneID: number, bone: PhysObj, data: table) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\n\"Given entity list and constraint list, create all entities and return their tables\"\nCalls @duplicator.CreateEntityFromTable on each sub-table of EntityList. If an entity is actually created, it calls @EntityHooks:OnDuplicated with the entity's duplicator data, then @duplicator.ApplyEntityModifiers, @duplicator.ApplyBoneModifiers and finally  @EntityHooks:PostEntityPaste is called.\nThe constraints are then created with @duplicator.CreateConstraintFromTable.\n",
      "@name duplicator.Paste",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/Paste",
      "@param {void} this - no description",
      "@param {Player} Player - The player who wants to create something",
      "@param {table} EntityList - A table of duplicator data to create the entities from",
      "@param {table} ConstraintList - A table of duplicator data to create the constraints from",
      "@returns {table} - List of created entities",
      "@returns {table} - List of created constraints",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "Paste",
    "typings": [
      "(this: void, Player: Player, EntityList: table, ConstraintList: table): [table, table]"
    ]
  },
  {
    "comments": [
      "\nReturns whether the entity can be duplicated or not\n",
      "@name duplicator.IsAllowed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/IsAllowed",
      "@param {void} this - no description",
      "@param {string} classname - An entity's classname",
      "@returns {boolean} - Returns true if the entity can be duplicated (nil otherwise)"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "IsAllowed",
    "typings": [
      "(this: void, classname: string): boolean"
    ]
  },
  {
    "comments": [
      "\n\"Generic function for duplicating stuff\"\nThis is called when @duplicator.CreateEntityFromTable can't find an entity factory to build with. It calls @duplicator.DoGeneric and @duplicator.DoGenericPhysics to apply standard duplicator stored things such as the model and position.\n",
      "@name duplicator.GenericDuplicatorFunction",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/GenericDuplicatorFunction",
      "@param {void} this - no description",
      "@param {Player} ply - The player who wants to create something",
      "@param {table} data - The duplication data to build the entity with",
      "@returns {Entity} - The newly created entity"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "GenericDuplicatorFunction",
    "typings": [
      "(this: void, ply: Player, data: table): Entity"
    ]
  },
  {
    "comments": [
      "\nFills entStorageTable with all of the entities in a group connected with constraints. Fills constraintStorageTable with all of the constrains constraining the group.\n",
      "@name duplicator.GetAllConstrainedEntitiesAndConstraints",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/GetAllConstrainedEntitiesAndConstraints",
      "@internal",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to start from",
      "@param {table} entStorageTable - The table the entities will be inserted into",
      "@param {table} constraintStorageTable - The table the constraints will be inserted into",
      "@returns {table} - entStorageTable",
      "@returns {table} - constraintStorageTable",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "GetAllConstrainedEntitiesAndConstraints",
    "typings": [
      "(this: void, ent: Entity, entStorageTable: table, constraintStorageTable: table): [table, table]"
    ]
  },
  {
    "comments": [
      "\nReturns the entity class factory registered with @duplicator.RegisterEntityClass.\n",
      "@name duplicator.FindEntityClass",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/FindEntityClass",
      "@param {void} this - no description",
      "@param {string} name - The name of the entity class factory",
      "@returns {IduplicatorFindEntityClassReturn} - Is compromised of the following members:"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "FindEntityClass",
    "typings": [
      "(this: void, name: string): IduplicatorFindEntityClassReturn"
    ],
    "types": [
      {
        "comments": [
          "Func - {function}: The function that creates the entity"
        ],
        "type": "interface",
        "name": "Func",
        "typing": "UnknownFunc",
        "context": "IduplicatorFindEntityClassReturn"
      },
      {
        "comments": [
          "Args - {table}: Arguments to pass to the function"
        ],
        "type": "interface",
        "name": "Args",
        "typing": "table",
        "context": "IduplicatorFindEntityClassReturn"
      }
    ]
  },
  {
    "comments": [
      "\n\"Applies bone data, generically.\"\nIf data contains a PhysicsObjects table, it moves, re-angles and if relevent freezes all specified bones, first converting from local coordinates to world coordinates.\n",
      "@name duplicator.DoGenericPhysics",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/DoGenericPhysics",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to be applied upon",
      "@param {Player} ply - The player who owns the entity. Unused in function as of early 2013",
      "@param {table} data - The data to be applied onto the entity",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "DoGenericPhysics",
    "typings": [
      "(this: void, ent: Entity, ply?: Player, data: table): void"
    ]
  },
  {
    "comments": [
      "\n\"Applies generic every-day entity stuff for ent from table data.\"\nDepending on the values of Model, Angle, Pos, Skin, Flex, Bonemanip, ModelScale, ColGroup, Name, and BodyG (@table type of multiple values) in the data table, this calls @EntityFuncs:SetModel, @EntityFuncs:SetAngles, @EntityFuncs:SetPos, @EntityFuncs:SetSkin, @duplicator.DoFlex, @duplicator.DoBoneManipulator, @EntityFuncs:SetModelScale, @EntityFuncs:SetCollisionGroup, @EntityFuncs:SetName, @EntityFuncs:SetBodygroup on ent.\nIf ent has a RestoreNetworkVars function, it is called with data.DT.\n",
      "@name duplicator.DoGeneric",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/DoGeneric",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to be applied upon",
      "@param {table} data - The data to be applied onto the entity",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "DoGeneric",
    "typings": [
      "(this: void, ent: Entity, data: table): void"
    ]
  },
  {
    "comments": [
      "\nRestores the flex data using @EntityFuncs:SetFlexWeight and @EntityFuncs:SetFlexScale\n",
      "@name duplicator.DoFlex",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/DoFlex",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to restore the flexes on",
      "@param {table} flex - The flexes to restore",
      "@param {number} scale - The flex scale to apply. (Flex scale is unchanged if omitted)",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "DoFlex",
    "typings": [
      "(this: void, ent: Entity, flex: table, scale?: number): void"
    ]
  },
  {
    "comments": [
      "\n\"Restores the bone's data.\"\nLoops through Bones and calls @EntityFuncs:ManipulateBoneScale, @EntityFuncs:ManipulateBoneAngles and @EntityFuncs:ManipulateBonePosition on ent with the table keys and the subtable values s, a and p respectively.\n",
      "@name duplicator.DoBoneManipulator",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/DoBoneManipulator",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to be bone manipulated",
      "@param {BoneManipulationData} bones - Table with a @BoneManipulationData structure for every bone (that has manipulations applied) using the bone ID as the table index.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "DoBoneManipulator",
    "typings": [
      "(this: void, ent: Entity, bones: BoneManipulationData): void"
    ]
  },
  {
    "comments": [
      "\n\"Create an entity from a table.\"\nThis creates an entity using the data in EntTable.\nIf an entity factory has been registered for the entity's Class, it will be called.\nOtherwise, @duplicator.GenericDuplicatorFunction will be called instead.\n",
      "@name duplicator.CreateEntityFromTable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/CreateEntityFromTable",
      "@param {void} this - no description",
      "@param {Player} ply - The player who wants to create something",
      "@param {EntityCopyData} entTable - The duplication data to build the entity with. See @EntityCopyData structure",
      "@returns {Entity} - The newly created entity"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "CreateEntityFromTable",
    "typings": [
      "(this: void, ply: Player, entTable: EntityCopyData): Entity"
    ]
  },
  {
    "comments": [
      "\nCreates a constraint from a saved/copied constraint table.\n",
      "@name duplicator.CreateConstraintFromTable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/CreateConstraintFromTable",
      "@internal",
      "@param {void} this - no description",
      "@param {table} constraint - Saved/copied constraint table",
      "@param {table} entityList - The list of entities that are to be constrained",
      "@returns {Entity} - The newly created constraint entity"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "CreateConstraintFromTable",
    "typings": [
      "(this: void, constraint: table, entityList: table): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns a table with some entity data that can be used to create a new entity with @duplicator.CreateEntityFromTable\n",
      "@name duplicator.CopyEntTable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/CopyEntTable",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity table to save",
      "@returns {EntityCopyData} - See @EntityCopyData structure"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "CopyEntTable",
    "typings": [
      "(this: void, ent: Entity): EntityCopyData"
    ]
  },
  {
    "comments": [
      "\nCopies the passed table of entities to save for later.\n",
      "@name duplicator.CopyEnts",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/CopyEnts",
      "@param {void} this - no description",
      "@param {table} ents - A table of entities to save/copy.",
      "@returns {IduplicatorCopyEntsReturn} - A table containing duplication info which includes the following members:"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "CopyEnts",
    "typings": [
      "(this: void, ents: table): IduplicatorCopyEntsReturn"
    ],
    "types": [
      {
        "comments": [
          "Entities - {table}: no description"
        ],
        "type": "interface",
        "name": "Entities",
        "typing": "table",
        "context": "IduplicatorCopyEntsReturn"
      },
      {
        "comments": [
          "Constraints - {table}: no description"
        ],
        "type": "interface",
        "name": "Constraints",
        "typing": "table",
        "context": "IduplicatorCopyEntsReturn"
      },
      {
        "comments": [
          "Mins - {Vector}: no description"
        ],
        "type": "interface",
        "name": "Mins",
        "typing": "Vector",
        "context": "IduplicatorCopyEntsReturn"
      },
      {
        "comments": [
          "Maxs - {Vector}: no description"
        ],
        "type": "interface",
        "name": "Maxs",
        "typing": "Vector",
        "context": "IduplicatorCopyEntsReturn"
      }
    ]
  },
  {
    "comments": [
      "\nCopies the entity, and all of its constraints and entities, then returns them in a table.\n",
      "@name duplicator.Copy",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/Copy",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to duplicate. The function will automatically copy all constrained entities.",
      "@param {table} tableToAdd - A preexisting table to add entities and constraints in from.\nUses the same table format as the table returned from this function.",
      "@returns {IduplicatorCopyReturn} - A table containing duplication info which includes the following members:\nThe values of Mins & Maxs from the table are returned from @duplicator.WorkoutSize"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "Copy",
    "typings": [
      "(this: void, ent: Entity, tableToAdd?: table): IduplicatorCopyReturn"
    ],
    "types": [
      {
        "comments": [
          "Entities - {table}: no description"
        ],
        "type": "interface",
        "name": "Entities",
        "typing": "table",
        "context": "IduplicatorCopyReturn"
      },
      {
        "comments": [
          "Constraints - {table}: no description"
        ],
        "type": "interface",
        "name": "Constraints",
        "typing": "table",
        "context": "IduplicatorCopyReturn"
      },
      {
        "comments": [
          "Mins - {Vector}: no description"
        ],
        "type": "interface",
        "name": "Mins",
        "typing": "Vector",
        "context": "IduplicatorCopyReturn"
      },
      {
        "comments": [
          "Maxs - {Vector}: no description"
        ],
        "type": "interface",
        "name": "Maxs",
        "typing": "Vector",
        "context": "IduplicatorCopyReturn"
      }
    ]
  },
  {
    "comments": [
      "\nClears/removes the chosen entity modifier from the entity.\n",
      "@name duplicator.ClearEntityModifier",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/ClearEntityModifier",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity the modification is stored on",
      "@param {any} key - The key of the stored entity modifier",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "ClearEntityModifier",
    "typings": [
      "(this: void, ent: Entity, key: any): void"
    ]
  },
  {
    "comments": [
      "\nCalls every function registered with @duplicator.RegisterEntityModifier on the entity.\n",
      "@name duplicator.ApplyEntityModifiers",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/ApplyEntityModifiers",
      "@param {void} this - no description",
      "@param {Player} ply - The player whose entity this is",
      "@param {Entity} ent - The entity in question",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "ApplyEntityModifiers",
    "typings": [
      "(this: void, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nAllow this entity to be duplicated\n",
      "@name duplicator.Allow",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/Allow",
      "@param {void} this - no description",
      "@param {string} classname - An entity's classname",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "Allow",
    "typings": [
      "(this: void, classname: string): void"
    ]
  },
  {
    "comments": [
      "\nCalls every function registered with @duplicator.RegisterBoneModifier on each bone the ent has.\n",
      "@name duplicator.ApplyBoneModifiers",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/duplicator/ApplyBoneModifiers",
      "@param {void} this - no description",
      "@param {Player} ply - The player whose entity this is",
      "@param {Entity} ent - The entity in question",
      "@returns {void}"
    ],
    "type": "func",
    "context": "duplicator",
    "name": "ApplyBoneModifiers",
    "typings": [
      "(this: void, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the @DTree type this node is in has icons enabled.\nSee @DTree:ShowIcons for more info.\n",
      "@name DTree_Node:ShowIcons",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/ShowIcons",
      "@param {DTree_Node} this - no description",
      "@returns {number} - Whether the icons are shown or not"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "ShowIcons",
    "typings": [
      "(this: DTree_Node): number"
    ]
  },
  {
    "comments": [
      "\nSets the search wildcard.\nUse @DTree_Node:MakeFolder instead\n",
      "@name DTree_Node:SetWildCard",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetWildCard",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {string} wildcard - The wildcard to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetWildCard",
    "typings": [
      "(this: DTree_Node, wildcard: string): void"
    ]
  },
  {
    "comments": [
      "\nCurrently does nothing, not implemented.\n",
      "@name DTree_Node:SetupCopy",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetupCopy",
      "@param {DTree_Node} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetupCopy",
    "typings": [
      "(this: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not nodes for files should be added when populating the node from filesystem.\n",
      "@name DTree_Node:SetShowFiles",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetShowFiles",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {boolean} showFiles - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetShowFiles",
    "typings": [
      "(this: DTree_Node, showFiles: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled automatically to update the \"selected\" status of this node.\n",
      "@name DTree_Node:SetSelected",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetSelected",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {boolean} selected - Whether this node is currently selected or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetSelected",
    "typings": [
      "(this: DTree_Node, selected: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the root node (the @DTree type) of this node.\nThis is set automatically, you shouldn't use this.\n",
      "@name DTree_Node:SetRoot",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetRoot",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {Panel} root - The panel to set as root node.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetRoot",
    "typings": [
      "(this: DTree_Node, root: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the path ID ([File Search Paths](https://wiki.garrysmod.com/page/File%20Search%20Paths)) for populating the tree from the filesystem.\nUse @DTree_Node:MakeFolder instead.\n",
      "@name DTree_Node:SetPathID",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetPathID",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {string} path - The path ID to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetPathID",
    "typings": [
      "(this: DTree_Node, path: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the parent node of this node. Not the same as @Panel:SetParent.\nThis is set automatically, you shouldn't use this.\n",
      "@name DTree_Node:SetParentNode",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetParentNode",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {Panel} parent - The panel to set as a parent node for this node",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetParentNode",
    "typings": [
      "(this: DTree_Node, parent: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the node needs populating from the filesystem.\n",
      "@name DTree_Node:SetNeedsPopulating",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetNeedsPopulating",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {boolean} needs - Whether or not the node needs populating",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetNeedsPopulating",
    "typings": [
      "(this: DTree_Node, needs: boolean): void"
    ]
  },
  {
    "comments": [
      "@name DTree_Node:SetNeedsChildSearch",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetNeedsChildSearch",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {boolean} newState - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetNeedsChildSearch",
    "typings": [
      "(this: DTree_Node, newState: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled automatically to set whether this node is the last child on this level or not.\n",
      "@name DTree_Node:SetLastChild",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetLastChild",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {boolean} last - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetLastChild",
    "typings": [
      "(this: DTree_Node, last: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the material for the icon of the @DTree_Node type.\n",
      "@name DTree_Node:SetIcon",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetIcon",
      "@param {DTree_Node} this - no description",
      "@param {string} path - The path to the material to be used. Do not include \"materials/\". .pngs are supported.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetIcon",
    "typings": [
      "(this: DTree_Node, path: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the expand button (little + button) should be shown or hidden.\n",
      "@name DTree_Node:SetHideExpander",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetHideExpander",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {boolean} hide - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetHideExpander",
    "typings": [
      "(this: DTree_Node, hide: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the expand/collapse button (+/- button) should be shown on this node regardless of whether it has sub-elements or not.\n",
      "@name DTree_Node:SetForceShowExpander",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetForceShowExpander",
      "@param {DTree_Node} this - no description",
      "@param {boolean} forceShow - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetForceShowExpander",
    "typings": [
      "(this: DTree_Node, forceShow: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the folder to search files and folders in.\nUse @DTree_Node:MakeFolder instead.\n",
      "@name DTree_Node:SetFolder",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetFolder",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {string} folder - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetFolder",
    "typings": [
      "(this: DTree_Node, folder: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the file full filepath to the file attached to this node\n",
      "@name DTree_Node:SetFileName",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetFileName",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {string} filename - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetFileName",
    "typings": [
      "(this: DTree_Node, filename: string): void"
    ]
  },
  {
    "comments": [
      "\nExpands or collapses this node.\n",
      "@name DTree_Node:SetExpanded",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetExpanded",
      "@param {DTree_Node} this - no description",
      "@param {boolean} expand - Whether to expand (true) or collapse (false)",
      "@param {boolean} surpressAnimation - Whether to play animation (false) or not (true)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetExpanded",
    "typings": [
      "(this: DTree_Node, expand: boolean, surpressAnimation?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not this node should draw visual lines.\n",
      "@name DTree_Node:SetDrawLines",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetDrawLines",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {boolean} draw - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetDrawLines",
    "typings": [
      "(this: DTree_Node, draw: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUsed to store name for sub elements for a @Panel:Droppable call.\n",
      "@name DTree_Node:SetDraggableName",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetDraggableName",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {string} name - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetDraggableName",
    "typings": [
      "(this: DTree_Node, name: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether double clicking the node should expand/collapse it or not.\n",
      "@name DTree_Node:SetDoubleClickToOpen",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetDoubleClickToOpen",
      "@param {DTree_Node} this - no description",
      "@param {boolean} enable - true to enable, false to disable this functionality.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetDoubleClickToOpen",
    "typings": [
      "(this: DTree_Node, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nAppears to have no effect on the @DTree_Node type.\n",
      "@name DTree_Node:SetDirty",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/SetDirty",
      "@param {DTree_Node} this - no description",
      "@param {boolean} dirty - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "SetDirty",
    "typings": [
      "(this: DTree_Node, dirty: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled automatically from @DTree_Node:SetExpanded (or when user manually expands the node) to populate the node with sub-nodes from the filesystem if this was enabled via @DTree_Node:MakeFolder.\n",
      "@name DTree_Node:PopulateChildrenAndSelf",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/PopulateChildrenAndSelf",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {boolean} expand - Expand self once population process is finished.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "PopulateChildrenAndSelf",
    "typings": [
      "(this: DTree_Node, expand: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled automatically from @DTree_Node:PopulateChildrenAndSelf.\n",
      "@name DTree_Node:PopulateChildren",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/PopulateChildren",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "PopulateChildren",
    "typings": [
      "(this: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nCalled automatically to perform layout on this node if this node @DTree_Node:IsRootNode.\n",
      "@name DTree_Node:PerformRootNodeLayout",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/PerformRootNodeLayout",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "PerformRootNodeLayout",
    "typings": [
      "(this: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nCalled when this or a sub node is selected. Do not use this, it is not for override.\nUse @DTree:OnNodeSelected or @DTree_Node:DoClick instead.\n",
      "@name DTree_Node:OnNodeSelected",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/OnNodeSelected",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {Panel} node - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "OnNodeSelected",
    "typings": [
      "(this: DTree_Node, node: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when sub-nodes of this @DTree_Node type were changed, such as being rearranged if that functionality is enabled.\n",
      "@name DTree_Node:OnModified",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/OnModified",
      "@param {DTree_Node} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "OnModified",
    "typings": [
      "(this: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nMoves this node to the top of the level.\n",
      "@name DTree_Node:MoveToTop",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/MoveToTop",
      "@param {DTree_Node} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "MoveToTop",
    "typings": [
      "(this: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nMoves given panel to the top of the children of this node.\nDespite name of this function, it cannot move the children to any position but the topmost.\n",
      "@name DTree_Node:MoveChildTo",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/MoveChildTo",
      "@param {DTree_Node} this - no description",
      "@param {Panel} node - The node to move.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "MoveChildTo",
    "typings": [
      "(this: DTree_Node, node: Panel): void"
    ]
  },
  {
    "comments": [
      "\nMakes this node a folder in the filesystem. This will make it automatically populated.\nSee also @DTree_Node:AddFolder.\n",
      "@name DTree_Node:MakeFolder",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/MakeFolder",
      "@param {DTree_Node} this - no description",
      "@param {string} folder - The folder in the filesystem to use, relative to the garrysmod/ folder.",
      "@param {string} path - The path to search in. See [File Search Paths](https://wiki.garrysmod.com/page/File%20Search%20Paths)",
      "@param {boolean} showFiles - Should files be added as nodes (true) or folders only (false)",
      "@param {string} wildcard - The wildcard to use when searching for files.",
      "@param {boolean} dontForceExpandable - If set to true, don't show the expand buttons on empty nodes.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "MakeFolder",
    "typings": [
      "(this: DTree_Node, folder: string, path: string, showFiles?: boolean, wildcard?: string, dontForceExpandable?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nRemoves given node as a sub-node of this node.\nIt doesn't actually remove or unparent the panel, just removes it from the internal @DListView type.\n",
      "@name DTree_Node:LeaveTree",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/LeaveTree",
      "@param {DTree_Node} this - no description",
      "@param {Panel} pnl - The node to remove",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "LeaveTree",
    "typings": [
      "(this: DTree_Node, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if @DTree_Node:GetRoot is the same as @DTree_Node:GetParentNode of this node.\n",
      "@name DTree_Node:IsRootNode",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/IsRootNode",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - If this is a root node."
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "IsRootNode",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nSee @DTree_Node:DoRightClick.\n",
      "@name DTree_Node:InternalDoRightClick",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/InternalDoRightClick",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "InternalDoRightClick",
    "typings": [
      "(this: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nSee @DTree_Node:DoClick\n",
      "@name DTree_Node:InternalDoClick",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/InternalDoClick",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "InternalDoClick",
    "typings": [
      "(this: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nCalled automatically internally.\nMakes the target node compatible with this node's drag'n'drop.\n",
      "@name DTree_Node:InstallDraggable",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/InstallDraggable",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {DTree_Node} node - The @DTree_Node type.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "InstallDraggable",
    "typings": [
      "(this: DTree_Node, node: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nInserts an existing node as a \"child\" or a sub-node of this node.\nUsed internally by the drag'n'drop functionality.\n",
      "@name DTree_Node:InsertNode",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/InsertNode",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {DTree_Node} node - Has to be @DTree_Node type",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "InsertNode",
    "typings": [
      "(this: DTree_Node, node: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nInserts a sub-node into this node before or after the given node.\n",
      "@name DTree_Node:Insert",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/Insert",
      "@param {DTree_Node} this - no description",
      "@param {DTree_Node} node - The @DTree_Node type to insert.",
      "@param {Panel} nodeNextTo - The node to insert the node above before or after.",
      "@param {boolean} before - true to insert before, false to insert after.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "Insert",
    "typings": [
      "(this: DTree_Node, node: DTree_Node, nodeNextTo: Panel, before: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not nodes for files should/will be added when populating the node from filesystem.\n",
      "@name DTree_Node:GetShowFiles",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetShowFiles",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetShowFiles",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the wildcard set by @DTree_Node:MakeFolder.\n",
      "@name DTree_Node:GetWildCard",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetWildCard",
      "@param {DTree_Node} this - no description",
      "@returns {string} - The search wildcard"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetWildCard",
    "typings": [
      "(this: DTree_Node): string"
    ]
  },
  {
    "comments": [
      "\nReturns the root node, the @DTree type this node is under.\nSee also @DTree_Node:GetParentNode.\n",
      "@name DTree_Node:GetRoot",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetRoot",
      "@param {DTree_Node} this - no description",
      "@returns {Panel} - The root node"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetRoot",
    "typings": [
      "(this: DTree_Node): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the path ID ([File Search Paths](https://wiki.garrysmod.com/page/File%20Search%20Paths)) used in populating the @DTree type from the filesystem.\nSee @DTree_Node:SetPathID and @DTree_Node:MakeFolder.\n",
      "@name DTree_Node:GetPathID",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetPathID",
      "@param {DTree_Node} this - no description",
      "@returns {string} - The Path ID"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetPathID",
    "typings": [
      "(this: DTree_Node): string"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the node is set to be populated from the filesystem.\n",
      "@name DTree_Node:GetNeedsPopulating",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetNeedsPopulating",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetNeedsPopulating",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the parent @DTree_Node type. Note that @Panel:GetParent will not be the same!\n",
      "@name DTree_Node:GetParentNode",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetParentNode",
      "@param {DTree_Node} this - no description",
      "@returns {Panel} - The parent node."
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetParentNode",
    "typings": [
      "(this: DTree_Node): Panel"
    ]
  },
  {
    "comments": [
      "@name DTree_Node:GetNeedsChildSearch",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetNeedsChildSearch",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetNeedsChildSearch",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nThe height of a single @DTree_Node type of the @DTree type this node belongs to.\nAlias of @DTree:GetLineHeight.\n",
      "@name DTree_Node:GetLineHeight",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetLineHeight",
      "@param {DTree_Node} this - no description",
      "@returns {number} - The height of a single @DTree_Node type."
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetLineHeight",
    "typings": [
      "(this: DTree_Node): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether this node is the last child on this level or not.\n",
      "@name DTree_Node:GetLastChild",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetLastChild",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetLastChild",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the indentation level of the @DTree type this node belongs to.\nAlias of @DTree:GetIndentSize, see it for more info.\n",
      "@name DTree_Node:GetIndentSize",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetIndentSize",
      "@param {DTree_Node} this - no description",
      "@returns {number} - The indentation level."
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetIndentSize",
    "typings": [
      "(this: DTree_Node): number"
    ]
  },
  {
    "comments": [
      "\nReturns the image path to the icon of this node.\n",
      "@name DTree_Node:GetIcon",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetIcon",
      "@param {DTree_Node} this - no description",
      "@returns {string} - The path to the image"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetIcon",
    "typings": [
      "(this: DTree_Node): string"
    ]
  },
  {
    "comments": [
      "\nReturns whether the expand button (little + button) should be shown or hidden.\n",
      "@name DTree_Node:GetHideExpander",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetHideExpander",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetHideExpander",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the folder path to search in, set by @DTree_Node:MakeFolder.\n",
      "@name DTree_Node:GetFolder",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetFolder",
      "@param {DTree_Node} this - no description",
      "@returns {string} - The folder path."
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetFolder",
    "typings": [
      "(this: DTree_Node): string"
    ]
  },
  {
    "comments": [
      "\nReturns whether the expand/collapse button is shown on this node regardless of whether or not it has sub-nodes.\nSee also @DTree_Node:SetForceShowExpander.\n",
      "@name DTree_Node:GetForceShowExpander",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetForceShowExpander",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetForceShowExpander",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the filepath of the file attached to this node.\n",
      "@name DTree_Node:GetFileName",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetFileName",
      "@param {DTree_Node} this - no description",
      "@returns {string} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetFileName",
    "typings": [
      "(this: DTree_Node): string"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not this node is drawing lines\n",
      "@name DTree_Node:GetDrawLines",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetDrawLines",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetDrawLines",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns what is set by @DTree_Node:SetDraggableName.\n",
      "@name DTree_Node:GetDraggableName",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetDraggableName",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@returns {string} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetDraggableName",
    "typings": [
      "(this: DTree_Node): string"
    ]
  },
  {
    "comments": [
      "\nReturns whether the double clock to collapse/expand functionality is enabled on this node.\n",
      "@name DTree_Node:GetDoubleClickToOpen",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetDoubleClickToOpen",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetDoubleClickToOpen",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns value set by @DTree_Node:SetDirty.\n",
      "@name DTree_Node:GetDirty",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetDirty",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetDirty",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns n-th child node.\nBasically an alias of @Panel:GetChild.\n",
      "@name DTree_Node:GetChildNode",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/GetChildNode",
      "@param {DTree_Node} this - no description",
      "@param {number} num - The number of the child to get, starting with 0",
      "@returns {Panel} - The child panel, if valid ID is given"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "GetChildNode",
    "typings": [
      "(this: DTree_Node, num: number): Panel"
    ]
  },
  {
    "comments": [
      "\nCalled automatically from @DTree_Node:FilePopulate to actually fill the node with sub-nodes based on set preferences like should files be added, etc.\n",
      "@name DTree_Node:FilePopulateCallback",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/FilePopulateCallback",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {table} files - A list of files in this folder",
      "@param {table} folders - A list of folder in this folder.",
      "@param {string} foldername - The folder name/path this node represents",
      "@param {string} path - The Path ID search was performed with. See [File Search Paths](https://wiki.garrysmod.com/page/File%20Search%20Paths)",
      "@param {boolean} bAndChildren - Inherited from the **FilePopulate** call. Does nothing",
      "@param {string} wildcard - The wildcard that was given",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "FilePopulateCallback",
    "typings": [
      "(this: DTree_Node, files: table, folders: table, foldername: string, path: string, bAndChildren: boolean, wildcard: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled automatically from @DTree_Node:PopulateChildrenAndSelf and @DTree_Node:PopulateChildren to populate this node with child nodes of files and folders.\n",
      "@name DTree_Node:FilePopulate",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/FilePopulate",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {boolean} bAndChildren - Does nothing. Set to true if called from @DTree_Node:PopulateChildren.",
      "@param {boolean} bExpand - Expand self once population process is finished.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "FilePopulate",
    "typings": [
      "(this: DTree_Node, bAndChildren: boolean, bExpand: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCollapses or expands all nodes from the topmost-level node to this one.\nWorks opposite of @DTree_Node:ExpandRecurse.\n",
      "@name DTree_Node:ExpandTo",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/ExpandTo",
      "@param {DTree_Node} this - no description",
      "@param {boolean} expand - Whether to expand (true) or collapse (false)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "ExpandTo",
    "typings": [
      "(this: DTree_Node, expand: boolean): void"
    ]
  },
  {
    "comments": [
      "\nExpands or collapses this node, as well as ALL child nodes of this node.\nWorks opposite of @DTree_Node:ExpandTo.\n",
      "@name DTree_Node:ExpandRecurse",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/ExpandRecurse",
      "@param {DTree_Node} this - no description",
      "@param {boolean} expand - Whether to expand (true) or collapse (false)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "ExpandRecurse",
    "typings": [
      "(this: DTree_Node, expand: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the node is clicked.\nSee also @DTree_Node:DoRightClick.\n",
      "@name DTree_Node:DoClick",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/DoClick",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - Return true to prevent DoClick from being called on parent nodes or the @DTree type itself."
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "DoClick",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when the node is right clicked.\nSee also @DTree_Node:DoClick.\n",
      "@name DTree_Node:DoRightClick",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/DoRightClick",
      "@param {DTree_Node} this - no description",
      "@returns {boolean} - Return true to prevent DoRightClick from being called on parent nodes or the @DTree type itself."
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "DoRightClick",
    "typings": [
      "(this: DTree_Node): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled automatically to update the status of @DTree_Node:GetLastChild on children of this node.\n",
      "@name DTree_Node:DoChildrenOrder",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/DoChildrenOrder",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "DoChildrenOrder",
    "typings": [
      "(this: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nCreates the container @DListLayout type for the @DTree_Node types.\nThis is called automatically so you don't have to.\n",
      "@name DTree_Node:CreateChildNodes",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/CreateChildNodes",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "CreateChildNodes",
    "typings": [
      "(this: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nCreate and returns a copy of this node, including all the sub-nodes.\n",
      "@name DTree_Node:Copy",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/Copy",
      "@param {DTree_Node} this - no description",
      "@returns {DTree_Node} - The copied @DTree_Node type."
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "Copy",
    "typings": [
      "(this: DTree_Node): DTree_Node"
    ]
  },
  {
    "comments": [
      "\nCleans up the internal table of items (sub-nodes) of this node from invalid panels or sub-nodes that were moved from this node to another.\nAppears the be completely unused by the game on its own.\n",
      "@name DTree_Node:CleanList",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/CleanList",
      "@param {DTree_Node} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "CleanList",
    "typings": [
      "(this: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a child node is expanded or collapsed to propagate this event to parent nodes to update layout.\n",
      "@name DTree_Node:ChildExpanded",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/ChildExpanded",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {boolean} expanded - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "ChildExpanded",
    "typings": [
      "(this: DTree_Node, expanded: boolean): void"
    ]
  },
  {
    "comments": [
      "\nInternal function that handles the expand/collapse animations.\n",
      "@name DTree_Node:AnimSlide",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/AnimSlide",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {table} anim - no description",
      "@param {number} delta - no description",
      "@param {table} data - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "AnimSlide",
    "typings": [
      "(this: DTree_Node, anim: table, delta: number, data: table): void"
    ]
  },
  {
    "comments": [
      "\nAdds the given panel to the child nodes list, a @DListLayout type.\n",
      "@name DTree_Node:AddPanel",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/AddPanel",
      "@internal",
      "@param {DTree_Node} this - no description",
      "@param {Panel} pnl - The panel to add.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "AddPanel",
    "typings": [
      "(this: DTree_Node, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nAdd a child node to the DTree_Node\n",
      "@name DTree_Node:AddNode",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/AddNode",
      "@param {DTree_Node} this - no description",
      "@param {string} name - Name of the node.",
      "@param {string} icon - The icon that will show nexto the node in the DTree.",
      "@returns {DTree_Node} - Returns the created @DTree_Node type panel."
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "AddNode",
    "typings": [
      "(this: DTree_Node, name: string, icon?: string): DTree_Node"
    ]
  },
  {
    "comments": [
      "\nA helper function that adds a new node and calls to @DTree_Node:MakeFolder on it.\n",
      "@name DTree_Node:AddFolder",
      "@wiki https://wiki.garrysmod.com/page/DTree Node/AddFolder",
      "@param {DTree_Node} this - no description",
      "@param {string} name - The name of the new node",
      "@param {string} folder - The folder in the filesystem to use, relative to the garrysmod/ folder.",
      "@param {string} path - The path to search in. See [File Search Paths](https://wiki.garrysmod.com/page/File%20Search%20Paths)",
      "@param {boolean} showFiles - Should files be added as nodes (true) or folders only (false)",
      "@param {string} wildcard - The wildcard to use when searching for files.",
      "@param {boolean} bDontForceExpandable - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree_Node",
    "extends": [
      "DPanel"
    ],
    "name": "AddFolder",
    "typings": [
      "(this: DTree_Node, name: string, folder: string, path: string, showFiles?: boolean, wildcard?: string, bDontForceExpandable?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the [Silkicons](https://wiki.garrysmod.com/page/Silkicons) next to each node of the DTree will be displayed.\nAlias of @DTree:GetShowIcons.\n",
      "@name DTree:ShowIcons",
      "@wiki https://wiki.garrysmod.com/page/DTree/ShowIcons",
      "@param {DTree} this - no description",
      "@returns {boolean} - Whether or not the silkicons next to each node will be displayed."
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "ShowIcons",
    "typings": [
      "(this: DTree): boolean"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the [Silkicons](https://wiki.garrysmod.com/page/Silkicons) next to each node of the DTree will be displayed.\nIndividual icons can be set with @DTree_Node:SetIcon or passed as the second argument in @DTree:AddNode.\n",
      "@name DTree:SetShowIcons",
      "@wiki https://wiki.garrysmod.com/page/DTree/SetShowIcons",
      "@param {DTree} this - no description",
      "@param {boolean} show - Whether or not to show icons.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetShowIcons",
    "typings": [
      "(this: DTree, show: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the height of each @DTree_Node type in the tree.\nThe default value is 17.\n",
      "@name DTree:SetLineHeight",
      "@wiki https://wiki.garrysmod.com/page/DTree/SetLineHeight",
      "@param {DTree} this - no description",
      "@param {number} h - The height to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetLineHeight",
    "typings": [
      "(this: DTree, h: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the indentation size of the @DTree type, the distance between each \"level\" of the tree is offset on the left from the previous level.\nCurrently this feature has no effect on the @DTree type element.\n",
      "@name DTree:SetIndentSize",
      "@wiki https://wiki.garrysmod.com/page/DTree/SetIndentSize",
      "@param {DTree} this - no description",
      "@param {number} size - The new indentation size.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetIndentSize",
    "typings": [
      "(this: DTree, size: number): void"
    ]
  },
  {
    "comments": [
      "\nSet the currently selected top-level node.\n",
      "@name DTree:SetSelectedItem",
      "@wiki https://wiki.garrysmod.com/page/DTree/SetSelectedItem",
      "@param {DTree} this - no description",
      "@param {DTree_Node} node - @DTree_Node type to select.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetSelectedItem",
    "typings": [
      "(this: DTree, node: DTree_Node): void"
    ]
  },
  {
    "comments": [
      "\nEnables the \"click when drag-hovering\" functionality.\nIf enabled, when hovering over any @DTree_Node type of this @DTree type while dragging a panel, the node will be automatically clicked on (and subsequently @DTree:OnNodeSelected will be called) to open any attached panels, such as spawnlists in spawnmenu.\nSee also: @PanelHooks:DragHoverClick.\n",
      "@name DTree:SetClickOnDragHover",
      "@wiki https://wiki.garrysmod.com/page/DTree/SetClickOnDragHover",
      "@param {DTree} this - no description",
      "@param {boolean} enable - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetClickOnDragHover",
    "typings": [
      "(this: DTree, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDoes nothing. Is not called by the @DTree type itself.\nUsed as a placeholder empty function alongside @DTree:ExpandTo, @DTree:MoveChildTo and @DTree:ChildExpanded to prevent errors when @DTree_Node:SetExpanded is incorrectly used on a @DTree type.\n",
      "@name DTree:SetExpanded",
      "@wiki https://wiki.garrysmod.com/page/DTree/SetExpanded",
      "@internal",
      "@param {DTree} this - no description",
      "@param {boolean} bExpand - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetExpanded",
    "typings": [
      "(this: DTree, bExpand: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns the root @DTree_Node type, the node that is the parent to all other nodes of the DTree.\n",
      "@name DTree:Root",
      "@wiki https://wiki.garrysmod.com/page/DTree/Root",
      "@param {DTree} this - no description",
      "@returns {Panel} - Root node."
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "Root",
    "typings": [
      "(this: DTree): Panel"
    ]
  },
  {
    "comments": [
      "\nThis function is called when a node within a tree is selected.\n",
      "@name DTree:OnNodeSelected",
      "@wiki https://wiki.garrysmod.com/page/DTree/OnNodeSelected",
      "@param {DTree} this - no description",
      "@param {Panel} node - The node that was selected.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "OnNodeSelected",
    "typings": [
      "(this: DTree, node: Panel): void"
    ]
  },
  {
    "comments": [
      "\nMoves given node to the top of @DTree types children. (Makes it the topmost mode)\nUsed as a placeholder function alongside @DTree:ExpandTo, @DTree:SetExpanded and @DTree:ChildExpanded.\nThe @DTree type acts a root node and methods with the same name in @DTree_Node type call to the parent.\n",
      "@name DTree:MoveChildTo",
      "@wiki https://wiki.garrysmod.com/page/DTree/MoveChildTo",
      "@param {DTree} this - no description",
      "@param {Panel} child - The node to move",
      "@param {number} pos - Unused, does nothing.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "MoveChildTo",
    "typings": [
      "(this: DTree, child: Panel, pos: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the [Silkicons](https://wiki.garrysmod.com/page/Silkicons) next to each node of the DTree will be displayed.\nIndividual icons can be set with @DTree_Node:SetIcon or passed as the second argument in @DTree:AddNode.\n",
      "@name DTree:GetShowIcons",
      "@wiki https://wiki.garrysmod.com/page/DTree/GetShowIcons",
      "@param {DTree} this - no description",
      "@returns {boolean} - Whether or not the silkicons next to each node will be displayed."
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetShowIcons",
    "typings": [
      "(this: DTree): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the currently selected node.\n",
      "@name DTree:GetSelectedItem",
      "@wiki https://wiki.garrysmod.com/page/DTree/GetSelectedItem",
      "@param {DTree} this - no description",
      "@returns {Panel} - Curently selected node."
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetSelectedItem",
    "typings": [
      "(this: DTree): Panel"
    ]
  },
  {
    "comments": [
      "\nDoes nothing.\n",
      "@name DTree:LayoutTree",
      "@wiki https://wiki.garrysmod.com/page/DTree/LayoutTree",
      "@param {DTree} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "LayoutTree",
    "typings": [
      "(this: DTree): void"
    ]
  },
  {
    "comments": [
      "\nReturns the height of each @DTree_Node type in the tree.\n",
      "@name DTree:GetLineHeight",
      "@wiki https://wiki.garrysmod.com/page/DTree/GetLineHeight",
      "@param {DTree} this - no description",
      "@returns {number} - The height of each @DTree_Node type in the tree."
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetLineHeight",
    "typings": [
      "(this: DTree): number"
    ]
  },
  {
    "comments": [
      "\nReturns the indentation size of the @DTree type, the distance between each \"level\" of the tree is offset on the left from the previous level.\nCurrently this feature has no effect on the @DTree type element.\n",
      "@name DTree:GetIndentSize",
      "@wiki https://wiki.garrysmod.com/page/DTree/GetIndentSize",
      "@param {DTree} this - no description",
      "@returns {number} - The indentation size."
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetIndentSize",
    "typings": [
      "(this: DTree): number"
    ]
  },
  {
    "comments": [
      "\nReturns the status of @DTree:SetClickOnDragHover. See that for more info.\n",
      "@name DTree:GetClickOnDragHover",
      "@wiki https://wiki.garrysmod.com/page/DTree/GetClickOnDragHover",
      "@param {DTree} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetClickOnDragHover",
    "typings": [
      "(this: DTree): boolean"
    ]
  },
  {
    "comments": [
      "\nDoes nothing. Used as a placeholder empty function alongside @DTree:MoveChildTo, @DTree:SetExpanded and @DTree:ChildExpanded.\nThe @DTree type acts a root node and methods with the same name in @DTree_Node type call to the parent.\n",
      "@name DTree:ExpandTo",
      "@wiki https://wiki.garrysmod.com/page/DTree/ExpandTo",
      "@internal",
      "@param {DTree} this - no description",
      "@param {boolean} bExpand - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "ExpandTo",
    "typings": [
      "(this: DTree, bExpand: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the any node is right clicked. Called by @DTree_Node:DoRightClick.\n",
      "@name DTree:DoRightClick",
      "@wiki https://wiki.garrysmod.com/page/DTree/DoRightClick",
      "@param {DTree} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "DoRightClick",
    "typings": [
      "(this: DTree): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the any node is clicked. Called by @DTree_Node:DoClick.\n",
      "@name DTree:DoClick",
      "@wiki https://wiki.garrysmod.com/page/DTree/DoClick",
      "@param {DTree} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "DoClick",
    "typings": [
      "(this: DTree): void"
    ]
  },
  {
    "comments": [
      "\nCalls directly to @Panel:InvalidateLayout.\nCalled by @DTree_Node types when a sub element has been expanded or collapsed.\nUsed as a placeholder function alongside @DTree:ExpandTo, @DTree:SetExpanded and @DTree:MoveChildTo.\nThe @DTree type acts a root node and methods with the same name in @DTree_Node type call to the parent.\n",
      "@name DTree:ChildExpanded",
      "@wiki https://wiki.garrysmod.com/page/DTree/ChildExpanded",
      "@internal",
      "@param {DTree} this - no description",
      "@param {boolean} bExpand - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "ChildExpanded",
    "typings": [
      "(this: DTree, bExpand: boolean): void"
    ]
  },
  {
    "comments": [
      "\nAdd a node to the DTree\n",
      "@name DTree:AddNode",
      "@wiki https://wiki.garrysmod.com/page/DTree/AddNode",
      "@param {DTree} this - no description",
      "@param {string} name - Name of the option.",
      "@param {string} icon - The icon that will show nexto the node in the DTree.",
      "@returns {DTree_Node} - Returns the created @DTree_Node type panel."
    ],
    "type": "class",
    "context": "DTree",
    "extends": [
      "DScrollPanel"
    ],
    "name": "AddNode",
    "typings": [
      "(this: DTree, name: string, icon?: string): DTree_Node"
    ]
  },
  {
    "comments": [
      "\nWhat Panel you want put inside of the @DTooltip type\n",
      "@name DTooltip:SetContents",
      "@wiki https://wiki.garrysmod.com/page/DTooltip/SetContents",
      "@note You can only have one Panel at a time; use Parenting to add more",
      "@param {DTooltip} this - no description",
      "@param {Panel} panel - Contents",
      "@param {boolean} bDelete - If set to true, the panel in the first argument will be automatically removed when @DTooltip type is closed via @DTooltip:Close.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTooltip",
    "extends": [
      "DLabel"
    ],
    "name": "SetContents",
    "typings": [
      "(this: DTooltip, panel: Panel, bDelete?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nPositions the @DTooltip type so it doesn't stay in the same draw position.\n",
      "@name DTooltip:PositionTooltip",
      "@wiki https://wiki.garrysmod.com/page/DTooltip/PositionTooltip",
      "@internal",
      "@param {DTooltip} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTooltip",
    "extends": [
      "DLabel"
    ],
    "name": "PositionTooltip",
    "typings": [
      "(this: DTooltip): void"
    ]
  },
  {
    "comments": [
      "\nSets up the tooltip for display for given panel and starts the timer.\n",
      "@name DTooltip:OpenForPanel",
      "@wiki https://wiki.garrysmod.com/page/DTooltip/OpenForPanel",
      "@param {DTooltip} this - no description",
      "@param {Panel} pnl - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTooltip",
    "extends": [
      "DLabel"
    ],
    "name": "OpenForPanel",
    "typings": [
      "(this: DTooltip, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nUsed to draw a triangle beneath the @DTooltip type\n",
      "@name DTooltip:DrawArrow",
      "@wiki https://wiki.garrysmod.com/page/DTooltip/DrawArrow",
      "@note Requires @DTooltip:SetContents, without this it will error",
      "@param {DTooltip} this - no description",
      "@param {number} x - arrow location on the x axis",
      "@param {number} y - arrow location on the y axis",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTooltip",
    "extends": [
      "DLabel"
    ],
    "name": "DrawArrow",
    "typings": [
      "(this: DTooltip, x: number, y: number): void"
    ]
  },
  {
    "comments": [
      "\nForces the tooltip to close. This will remove the panel.\n",
      "@name DTooltip:Close",
      "@wiki https://wiki.garrysmod.com/page/DTooltip/Close",
      "@param {DTooltip} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTooltip",
    "extends": [
      "DLabel"
    ],
    "name": "Close",
    "typings": [
      "(this: DTooltip): void"
    ]
  },
  {
    "comments": [
      "\nCalled to set the occupied state of a tile.\n",
      "@name DTileLayout:SetTile",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/SetTile",
      "@internal",
      "@param {DTileLayout} this - no description",
      "@param {number} x - The x coordinate of the tile.",
      "@param {number} y - The y coordinate of the tile.",
      "@param {any} state - The new state of the tile, normally *1* or *nil*.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetTile",
    "typings": [
      "(this: DTileLayout, x: number, y: number, state: any): void"
    ]
  },
  {
    "comments": [
      "\nSets the spacing between 2 elements in the @DTileLayout type on the Y axis.\n",
      "@name DTileLayout:SetSpaceY",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/SetSpaceY",
      "@param {DTileLayout} this - no description",
      "@param {number} spaceY - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetSpaceY",
    "typings": [
      "(this: DTileLayout, spaceY: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the spacing between 2 elements in the @DTileLayout type on the X axis.\n",
      "@name DTileLayout:SetSpaceX",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/SetSpaceX",
      "@param {DTileLayout} this - no description",
      "@param {number} spacingX - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetSpaceX",
    "typings": [
      "(this: DTileLayout, spacingX: number): void"
    ]
  },
  {
    "comments": [
      "\nDetermines the minimum height the DTileLayout will resize to. This is useful if child panels will be added/removed often.\n",
      "@name DTileLayout:SetMinHeight",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/SetMinHeight",
      "@param {DTileLayout} this - no description",
      "@param {number} minH - The minimum height the panel can shrink to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetMinHeight",
    "typings": [
      "(this: DTileLayout, minH: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the spacing between the border/edge of the @DTileLayout type and all the elements inside.\n",
      "@name DTileLayout:SetBorder",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/SetBorder",
      "@param {DTileLayout} this - no description",
      "@param {number} border - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetBorder",
    "typings": [
      "(this: DTileLayout, border: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the size of a single tile. If a child panel is larger than this size, it will occupy several tiles.\nIf you are setting the size of the children properly then you probably don't need to change this.\n",
      "@name DTileLayout:SetBaseSize",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/SetBaseSize",
      "@param {DTileLayout} this - no description",
      "@param {number} size - The size of each tile. It is recommended you use 2^n (*16, 32, 64...*) numbers, and those above *4*, as numbers lower than this will result in many tiles being processed and therefore slow operation.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetBaseSize",
    "typings": [
      "(this: DTileLayout, size: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled by @PanelHooks:PerformLayout to arrange and lay out the child panels, if it has changed in size.\n",
      "@name DTileLayout:LayoutTiles",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/LayoutTiles",
      "@internal",
      "@param {DTileLayout} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "LayoutTiles",
    "typings": [
      "(this: DTileLayout): void"
    ]
  },
  {
    "comments": [
      "\nCalled when anything is dropped on or rearranged within the DTileLayout.\n",
      "@name DTileLayout:OnModified",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/OnModified",
      "@param {DTileLayout} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "OnModified",
    "typings": [
      "(this: DTileLayout): void"
    ]
  },
  {
    "comments": [
      "\nResets the last width/height info, and invalidates the panel's layout, causing it to recalculate all child positions. It is called whenever a child is added or removed, and can be called to refresh the panel.\n",
      "@name DTileLayout:Layout",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/Layout",
      "@param {DTileLayout} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "Layout",
    "typings": [
      "(this: DTileLayout): void"
    ]
  },
  {
    "comments": [
      "\nGets the occupied state of a tile.\n",
      "@name DTileLayout:GetTile",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/GetTile",
      "@internal",
      "@param {DTileLayout} this - no description",
      "@param {number} x - The x coordinate of the tile.",
      "@param {number} y - The y coordinate of the tile.",
      "@returns {any} - The occupied state of the tile, normally *1* or *nil*."
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetTile",
    "typings": [
      "(this: DTileLayout, x: number, y: number): any"
    ]
  },
  {
    "comments": [
      "\nReturns the X axis spacing between 2 elements set by @DTileLayout:SetSpaceX.\n",
      "@name DTileLayout:GetSpaceX",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/GetSpaceX",
      "@param {DTileLayout} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetSpaceX",
    "typings": [
      "(this: DTileLayout): number"
    ]
  },
  {
    "comments": [
      "\nReturns the Y axis spacing between 2 elements set by @DTileLayout:SetSpaceY.\n",
      "@name DTileLayout:GetSpaceY",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/GetSpaceY",
      "@param {DTileLayout} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetSpaceY",
    "typings": [
      "(this: DTileLayout): number"
    ]
  },
  {
    "comments": [
      "\nReturns the border spacing set by @DTileLayout:SetBorder.\n",
      "@name DTileLayout:GetBorder",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/GetBorder",
      "@param {DTileLayout} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetBorder",
    "typings": [
      "(this: DTileLayout): number"
    ]
  },
  {
    "comments": [
      "\nReturns the minimum height the DTileLayout can resize to.\n",
      "@name DTileLayout:GetMinHeight",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/GetMinHeight",
      "@param {DTileLayout} this - no description",
      "@returns {number} - The minimum height the panel can shrink to."
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetMinHeight",
    "typings": [
      "(this: DTileLayout): number"
    ]
  },
  {
    "comments": [
      "\nDetermines if a group of tiles is vacant.\n",
      "@name DTileLayout:FitsInTile",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/FitsInTile",
      "@internal",
      "@param {DTileLayout} this - no description",
      "@param {number} x - The x coordinate of the first tile.",
      "@param {number} y - The y coordinate of the first tile.",
      "@param {number} w - The width needed.",
      "@param {number} h - The height needed.",
      "@returns {boolean} - Whether or not this group is available for occupation."
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "FitsInTile",
    "typings": [
      "(this: DTileLayout, x: number, y: number, w: number, h: number): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the size of each single tile, set with @DTileLayout:SetBaseSize.\n",
      "@name DTileLayout:GetBaseSize",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/GetBaseSize",
      "@param {DTileLayout} this - no description",
      "@returns {number} - Base tile size."
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetBaseSize",
    "typings": [
      "(this: DTileLayout): number"
    ]
  },
  {
    "comments": [
      "\nCreates copies of all the children from the given panel object and parents them to this one.\n",
      "@name DTileLayout:CopyContents",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/CopyContents",
      "@param {DTileLayout} this - no description",
      "@param {Panel} source - The source panel from which to copy all children.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "CopyContents",
    "typings": [
      "(this: DTileLayout, source: Panel): void"
    ]
  },
  {
    "comments": [
      "\nFinds the coordinates of the first group of free tiles that fit the given size.\n",
      "@name DTileLayout:FindFreeTile",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/FindFreeTile",
      "@internal",
      "@param {DTileLayout} this - no description",
      "@param {number} x - The x coordinate to start looking from.",
      "@param {number} y - The y coordinate to start looking from.",
      "@param {number} w - The needed width.",
      "@param {number} h - The needed height.",
      "@returns {number} - The x coordinate of the found available space.",
      "@returns {number} - The y coordinate of the found available space.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "FindFreeTile",
    "typings": [
      "(this: DTileLayout, x: number, y: number, w: number, h: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nCreates and returns an exact copy of the DTileLayout.\n",
      "@name DTileLayout:Copy",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/Copy",
      "@param {DTileLayout} this - no description",
      "@returns {Panel} - The created copy."
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "Copy",
    "typings": [
      "(this: DTileLayout): Panel"
    ]
  },
  {
    "comments": [
      "\nCalled to designate a range of tiles as occupied by a panel.\n",
      "@name DTileLayout:ConsumeTiles",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/ConsumeTiles",
      "@internal",
      "@param {DTileLayout} this - no description",
      "@param {number} x - The x coordinate of the top-left corner of the panel.",
      "@param {number} y - The y coordinate of the top-left corner of the panel.",
      "@param {number} w - The panel's width.",
      "@param {number} h - The panel's height.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "ConsumeTiles",
    "typings": [
      "(this: DTileLayout, x: number, y: number, w: number, h: number): void"
    ]
  },
  {
    "comments": [
      "\nClears the panel's tile table. Used by @DTileLayout:LayoutTiles.\n",
      "@name DTileLayout:ClearTiles",
      "@wiki https://wiki.garrysmod.com/page/DTileLayout/ClearTiles",
      "@internal",
      "@param {DTileLayout} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTileLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "ClearTiles",
    "typings": [
      "(this: DTileLayout): void"
    ]
  },
  {
    "comments": [
      "\nSets the text of the @DTextEntry type and calls @DTextEntry:OnValueChange.\n",
      "@name DTextEntry:SetValue",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetValue",
      "@param {DTextEntry} this - no description",
      "@param {string | number} text - The value to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetValue",
    "typings": [
      "(this: DTextEntry, text: string | number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether we should fire @DTextEntry:OnValueChange every time we type or delete a character or only when Enter is pressed.\n",
      "@name DTextEntry:SetUpdateOnType",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetUpdateOnType",
      "@param {DTextEntry} this - no description",
      "@param {boolean} updateOnType - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetUpdateOnType",
    "typings": [
      "(this: DTextEntry, updateOnType: boolean): void"
    ]
  },
  {
    "comments": [
      "\nAllow you to add a hint.\n",
      "@name DTextEntry:SetPlaceholderText",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetPlaceholderText",
      "@param {DTextEntry} this - no description",
      "@param {string} text - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetPlaceholderText",
    "typings": [
      "(this: DTextEntry, text?: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the text color of the @DTextEntry type.\n",
      "@name DTextEntry:SetTextColor",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetTextColor",
      "@param {DTextEntry} this - no description",
      "@param {Color} color - The text color. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetTextColor",
    "typings": [
      "(this: DTextEntry, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nAllow you to set placeholder color.\n",
      "@name DTextEntry:SetPlaceholderColor",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetPlaceholderColor",
      "@param {DTextEntry} this - no description",
      "@param {Color} color - The color of the placeholder.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetPlaceholderColor",
    "typings": [
      "(this: DTextEntry, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nChanges the font of the DTextEntry.\n",
      "@name DTextEntry:SetFont",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetFont",
      "@param {DTextEntry} this - no description",
      "@param {string} font - The name of the font to be changed to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetFont",
    "typings": [
      "(this: DTextEntry, font: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not to decline non-numeric characters as input.\nNumeric characters are 1234567890.-\n",
      "@name DTextEntry:SetNumeric",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetNumeric",
      "@param {DTextEntry} this - no description",
      "@param {boolean} numericOnly - Whether to accept only numeric characters.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetNumeric",
    "typings": [
      "(this: DTextEntry, numericOnly: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether pressing the Enter key will cause the DTextEntry to lose focus or not, provided it is not multiline. This is true by default.\n",
      "@name DTextEntry:SetEnterAllowed",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetEnterAllowed",
      "@param {DTextEntry} this - no description",
      "@param {boolean} allowEnter - If set to false, pressing Enter will not cause the panel to lose focus and will never call @DTextEntry:OnEnter.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetEnterAllowed",
    "typings": [
      "(this: DTextEntry, allowEnter: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDisables Input on a DTextEntry. This differs from @DTextEntry:SetDisabled - SetEditable will not affect the appearance of the textbox.\n",
      "@name DTextEntry:SetEditable",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetEditable",
      "@param {DTextEntry} this - no description",
      "@param {boolean} enabled - Whether the DTextEntry should be editable",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetEditable",
    "typings": [
      "(this: DTextEntry, enabled: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDisables input on a DTextEntry and greys it out visually. This differs from @DTextEntry:SetEditable which doesn't visually change the textbox.\n",
      "@name DTextEntry:SetDisabled",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetDisabled",
      "@param {DTextEntry} this - no description",
      "@param {boolean} disabled - Whether the textbox should be disabled",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetDisabled",
    "typings": [
      "(this: DTextEntry, disabled: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled internally when the text changes of the @DTextEntry type are applied. (And set to the attached console variable, if one is given)\nSee also @DTextEntry:OnChange for a function that is called on every text change, even if the console variable is not updated.\nYou should override this function to define custom behavior when the text changes.\nThis method is called:\n* When Enter is pressed after typing\n* When @DTextEntry:SetValue is used\n* For every key typed - only if @DTextEntry:SetUpdateOnType was set to true (default is false)\n",
      "@name DTextEntry:OnValueChange",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/OnValueChange",
      "@param {DTextEntry} this - no description",
      "@param {string} value - The DTextEntry text.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "OnValueChange",
    "typings": [
      "(this: DTextEntry, value: string): void"
    ]
  },
  {
    "comments": [
      "\nBuilds a @DMenu type for the DTextEntry based on the input table.\n",
      "@name DTextEntry:OpenAutoComplete",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/OpenAutoComplete",
      "@internal You really should be using @DTextEntry:GetAutoComplete instead.",
      "@param {DTextEntry} this - no description",
      "@param {table} tab - Table containing results from @DTextEntry:GetAutoComplete.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "OpenAutoComplete",
    "typings": [
      "(this: DTextEntry, tab: table): void"
    ]
  },
  {
    "comments": [
      "\nSets the cursor's color in  DTextEntry (the blinking line).\n",
      "@name DTextEntry:SetCursorColor",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/SetCursorColor",
      "@param {DTextEntry} this - no description",
      "@param {Color} color - The color to set the cursor to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "SetCursorColor",
    "typings": [
      "(this: DTextEntry, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nCalled internally when the text inside the DTextEntry changes.\nYou should not override this function. Use @DTextEntry:OnValueChange instead.\n",
      "@name DTextEntry:OnTextChanged",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/OnTextChanged",
      "@internal",
      "@param {DTextEntry} this - no description",
      "@param {boolean} noMenuRemoval - Determines whether to remove the autocomplete menu (false) or not (true).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "OnTextChanged",
    "typings": [
      "(this: DTextEntry, noMenuRemoval: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a valid character is typed while the text entry is focused.\n",
      "@name DTextEntry:OnKeyCodeTyped",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/OnKeyCodeTyped",
      "@note This hook only works on panels derived from @TextEntry type, such as @DTextEntry type.",
      "@param {DTextEntry} this - no description",
      "@param {KEY} keyCode - They key code of the key pressed, see @KEY enum.",
      "@returns {boolean} - Whether you've handled the key press. Returning true prevents the default text entry behavior from occurring."
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "OnKeyCodeTyped",
    "typings": [
      "(this: DTextEntry, keyCode: KEY): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever enter is pressed on a DTextEntry.\n",
      "@name DTextEntry:OnEnter",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/OnEnter",
      "@note @DTextEntry:IsEditing will still return true in this callback!",
      "@param {DTextEntry} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "OnEnter",
    "typings": [
      "(this: DTextEntry): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the DTextEntry gains focus.\n",
      "@name DTextEntry:OnGetFocus",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/OnGetFocus",
      "@param {DTextEntry} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "OnGetFocus",
    "typings": [
      "(this: DTextEntry): void"
    ]
  },
  {
    "comments": [
      "\nCalled internally by @DTextEntry:OnTextChanged when the user modifies the text in the DTextEntry.\nYou should override this function to define custom behavior when the DTextEntry text changes.\n",
      "@name DTextEntry:OnChange",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/OnChange",
      "@param {DTextEntry} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "OnChange",
    "typings": [
      "(this: DTextEntry): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether this DTextEntry is being edited or not. (i.e. has focus)\n",
      "@name DTextEntry:IsEditing",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/IsEditing",
      "@param {DTextEntry} this - no description",
      "@returns {boolean} - Whether this DTextEntry is being edited or not"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "IsEditing",
    "typings": [
      "(this: DTextEntry): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the @DTextEntry type is set to run @DTextEntry:OnValueChange every time a character is typed or deleted or only when Enter is pressed.\n",
      "@name DTextEntry:GetUpdateOnType",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/GetUpdateOnType",
      "@param {DTextEntry} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "GetUpdateOnType",
    "typings": [
      "(this: DTextEntry): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the text color of a DTextEntry.\n",
      "@name DTextEntry:GetTextColor",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/GetTextColor",
      "@param {DTextEntry} this - no description",
      "@returns {IColor} - The color of the text as a @IColor structure."
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "GetTextColor",
    "typings": [
      "(this: DTextEntry): IColor"
    ]
  },
  {
    "comments": [
      "\nReturn current color of panel placeholder\n",
      "@name DTextEntry:GetPlaceholderColor",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/GetPlaceholderColor",
      "@param {DTextEntry} this - no description",
      "@returns {table} - Current placeholder color"
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "GetPlaceholderColor",
    "typings": [
      "(this: DTextEntry): table"
    ]
  },
  {
    "comments": [
      "\nReturns whether only numeric characters (123456789.-) can be entered into the DTextEntry.\n",
      "@name DTextEntry:GetNumeric",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/GetNumeric",
      "@param {DTextEntry} this - no description",
      "@returns {boolean} - Whether the DTextEntry is numeric or not."
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "GetNumeric",
    "typings": [
      "(this: DTextEntry): boolean"
    ]
  },
  {
    "comments": [
      "\nSimilar to @DTextEntry:GetFloat, but rounds the value to the nearest integer.\n",
      "@name DTextEntry:GetInt",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/GetInt",
      "@param {DTextEntry} this - no description",
      "@returns {number} - Text of the DTextEntry as a round number, or nil if it cannot be converted to a number."
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "GetInt",
    "typings": [
      "(this: DTextEntry): number"
    ]
  },
  {
    "comments": [
      "\nReturns the contents of the DTextEntry as a number.\n",
      "@name DTextEntry:GetFloat",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/GetFloat",
      "@param {DTextEntry} this - no description",
      "@returns {number} - Text of the DTextEntry as a float, or nil if it cannot be converted to a number using @tonumber function."
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "GetFloat",
    "typings": [
      "(this: DTextEntry): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether pressing Enter can cause the panel to lose focus. Note that a multiline DTextEntry cannot be escaped using the Enter key even when this function returns true.\n",
      "@name DTextEntry:GetEnterAllowed",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/GetEnterAllowed",
      "@param {DTextEntry} this - no description",
      "@returns {boolean} - Whether pressing the Enter key can cause the panel to lose focus."
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "GetEnterAllowed",
    "typings": [
      "(this: DTextEntry): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the cursor color of a DTextEntry.\n",
      "@name DTextEntry:GetCursorColor",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/GetCursorColor",
      "@param {DTextEntry} this - no description",
      "@returns {IColor} - The color of the cursor as a @IColor structure."
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "GetCursorColor",
    "typings": [
      "(this: DTextEntry): IColor"
    ]
  },
  {
    "comments": [
      "\nCalled by the DTextEntry when a list of autocompletion options is requested. Meant to be overridden.\n",
      "@name DTextEntry:GetAutoComplete",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/GetAutoComplete",
      "@param {DTextEntry} this - no description",
      "@param {string} inputText - Player's current input.",
      "@returns {table} - If a table is returned, the values of the table will show up as autocomplete suggestions for the user."
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "GetAutoComplete",
    "typings": [
      "(this: DTextEntry, inputText: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns whether a string is numeric or not.\nAlways returns false if the @DTextEntry:SetNumeric is set to false.\n",
      "@name DTextEntry:CheckNumeric",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/CheckNumeric",
      "@param {DTextEntry} this - no description",
      "@param {string} strValue - The string to check.",
      "@returns {boolean} - Whether the string is numeric or not."
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "CheckNumeric",
    "typings": [
      "(this: DTextEntry, strValue: string): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the value of the panel has been updated (whether by user input or otherwise).\nIt allows you to determine whether a user can modify the @TextEntry type's text.\nBy default, this only checks whether the panel disallows numeric characters, preventing it from being edited if the value contains any.\nThis is actually an engine hook that only works on @TextEntry type derived elements.\n",
      "@name DTextEntry:AllowInput",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/DTextEntry/AllowInput",
      "@param {DTextEntry} this - no description",
      "@param {string} char - The last character entered into the panel.",
      "@returns {boolean} - Return true to prevent the value from changing, false to allow it."
    ],
    "type": "class",
    "context": "DTextEntry",
    "extends": [
      "TextEntry"
    ],
    "name": "AllowInput",
    "typings": [
      "(this: DTextEntry, char: string): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the source material for the sprite.\n",
      "@name DSprite:SetMaterial",
      "@wiki https://wiki.garrysmod.com/page/DSprite/SetMaterial",
      "@param {DSprite} this - no description",
      "@param {IMaterial} material - The material to use. This will ideally be an [UnlitGeneric](https://developer.valvesoftware.com/wiki/UnlitGeneric).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSprite",
    "extends": [
      "DPanel"
    ],
    "name": "SetMaterial",
    "typings": [
      "(this: DSprite, material: IMaterial): void"
    ]
  },
  {
    "comments": [
      "\nSeems to be an unused feature. Does nothing.\n",
      "@name DSprite:SetHandle",
      "@wiki https://wiki.garrysmod.com/page/DSprite/SetHandle",
      "@param {DSprite} this - no description",
      "@param {Vector} vec - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSprite",
    "extends": [
      "DPanel"
    ],
    "name": "SetHandle",
    "typings": [
      "(this: DSprite, vec: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the 2D rotation angle of the sprite, in the plane of the screen.\n",
      "@name DSprite:SetRotation",
      "@wiki https://wiki.garrysmod.com/page/DSprite/SetRotation",
      "@param {DSprite} this - no description",
      "@param {number} ang - The anti-clockwise rotation in degrees.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSprite",
    "extends": [
      "DPanel"
    ],
    "name": "SetRotation",
    "typings": [
      "(this: DSprite, ang: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the color modifier for the sprite.\n",
      "@name DSprite:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DSprite/SetColor",
      "@param {DSprite} this - no description",
      "@param {Color} color - The @Color function to use.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSprite",
    "extends": [
      "DPanel"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DSprite, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nGets the 2D rotation angle of the sprite, in the plane of the screen.\n",
      "@name DSprite:GetRotation",
      "@wiki https://wiki.garrysmod.com/page/DSprite/GetRotation",
      "@param {DSprite} this - no description",
      "@returns {number} - The anti-clockwise rotation in degrees."
    ],
    "type": "class",
    "context": "DSprite",
    "extends": [
      "DPanel"
    ],
    "name": "GetRotation",
    "typings": [
      "(this: DSprite): number"
    ]
  },
  {
    "comments": [
      "\nGets the material the sprite is using.\n",
      "@name DSprite:GetMaterial",
      "@wiki https://wiki.garrysmod.com/page/DSprite/GetMaterial",
      "@param {DSprite} this - no description",
      "@returns {IMaterial} - The material in use."
    ],
    "type": "class",
    "context": "DSprite",
    "extends": [
      "DPanel"
    ],
    "name": "GetMaterial",
    "typings": [
      "(this: DSprite): IMaterial"
    ]
  },
  {
    "comments": [
      "@name DSprite:GetHandle",
      "@wiki https://wiki.garrysmod.com/page/DSprite/GetHandle",
      "@param {DSprite} this - no description",
      "@returns {Vector} - no description"
    ],
    "type": "class",
    "context": "DSprite",
    "extends": [
      "DPanel"
    ],
    "name": "GetHandle",
    "typings": [
      "(this: DSprite): Vector"
    ]
  },
  {
    "comments": [
      "\nGets the color the sprite is using as a modifier.\n",
      "@name DSprite:GetColor",
      "@wiki https://wiki.garrysmod.com/page/DSprite/GetColor",
      "@param {DSprite} this - no description",
      "@returns {table} - The @Color function being used."
    ],
    "type": "class",
    "context": "DSprite",
    "extends": [
      "DPanel"
    ],
    "name": "GetColor",
    "typings": [
      "(this: DSprite): table"
    ]
  },
  {
    "comments": [
      "\nFor override by child panels, such as @DNumSlider type.\n",
      "@name DSlider:TranslateValues",
      "@wiki https://wiki.garrysmod.com/page/DSlider/TranslateValues",
      "@param {DSlider} this - no description",
      "@param {number} x - no description",
      "@param {number} y - no description",
      "@returns {number} - x",
      "@returns {number} - y",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "TranslateValues",
    "typings": [
      "(this: DSlider, x: number, y: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nAppears to be non functioning, however is still used by panels such as @DNumSlider type.\n",
      "@name DSlider:SetTrapInside",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetTrapInside",
      "@param {DSlider} this - no description",
      "@param {boolean} trap - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetTrapInside",
    "typings": [
      "(this: DSlider, trap: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUsed to position the draggable panel of the slider on the Y axis.\n",
      "@name DSlider:SetSlideY",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetSlideY",
      "@internal",
      "@param {DSlider} this - no description",
      "@param {number} y - The value range seems to be from 0 to 1",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetSlideY",
    "typings": [
      "(this: DSlider, y: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed to position the draggable panel of the slider on the X axis.\n",
      "@name DSlider:SetSlideX",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetSlideX",
      "@internal",
      "@param {DSlider} this - no description",
      "@param {number} x - The value range seems to be from 0 to 1",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetSlideX",
    "typings": [
      "(this: DSlider, x: number): void"
    ]
  },
  {
    "comments": [
      "\nDoes nothing.\n",
      "@name DSlider:SetNumSlider",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetNumSlider",
      "@param {DSlider} this - no description",
      "@param {any} slider - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetNumSlider",
    "typings": [
      "(this: DSlider, slider: any): void"
    ]
  },
  {
    "comments": [
      "\nAppears to be non functioning, however is still used by panels such as @DNumSlider type.\n",
      "@name DSlider:SetNotches",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetNotches",
      "@param {DSlider} this - no description",
      "@param {number} notches - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetNotches",
    "typings": [
      "(this: DSlider, notches: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the lock on the Y axis.\nFor example the value 0.5 will lock the draggable panel to half the height of the slider's panel.\n",
      "@name DSlider:SetLockY",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetLockY",
      "@param {DSlider} this - no description",
      "@param {number} lockY - Set to nil to reset lock.\nThe value range is from 0 to 1.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetLockY",
    "typings": [
      "(this: DSlider, lockY?: number): void"
    ]
  },
  {
    "comments": [
      "\nDoes nothing.\n",
      "@name DSlider:SetImageColor",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetImageColor",
      "@param {DSlider} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetImageColor",
    "typings": [
      "(this: DSlider): void"
    ]
  },
  {
    "comments": [
      "\nSets the lock on the X axis.\nFor example the value 0.5 will lock the draggable panel to half the width of the slider's panel.\n",
      "@name DSlider:SetLockX",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetLockX",
      "@param {DSlider} this - no description",
      "@param {number} lockX - Set to nil to reset lock.\nThe value range is from 0 to 1.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetLockX",
    "typings": [
      "(this: DSlider, lockX?: number): void"
    ]
  },
  {
    "comments": [
      "\nDoes nothing.\n",
      "@name DSlider:SetImage",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetImage",
      "@param {DSlider} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetImage",
    "typings": [
      "(this: DSlider): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the slider is being dragged.\n",
      "@name DSlider:SetDragging",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetDragging",
      "@internal",
      "@param {DSlider} this - no description",
      "@param {boolean} dragging - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetDragging",
    "typings": [
      "(this: DSlider, dragging: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the background for the slider.\n",
      "@name DSlider:SetBackground",
      "@wiki https://wiki.garrysmod.com/page/DSlider/SetBackground",
      "@param {DSlider} this - no description",
      "@param {string} path - Path to the image.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "SetBackground",
    "typings": [
      "(this: DSlider, path: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if this element is being edited by the player.\n",
      "@name DSlider:IsEditing",
      "@wiki https://wiki.garrysmod.com/page/DSlider/IsEditing",
      "@param {DSlider} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "IsEditing",
    "typings": [
      "(this: DSlider): boolean"
    ]
  },
  {
    "comments": [
      "\nAppears to be non functioning, however is still used by panels such as @DNumSlider type.\n",
      "@name DSlider:GetTrapInside",
      "@wiki https://wiki.garrysmod.com/page/DSlider/GetTrapInside",
      "@param {DSlider} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "GetTrapInside",
    "typings": [
      "(this: DSlider): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the target position of the draggable \"knob\" panel of the slider on the Y axis.\nSet by @DSlider:SetSlideY.\n",
      "@name DSlider:GetSlideY",
      "@wiki https://wiki.garrysmod.com/page/DSlider/GetSlideY",
      "@param {DSlider} this - no description",
      "@returns {number} - The value range seems to be from 0 to 1"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "GetSlideY",
    "typings": [
      "(this: DSlider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the target position of the draggable \"knob\" panel of the slider on the X axis.\nSet by @DSlider:SetSlideX.\n",
      "@name DSlider:GetSlideX",
      "@wiki https://wiki.garrysmod.com/page/DSlider/GetSlideX",
      "@param {DSlider} this - no description",
      "@returns {number} - The value range seems to be from 0 to 1"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "GetSlideX",
    "typings": [
      "(this: DSlider): number"
    ]
  },
  {
    "comments": [
      "\nDoes nothing.\n",
      "@name DSlider:GetNumSlider",
      "@wiki https://wiki.garrysmod.com/page/DSlider/GetNumSlider",
      "@param {DSlider} this - no description",
      "@returns {any} - no description"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "GetNumSlider",
    "typings": [
      "(this: DSlider): any"
    ]
  },
  {
    "comments": [
      "\nAppears to be non functioning, however is still used by panels such as @DNumSlider type.\n",
      "@name DSlider:GetNotches",
      "@wiki https://wiki.garrysmod.com/page/DSlider/GetNotches",
      "@param {DSlider} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "GetNotches",
    "typings": [
      "(this: DSlider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the draggable panel's lock on the Y axis.\nSee @DSlider:SetLockY for more info.\n",
      "@name DSlider:GetLockY",
      "@wiki https://wiki.garrysmod.com/page/DSlider/GetLockY",
      "@param {DSlider} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "GetLockY",
    "typings": [
      "(this: DSlider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the draggable panel's lock on the X axis.\nSee @DSlider:SetLockX for more info.\n",
      "@name DSlider:GetLockX",
      "@wiki https://wiki.garrysmod.com/page/DSlider/GetLockX",
      "@param {DSlider} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "GetLockX",
    "typings": [
      "(this: DSlider): number"
    ]
  },
  {
    "comments": [
      "\nIdentical to @DSlider:IsEditing\n",
      "@name DSlider:GetDragging",
      "@wiki https://wiki.garrysmod.com/page/DSlider/GetDragging",
      "@param {DSlider} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DSlider",
    "extends": [
      "DPanel"
    ],
    "name": "GetDragging",
    "typings": [
      "(this: DSlider): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the shape to be drawn.\n",
      "@name DShape:SetType",
      "@wiki https://wiki.garrysmod.com/page/DShape/SetType",
      "@param {DShape} this - no description",
      "@param {string} type - The render type of the DShape. Only rectangles (*Rect*) work currently. If you don't define a type immediately, the @PanelHooks:Paint method will generate errors until you do.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DShape",
    "extends": [
      "DPanel"
    ],
    "name": "SetType",
    "typings": [
      "(this: DShape, type: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the color to display the shape with.\n",
      "@name DShape:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DShape/SetColor",
      "@param {DShape} this - no description",
      "@param {IColor} clr - The @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DShape",
    "extends": [
      "DPanel"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DShape, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "\nSets the border color of the shape.\nCurrently does nothing.\n",
      "@name DShape:SetBorderColor",
      "@wiki https://wiki.garrysmod.com/page/DShape/SetBorderColor",
      "@param {DShape} this - no description",
      "@param {IColor} clr - The desired border color.\nSee @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DShape",
    "extends": [
      "DPanel"
    ],
    "name": "SetBorderColor",
    "typings": [
      "(this: DShape, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "\nReturns the current type of shape this panel is set to display.\nSee @DShape:SetType.\n",
      "@name DShape:GetType",
      "@wiki https://wiki.garrysmod.com/page/DShape/GetType",
      "@param {DShape} this - no description",
      "@returns {string} - no description"
    ],
    "type": "class",
    "context": "DShape",
    "extends": [
      "DPanel"
    ],
    "name": "GetType",
    "typings": [
      "(this: DShape): string"
    ]
  },
  {
    "comments": [
      "\nReturns the color set to display the shape with.\n",
      "@name DShape:GetColor",
      "@wiki https://wiki.garrysmod.com/page/DShape/GetColor",
      "@param {DShape} this - no description",
      "@returns {IColor} - The @IColor structure"
    ],
    "type": "class",
    "context": "DShape",
    "extends": [
      "DPanel"
    ],
    "name": "GetColor",
    "typings": [
      "(this: DShape): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns the current type of shape this panel is set to display.\nSee @DShape:SetBorderColor.\n",
      "@name DShape:GetBorderColor",
      "@wiki https://wiki.garrysmod.com/page/DShape/GetBorderColor",
      "@param {DShape} this - no description",
      "@returns {IColor} - The border color\nSee @IColor structure"
    ],
    "type": "class",
    "context": "DShape",
    "extends": [
      "DPanel"
    ],
    "name": "GetBorderColor",
    "typings": [
      "(this: DShape): IColor"
    ]
  },
  {
    "comments": [
      "\nSets the DScrollPanel's padding. This function appears to be unused.\n",
      "@name DScrollPanel:SetPadding",
      "@wiki https://wiki.garrysmod.com/page/DScrollPanel/SetPadding",
      "@param {DScrollPanel} this - no description",
      "@param {number} padding - The padding of the DScrollPanel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DScrollPanel",
    "extends": [
      "DPanel"
    ],
    "name": "SetPadding",
    "typings": [
      "(this: DScrollPanel, padding: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the canvas of the DScrollPanel.\n",
      "@name DScrollPanel:SetCanvas",
      "@wiki https://wiki.garrysmod.com/page/DScrollPanel/SetCanvas",
      "@internal",
      "@param {DScrollPanel} this - no description",
      "@param {Panel} canvas - The new canvas",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DScrollPanel",
    "extends": [
      "DPanel"
    ],
    "name": "SetCanvas",
    "typings": [
      "(this: DScrollPanel, canvas: Panel): void"
    ]
  },
  {
    "comments": [
      "\nScrolls to the given child\n",
      "@name DScrollPanel:ScrollToChild",
      "@wiki https://wiki.garrysmod.com/page/DScrollPanel/ScrollToChild",
      "@param {DScrollPanel} this - no description",
      "@param {Panel} panel - The panel to scroll to, must be a child of the DScrollPanel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DScrollPanel",
    "extends": [
      "DPanel"
    ],
    "name": "ScrollToChild",
    "typings": [
      "(this: DScrollPanel, panel: Panel): void"
    ]
  },
  {
    "comments": [
      "@name DScrollPanel:Rebuild",
      "@wiki https://wiki.garrysmod.com/page/DScrollPanel/Rebuild",
      "@param {DScrollPanel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DScrollPanel",
    "extends": [
      "DPanel"
    ],
    "name": "Rebuild",
    "typings": [
      "(this: DScrollPanel): void"
    ]
  },
  {
    "comments": [
      "\nReturn the width of the DScrollPanel's canvas.\n",
      "@name DScrollPanel:InnerWidth",
      "@wiki https://wiki.garrysmod.com/page/DScrollPanel/InnerWidth",
      "@param {DScrollPanel} this - no description",
      "@returns {number} - The width of the DScrollPanel's canvas"
    ],
    "type": "class",
    "context": "DScrollPanel",
    "extends": [
      "DPanel"
    ],
    "name": "InnerWidth",
    "typings": [
      "(this: DScrollPanel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the vertical scroll bar of the panel.\n",
      "@name DScrollPanel:GetVBar",
      "@wiki https://wiki.garrysmod.com/page/DScrollPanel/GetVBar",
      "@param {DScrollPanel} this - no description",
      "@returns {DVScrollBar} - The @DVScrollBar type."
    ],
    "type": "class",
    "context": "DScrollPanel",
    "extends": [
      "DPanel"
    ],
    "name": "GetVBar",
    "typings": [
      "(this: DScrollPanel): DVScrollBar"
    ]
  },
  {
    "comments": [
      "\nGets the DScrollPanels padding\n",
      "@name DScrollPanel:GetPadding",
      "@wiki https://wiki.garrysmod.com/page/DScrollPanel/GetPadding",
      "@param {DScrollPanel} this - no description",
      "@returns {number} - DScrollPanels padding"
    ],
    "type": "class",
    "context": "DScrollPanel",
    "extends": [
      "DPanel"
    ],
    "name": "GetPadding",
    "typings": [
      "(this: DScrollPanel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the canvas ( The panel all child panels are parented to ) of the DScrollPanel.\n",
      "@name DScrollPanel:GetCanvas",
      "@wiki https://wiki.garrysmod.com/page/DScrollPanel/GetCanvas",
      "@param {DScrollPanel} this - no description",
      "@returns {Panel} - The canvas"
    ],
    "type": "class",
    "context": "DScrollPanel",
    "extends": [
      "DPanel"
    ],
    "name": "GetCanvas",
    "typings": [
      "(this: DScrollPanel): Panel"
    ]
  },
  {
    "comments": [
      "\nParents the passed panel to the DScrollPanel's canvas.\n",
      "@name DScrollPanel:AddItem",
      "@wiki https://wiki.garrysmod.com/page/DScrollPanel/AddItem",
      "@param {DScrollPanel} this - no description",
      "@param {Panel} pnl - The panel to add.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DScrollPanel",
    "extends": [
      "DPanel"
    ],
    "name": "AddItem",
    "typings": [
      "(this: DScrollPanel, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nThe user command is received by the server and then converted into a move. This is also run clientside when in multiplayer, for prediction to work.\n",
      "@name drive.StartMove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/StartMove",
      "@internal",
      "@param {void} this - no description",
      "@param {Player} ply - The player",
      "@param {CMoveData} mv - The move data",
      "@param {CUserCmd} cmd - The user command",
      "@returns {boolean} - true if succeeded"
    ],
    "type": "func",
    "context": "drive",
    "name": "StartMove",
    "typings": [
      "(this: void, ply: Player, mv: CMoveData, cmd: CUserCmd): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when the player first starts driving this entity\n",
      "@name drive.Start",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/Start",
      "@param {void} this - no description",
      "@param {Player} ply - The player",
      "@param {Entity} ent - The entity",
      "@returns {void}"
    ],
    "type": "func",
    "context": "drive",
    "name": "Start",
    "typings": [
      "(this: void, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nRegisters a new entity drive.\n",
      "@name drive.Register",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/Register",
      "@param {void} this - no description",
      "@param {string} name - The name of the drive.",
      "@param {table} data - The data required to create the drive. This includes the functions used by the drive.",
      "@param {string} base - The base of the drive.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "drive",
    "name": "Register",
    "typings": [
      "(this: void, name: string, data: table, base: string): void"
    ]
  },
  {
    "comments": [
      "\nStops the player from driving anything. ( For example a prop in sandbox )\n",
      "@name drive.PlayerStopDriving",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/PlayerStopDriving",
      "@param {void} this - no description",
      "@param {Player} ply - The player to affect",
      "@returns {void}"
    ],
    "type": "func",
    "context": "drive",
    "name": "PlayerStopDriving",
    "typings": [
      "(this: void, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nStarts driving for the player.\n",
      "@name drive.PlayerStartDriving",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/PlayerStartDriving",
      "@param {void} this - no description",
      "@param {Player} ply - The player to affect",
      "@param {Entity} ent - The entity to drive",
      "@param {string} mode - The driving mode",
      "@returns {void}"
    ],
    "type": "func",
    "context": "drive",
    "name": "PlayerStartDriving",
    "typings": [
      "(this: void, ply: Player, ent: Entity, mode: string): void"
    ]
  },
  {
    "comments": [
      "\nThe move is executed here.\n",
      "@name drive.Move",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/Move",
      "@internal",
      "@param {void} this - no description",
      "@param {Player} ply - The player",
      "@param {CMoveData} mv - The move data",
      "@returns {boolean} - true if succeeded"
    ],
    "type": "func",
    "context": "drive",
    "name": "Move",
    "typings": [
      "(this: void, ply: Player, mv: CMoveData): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns ( or creates if inexistent ) a driving method.\n",
      "@name drive.GetMethod",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/GetMethod",
      "@internal",
      "@param {void} this - no description",
      "@param {Player} ply - The player",
      "@returns {table} - A method object."
    ],
    "type": "func",
    "context": "drive",
    "name": "GetMethod",
    "typings": [
      "(this: void, ply: Player): table"
    ]
  },
  {
    "comments": [
      "\nThe move is finished. Copy mv back into the target.\n",
      "@name drive.FinishMove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/FinishMove",
      "@internal",
      "@param {void} this - no description",
      "@param {Player} ply - The player",
      "@param {CMoveData} mv - The move data",
      "@returns {boolean} - true if succeeded"
    ],
    "type": "func",
    "context": "drive",
    "name": "FinishMove",
    "typings": [
      "(this: void, ply: Player, mv: CMoveData): boolean"
    ]
  },
  {
    "comments": [
      "\nPlayer has stopped driving the entity.\n",
      "@name drive.End",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/End",
      "@param {void} this - no description",
      "@param {Player} ply - The player",
      "@param {Entity} ent - The entity",
      "@returns {void}"
    ],
    "type": "func",
    "context": "drive",
    "name": "End",
    "typings": [
      "(this: void, ply: Player, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nDestroys players current driving method.\n",
      "@name drive.DestroyMethod",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/DestroyMethod",
      "@internal",
      "@param {void} this - no description",
      "@param {Player} ply - The player to affect",
      "@returns {void}"
    ],
    "type": "func",
    "context": "drive",
    "name": "DestroyMethod",
    "typings": [
      "(this: void, ply: Player): void"
    ]
  },
  {
    "comments": [
      "\nSets the color stored in the color picker.\n",
      "@name DRGBPicker:SetRGB",
      "@wiki https://wiki.garrysmod.com/page/DRGBPicker/SetRGB",
      "@note This function is meant to be called internally and will not update the position of the color picker line or call @DRGBPicker:OnChange",
      "@param {DRGBPicker} this - no description",
      "@param {Color} color - The color to set, see @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DRGBPicker",
    "extends": [
      "DPanel"
    ],
    "name": "SetRGB",
    "typings": [
      "(this: DRGBPicker, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nFunction which is called when the cursor is clicked and/or moved on the color picker. Meant to be overridden.\n",
      "@name DRGBPicker:OnChange",
      "@wiki https://wiki.garrysmod.com/page/DRGBPicker/OnChange",
      "@param {DRGBPicker} this - no description",
      "@param {IColor} col - The color that is selected on the color picker (@IColor structure form).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DRGBPicker",
    "extends": [
      "DPanel"
    ],
    "name": "OnChange",
    "typings": [
      "(this: DRGBPicker, col: IColor): void"
    ]
  },
  {
    "comments": [
      "\nClientside, the client creates the cmd (usercommand) from their input device (mouse, keyboard) and then it's sent to the server. Restrict view angles here.\n",
      "@name drive.CreateMove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/CreateMove",
      "@internal",
      "@param {void} this - no description",
      "@param {CUserCmd} cmd - The user command",
      "@returns {boolean} - true if succeeded"
    ],
    "type": "func",
    "context": "drive",
    "name": "CreateMove",
    "typings": [
      "(this: void, cmd: CUserCmd): boolean"
    ]
  },
  {
    "comments": [
      "\nOptionally alter the view.\n",
      "@name drive.CalcView",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/drive/CalcView",
      "@internal",
      "@param {void} this - no description",
      "@param {Player} ply - The player",
      "@param {ViewData} view - The view, see @ViewData structure",
      "@returns {boolean} - true if succeeded"
    ],
    "type": "func",
    "context": "drive",
    "name": "CalcView",
    "typings": [
      "(this: void, ply: Player, view: ViewData): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the color currently set on the color picker.\n",
      "@name DRGBPicker:GetRGB",
      "@wiki https://wiki.garrysmod.com/page/DRGBPicker/GetRGB",
      "@param {DRGBPicker} this - no description",
      "@returns {IColor} - The color set on the color picker, see @IColor structure."
    ],
    "type": "class",
    "context": "DRGBPicker",
    "extends": [
      "DPanel"
    ],
    "name": "GetRGB",
    "typings": [
      "(this: DRGBPicker): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns the color at given position on the internal texture.\n",
      "@name DRGBPicker:GetPosColor",
      "@wiki https://wiki.garrysmod.com/page/DRGBPicker/GetPosColor",
      "@internal",
      "@param {DRGBPicker} this - no description",
      "@param {number} x - The X coordinate on the texture to get the color from",
      "@param {number} y - The Y coordinate on the texture to get the color from",
      "@returns {IColor} - @IColor structure",
      "@returns {number} - The X-coordinate clamped to the texture's width.",
      "@returns {number} - The Y-coordinate clamped to the texture's height.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DRGBPicker",
    "extends": [
      "DPanel"
    ],
    "name": "GetPosColor",
    "typings": [
      "(this: DRGBPicker, x: number, y: number): [IColor, number, number]"
    ]
  },
  {
    "comments": [
      "\nDraws a rounded box with text in it.\n",
      "@name draw.WordBox",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/WordBox",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {number} bordersize - Size of border, should be multiple of 2. Ideally this will be 8 or 16.",
      "@param {number} x - The X Coordinate.",
      "@param {number} y - The Y Coordinate.",
      "@param {string} text - Text to draw.",
      "@param {string} font - Font to draw in. See @surface.CreateFont to create your own, or [here](https://wiki.garrysmod.com/page/Default_Fonts) for a list of default fonts.",
      "@param {Color} boxcolor - The box color. Uses the @IColor structure.",
      "@param {Color} textcolor - The text color. Uses the @IColor structure.",
      "@returns {number} - The width of the word box.",
      "@returns {number} - The height of the word box.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "draw",
    "name": "WordBox",
    "typings": [
      "(this: void, bordersize: number, x: number, y: number, text: string, font: string, boxcolor: Color, textcolor: Color): [number, number]"
    ]
  },
  {
    "comments": [
      "\nDraws a texture with a table structure.\n",
      "@name draw.TexturedQuad",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/TexturedQuad",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {TextureData} texturedata - The texture properties. See @TextureData structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "draw",
    "name": "TexturedQuad",
    "typings": [
      "(this: void, texturedata: TextureData): void"
    ]
  },
  {
    "comments": [
      "\nWorks like @draw.Text, but draws the text as a shadow.\n",
      "@name draw.TextShadow",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/TextShadow",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {TextData} textdata - The text properties. See @TextData structure",
      "@param {number} distance - How far away the shadow appears.",
      "@param {number} alpha - How visible the shadow is (0-255).",
      "@returns {void}"
    ],
    "type": "func",
    "context": "draw",
    "name": "TextShadow",
    "typings": [
      "(this: void, textdata: TextData, distance: number, alpha?: number): void"
    ]
  },
  {
    "comments": [
      "\nWorks like @draw.SimpleText but uses a table structure instead.\n",
      "@name draw.Text",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/Text",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {TextData} textdata - The text properties. See the @TextData structure",
      "@returns {number} - Width of drawn text",
      "@returns {number} - Height of drawn text",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "draw",
    "name": "Text",
    "typings": [
      "(this: void, textdata: TextData): [number, number]"
    ]
  },
  {
    "comments": [
      "\nDraws text on the screen.\n",
      "@name draw.SimpleText",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/SimpleText",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {string} text - The text to be drawn.",
      "@param {string} font - The font. See @surface.CreateFont to create your own, or see [Default Fonts](https://wiki.garrysmod.com/page/Default%20Fonts) for a list of default fonts.",
      "@param {number} x - The X Coordinate.",
      "@param {number} y - The Y Coordinate.",
      "@param {Color} color - The color of the text. Uses the @IColor structure.",
      "@param {TEXT_ALIGN} xAlign - The alignment of the X coordinate using @TEXT_ALIGN enum.",
      "@param {TEXT_ALIGN} yAlign - The alignment of the Y coordinate using @TEXT_ALIGN enum.",
      "@returns {number} - The width of the text. Same value as if you were calling @surface.GetTextSize.",
      "@returns {number} - The height of the text. Same value as if you were calling @surface.GetTextSize.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "draw",
    "name": "SimpleText",
    "typings": [
      "(this: void, text: string, font?: string, x?: number, y?: number, color?: Color, xAlign?: TEXT_ALIGN, yAlign?: TEXT_ALIGN): [number, number]"
    ]
  },
  {
    "comments": [
      "\nCreates a simple line of text that is outlined.\n",
      "@name draw.SimpleTextOutlined",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/SimpleTextOutlined",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {string} Text - The text to draw.",
      "@param {string} font - The font name to draw with. See @surface.CreateFont to create your own, or [here](https://wiki.garrysmod.com/page/Default_Fonts) for a list of default fonts.",
      "@param {number} x - The X Coordinate.",
      "@param {number} y - The Y Coordinate.",
      "@param {Color} color - The color of the text. Uses the @IColor structure.",
      "@param {TEXT_ALIGN} xAlign - The alignment of the X Coordinate using @TEXT_ALIGN enum.",
      "@param {TEXT_ALIGN} yAlign - The alignment of the Y Coordinate using @TEXT_ALIGN enum.",
      "@param {number} outlinewidth - Width of the outline.",
      "@param {Color} outlinecolor - Color of the outline. Uses the @IColor structure.",
      "@returns {number} - The width of the text. Same value as if you were calling @surface.GetTextSize.",
      "@returns {number} - The height of the text. Same value as if you were calling @surface.GetTextSize.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "draw",
    "name": "SimpleTextOutlined",
    "typings": [
      "(this: void, Text: string, font?: string, x?: number, y?: number, color?: Color, xAlign?: TEXT_ALIGN, yAlign?: TEXT_ALIGN, outlinewidth: number, outlinecolor?: Color): [number, number]"
    ]
  },
  {
    "comments": [
      "\nDraws a rounded rectangle. This function also lets you specify which corners are drawn rounded.\n",
      "@name draw.RoundedBoxEx",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/RoundedBoxEx",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {number} cornerRadius - Radius of the rounded corners, works best with a power of 2 number.",
      "@param {number} x - The x coordinate of the top left of the rectangle.",
      "@param {number} y - The y coordinate of the top left of the rectangle.",
      "@param {number} width - The width of the rectangle.",
      "@param {number} height - The height of the rectangle.",
      "@param {Color} color - The color to fill the rectangle with. Uses the @IColor structure.",
      "@param {boolean} roundTopLeft - Whether the top left corner should be rounded.",
      "@param {boolean} roundTopRight - Whether the top right corner should be rounded.",
      "@param {boolean} roundBottomLeft - Whether the bottom left corner should be rounded.",
      "@param {boolean} roundBottomRight - Whether the bottom right corner should be rounded.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "draw",
    "name": "RoundedBoxEx",
    "typings": [
      "(this: void, cornerRadius: number, x: number, y: number, width: number, height: number, color: Color, roundTopLeft?: boolean, roundTopRight?: boolean, roundBottomLeft?: boolean, roundBottomRight?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDraws a rounded rectangle.\n",
      "@name draw.RoundedBox",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/RoundedBox",
      "@rendering function:2d",
      "@note If you intend to draw a non-rounded rectangle, then it's more efficient to use @surface.DrawRect.",
      "@param {void} this - no description",
      "@param {number} cornerRadius - Radius of the rounded corners, works best with a multiple of 2.",
      "@param {number} x - The x coordinate of the top left of the rectangle.",
      "@param {number} y - The y coordinate of the top left of the rectangle.",
      "@param {number} width - The width of the rectangle.",
      "@param {number} height - The height of the rectangle.",
      "@param {Color} color - The color to fill the rectangle with. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "draw",
    "name": "RoundedBox",
    "typings": [
      "(this: void, cornerRadius: number, x: number, y: number, width: number, height: number, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets drawing texture to a default white texture (vgui/white) via @surface.SetMaterial. Useful for resetting the drawing texture.\n",
      "@name draw.NoTexture",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/NoTexture",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "draw",
    "name": "NoTexture",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns the height of the specified font in pixels.\n",
      "@name draw.GetFontHeight",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/GetFontHeight",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {string} font - Name of the font to get the height of.",
      "@returns {number} - The font height"
    ],
    "type": "func",
    "context": "draw",
    "name": "GetFontHeight",
    "typings": [
      "(this: void, font: string): number"
    ]
  },
  {
    "comments": [
      "\nSimple draw text at position, but this will expand newlines and tabs.\nSee also @MarkupObject type for limited width and markup support.\n",
      "@name draw.DrawText",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/draw/DrawText",
      "@rendering function:2d",
      "@param {void} this - no description",
      "@param {string} text - Text to be drawn.",
      "@param {string} font - Name of font to draw the text in. See @surface.CreateFont to create your own, or [Default Fonts](https://wiki.garrysmod.com/page/Default%20Fonts) for a list of default fonts.",
      "@param {number} x - The X Coordinate.",
      "@param {number} y - The Y Coordinate.",
      "@param {Color} color - Color to draw the text in. Uses the @IColor structure.",
      "@param {TEXT_ALIGN} xAlign - Where to align the text horizontally. Uses the @TEXT_ALIGN enum.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "draw",
    "name": "DrawText",
    "typings": [
      "(this: void, text: string, font?: string, x?: number, y?: number, color?: Color, xAlign?: TEXT_ALIGN): void"
    ]
  },
  {
    "comments": [
      "\nUpdates the receiver to drop the panels onto. Called from @dragndrop.Think.\n",
      "@name dragndrop.UpdateReceiver",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/UpdateReceiver",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "UpdateReceiver",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nHandles all the drag'n'drop processes. Calls @dragndrop.UpdateReceiver and @dragndrop.HoverThink.\n",
      "@name dragndrop.Think",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/Think",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "Think",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nStarts the drag'n'drop.\n",
      "@name dragndrop.StartDragging",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/StartDragging",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "StartDragging",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nStops the drag'n'drop and calls @dragndrop.Clear.\n",
      "@name dragndrop.StopDragging",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/StopDragging",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "StopDragging",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the user is dragging something with the drag'n'drop system.\n",
      "@name dragndrop.IsDragging",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/IsDragging",
      "@param {void} this - no description",
      "@returns {boolean} - True if the user is dragging something with the drag'n'drop system."
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "IsDragging",
    "typings": [
      "(this: void): boolean"
    ]
  },
  {
    "comments": [
      "\nHandles the hover think. Called from @dragndrop.Think.\n",
      "@name dragndrop.HoverThink",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/HoverThink",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "HoverThink",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns a table of currently dragged panels.\n",
      "@name dragndrop.GetDroppable",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/GetDroppable",
      "@param {void} this - no description",
      "@param {string} name - If set, the function will return only the panels with this @Panel:Droppable name.",
      "@returns {table} - A table of all panels that are being currently dragged, if any."
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "GetDroppable",
    "typings": [
      "(this: void, name?: string): table"
    ]
  },
  {
    "comments": [
      "\nHandles the drop action of drag'n'drop library.\n",
      "@name dragndrop.Drop",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/Drop",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "Drop",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nIf returns true, calls @dragndrop.StopDragging in @dragndrop.Drop. Seems to be broken and does nothing. Is it for override?\n",
      "@name dragndrop.HandleDroppedInGame",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/HandleDroppedInGame",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "HandleDroppedInGame",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nClears all the internal drag'n'drop variables.\n",
      "@name dragndrop.Clear",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/Clear",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "Clear",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nCalls the receiver function of hovered panel.\n",
      "@name dragndrop.CallReceiverFunction",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/dragndrop/CallReceiverFunction",
      "@internal",
      "@param {void} this - no description",
      "@param {boolean} bDoDrop - true if the mouse was released, false if we right clicked.",
      "@param {number} command - The command value. This should be the ID of the clicked dropdown menu ( if right clicked, or nil )",
      "@param {number} mx - The local to the panel mouse cursor X position when the click happened.",
      "@param {number} my - The local to the panel  mouse cursor Y position when the click happened.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "dragndrop",
    "name": "CallReceiverFunction",
    "typings": [
      "(this: void, bDoDrop: boolean, command: number, mx: number, my: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the color value of the property.\n",
      "@name DProperty_VectorColor:SetValue",
      "@wiki https://wiki.garrysmod.com/page/DProperty VectorColor/SetValue",
      "@param {DProperty_VectorColor} this - no description",
      "@param {DProperty_VectorColor} color - Sets the color to use in a @DProperty_VectorColor type.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DProperty_VectorColor",
    "extends": [
      "DProperty_Generic"
    ],
    "name": "SetValue",
    "typings": [
      "(this: DProperty_VectorColor, color: DProperty_VectorColor): void"
    ]
  },
  {
    "comments": [
      "\nCalled by a property row to setup a color selection control.\n",
      "@name DProperty_VectorColor:Setup",
      "@wiki https://wiki.garrysmod.com/page/DProperty VectorColor/Setup",
      "@internal",
      "@param {DProperty_VectorColor} this - no description",
      "@param {string} prop - no description",
      "@param {table} settings - A table of settings. None of the values are used for this property. See [Editable Entities](https://wiki.garrysmod.com/page/Editable%20Entities).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DProperty_VectorColor",
    "extends": [
      "DProperty_Generic"
    ],
    "name": "Setup",
    "typings": [
      "(this: DProperty_VectorColor, prop?: string, settings: table): void"
    ]
  },
  {
    "comments": [
      "\nSets up a combo control.\n",
      "@name DProperty_Combo:Setup",
      "@wiki https://wiki.garrysmod.com/page/DProperty Combo/Setup",
      "@param {DProperty_Combo} this - no description",
      "@param {string} prop - The name of DProperty sub control to add.",
      "@param {IDProperty_ComboSetupData} data - Data to use to set up the combo box control.\nStructure:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DProperty_Combo",
    "extends": [
      "DProperty_Generic"
    ],
    "name": "Setup",
    "typings": [
      "(this: DProperty_Combo, prop?: string, data?: IDProperty_ComboSetupData): void"
    ],
    "types": [
      {
        "comments": [
          "text - {string}: The default label for this combo box"
        ],
        "type": "interface",
        "name": "text",
        "typing": "string",
        "context": "IDProperty_ComboSetupData"
      },
      {
        "comments": [
          "values - {table}: The values to add to the combo box"
        ],
        "type": "interface",
        "name": "values",
        "typing": "table",
        "context": "IDProperty_ComboSetupData"
      }
    ]
  },
  {
    "comments": [
      "\nSet the selected option.\n",
      "@name DProperty_Combo:SetSelected",
      "@wiki https://wiki.garrysmod.com/page/DProperty Combo/SetSelected",
      "@param {DProperty_Combo} this - no description",
      "@param {number} Id - Id of the choice to be selected.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DProperty_Combo",
    "extends": [
      "DProperty_Generic"
    ],
    "name": "SetSelected",
    "typings": [
      "(this: DProperty_Combo, Id: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled after the user selects a new value.\n",
      "@name DProperty_Combo:DataChanged",
      "@wiki https://wiki.garrysmod.com/page/DProperty Combo/DataChanged",
      "@param {DProperty_Combo} this - no description",
      "@param {any} data - The new data that was selected.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DProperty_Combo",
    "extends": [
      "DProperty_Generic"
    ],
    "name": "DataChanged",
    "typings": [
      "(this: DProperty_Combo, data: any): void"
    ]
  },
  {
    "comments": [
      "\nAdd a choice to your combo control.\n",
      "@name DProperty_Combo:AddChoice",
      "@wiki https://wiki.garrysmod.com/page/DProperty Combo/AddChoice",
      "@param {DProperty_Combo} this - no description",
      "@param {string} Text - Shown text.",
      "@param {any} data - Stored Data.",
      "@param {boolean} select - Select this element?",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DProperty_Combo",
    "extends": [
      "DProperty_Generic"
    ],
    "name": "AddChoice",
    "typings": [
      "(this: DProperty_Combo, Text: string, data: any, select?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSwitches the active tab to a tab with given name.\n",
      "@name DPropertySheet:SwitchToName",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/SwitchToName",
      "@param {DPropertySheet} this - no description",
      "@param {string} name - Case sensitive name of the tab.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "SwitchToName",
    "typings": [
      "(this: DPropertySheet, name: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the width of the @DPropertySheet type to fit the contents of all of the tabs.\n",
      "@name DPropertySheet:SizeToContentWidth",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/SizeToContentWidth",
      "@param {DPropertySheet} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "SizeToContentWidth",
    "typings": [
      "(this: DPropertySheet): void"
    ]
  },
  {
    "comments": [
      "\nCreates a close button on the right side of the @DPropertySheet type that will run the given callback function when pressed.\n",
      "@name DPropertySheet:SetupCloseButton",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/SetupCloseButton",
      "@param {DPropertySheet} this - no description",
      "@param {function} func - Callback function to be called when the close button is pressed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "SetupCloseButton",
    "typings": [
      "(this: DPropertySheet, func: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nDoes nothing.\n",
      "@name DPropertySheet:SetShowIcons",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/SetShowIcons",
      "@param {DPropertySheet} this - no description",
      "@param {boolean} show - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "SetShowIcons",
    "typings": [
      "(this: DPropertySheet, show: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the padding from parent panel to children panel.\n",
      "@name DPropertySheet:SetPadding",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/SetPadding",
      "@param {DPropertySheet} this - no description",
      "@param {number} padding - Amount of padding",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "SetPadding",
    "typings": [
      "(this: DPropertySheet, padding?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the amount of time (in seconds) it takes to fade between tabs.\n",
      "@name DPropertySheet:SetFadeTime",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/SetFadeTime",
      "@param {DPropertySheet} this - no description",
      "@param {number} time - The amount of time it takes (in seconds) to fade between tabs.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "SetFadeTime",
    "typings": [
      "(this: DPropertySheet, time?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the active tab of the @DPropertySheet type.\n",
      "@name DPropertySheet:SetActiveTab",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/SetActiveTab",
      "@param {DPropertySheet} this - no description",
      "@param {DTab} tab - The @DTab type to set active.\nSee @DPropertySheet:GetItems",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "SetActiveTab",
    "typings": [
      "(this: DPropertySheet, tab: DTab): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a player switches the tabs\n",
      "@name DPropertySheet:OnActiveTabChanged",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/OnActiveTabChanged",
      "@param {DPropertySheet} this - no description",
      "@param {DTab} prev - The previously active @DTab type",
      "@param {DTab} next - The newly active @DTab type",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "OnActiveTabChanged",
    "typings": [
      "(this: DPropertySheet, prev: DTab, next: DTab): void"
    ]
  },
  {
    "comments": [
      "\nReturns whatever value was set by @DPropertySheet:SetShowIcons.\n",
      "@name DPropertySheet:GetShowIcons",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/GetShowIcons",
      "@param {DPropertySheet} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "GetShowIcons",
    "typings": [
      "(this: DPropertySheet): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the padding from the parent panel to child panels.\n",
      "@name DPropertySheet:GetPadding",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/GetPadding",
      "@param {DPropertySheet} this - no description",
      "@returns {number} - Padding"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "GetPadding",
    "typings": [
      "(this: DPropertySheet): number"
    ]
  },
  {
    "comments": [
      "\nReturns a list of all tabs of this @DPropertySheet type.\n",
      "@name DPropertySheet:GetItems",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/GetItems",
      "@param {DPropertySheet} this - no description",
      "@returns {table[]} - A table of tables.\nEach table contains 3 key-value pairs:"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "GetItems",
    "typings": [
      "(this: DPropertySheet): table[]"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of time (in seconds) it takes to fade between tabs.\nSet by @DPropertySheet:SetFadeTime\n",
      "@name DPropertySheet:GetFadeTime",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/GetFadeTime",
      "@param {DPropertySheet} this - no description",
      "@returns {number} - The amount of time (in seconds) it takes to fade between tabs."
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "GetFadeTime",
    "typings": [
      "(this: DPropertySheet): number"
    ]
  },
  {
    "comments": [
      "\nReturns the active @DTab type of this @DPropertySheet type.\n",
      "@name DPropertySheet:GetActiveTab",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/GetActiveTab",
      "@param {DPropertySheet} this - no description",
      "@returns {DTab} - The @DTab type"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "GetActiveTab",
    "typings": [
      "(this: DPropertySheet): DTab"
    ]
  },
  {
    "comments": [
      "\nInternal function that handles the cross fade animation when the player switches tabs.\n",
      "@name DPropertySheet:CrossFade",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/CrossFade",
      "@internal",
      "@param {DPropertySheet} this - no description",
      "@param {table} anim - no description",
      "@param {number} delta - no description",
      "@param {table} data - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "CrossFade",
    "typings": [
      "(this: DPropertySheet, anim: table, delta: number, data: table): void"
    ]
  },
  {
    "comments": [
      "\nRemoves tab and/or panel from the parent DPropertySheet.\n",
      "@name DPropertySheet:CloseTab",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/CloseTab",
      "@param {DPropertySheet} this - no description",
      "@param {DTab | DPropertySheet} tab - The @DTab type of the sheet from @DPropertySheet type.\nSee @DPropertySheet:GetItems.",
      "@param {boolean} removePanel - Set to true to remove the associated panel object as well.",
      "@returns {Panel} - The panel of the tab."
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "CloseTab",
    "typings": [
      "(this: DPropertySheet, tab: DTab | DPropertySheet, removePanel: boolean): Panel"
    ]
  },
  {
    "comments": [
      "\nAdds a new tab.\n",
      "@name DPropertySheet:AddSheet",
      "@wiki https://wiki.garrysmod.com/page/DPropertySheet/AddSheet",
      "@param {DPropertySheet} this - no description",
      "@param {string} name - Name of the tab",
      "@param {DPanel} pnl - Panel to be used as contents of the tab. This normally should be a @DPanel type",
      "@param {string} icon - Icon for the tab. This will ideally be a [silkicon](https://wiki.garrysmod.com/page/Silkicons), but any material name can be used.",
      "@param {boolean} noStretchX - Should @DPropertySheet type try to fill itself with given panel horizontally.",
      "@param {boolean} noStretchY - Should @DPropertySheet type try to fill itself with given panel vertically.",
      "@param {string} tooltip - Tooltip for the tab when user hovers over it with his cursor",
      "@returns {IDPropertySheetAddSheetReturn} - A table containing the following keys:"
    ],
    "type": "class",
    "context": "DPropertySheet",
    "extends": [
      "DPanel"
    ],
    "name": "AddSheet",
    "typings": [
      "(this: DPropertySheet, name: string, pnl: DPanel, icon?: string, noStretchX?: boolean, noStretchY?: boolean, tooltip?: string): IDPropertySheetAddSheetReturn"
    ],
    "types": [
      {
        "comments": [
          "Tab - {DTab}: The created @DTab type."
        ],
        "type": "interface",
        "name": "Tab",
        "typing": "DTab",
        "context": "IDPropertySheetAddSheetReturn"
      },
      {
        "comments": [
          "Name - {string}: Name of the created tab"
        ],
        "type": "interface",
        "name": "Name",
        "typing": "string",
        "context": "IDPropertySheetAddSheetReturn"
      },
      {
        "comments": [
          "Panel - {Panel}: The contents panel of the tab"
        ],
        "type": "interface",
        "name": "Panel",
        "typing": "Panel",
        "context": "IDPropertySheetAddSheetReturn"
      }
    ]
  },
  {
    "comments": [
      "\nReturns (or creates) a category of properties.\nSee @DProperties:CreateRow for adding actual properties.\n",
      "@name DProperties:GetCategory",
      "@wiki https://wiki.garrysmod.com/page/DProperties/GetCategory",
      "@internal",
      "@param {DProperties} this - no description",
      "@param {string} name - Name of the category",
      "@param {boolean} create - Create a new category if it doesn't exist.",
      "@returns {Panel} - An internal panel."
    ],
    "type": "class",
    "context": "DProperties",
    "extends": [
      "Panel"
    ],
    "name": "GetCategory",
    "typings": [
      "(this: DProperties, name: string, create: boolean): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the @DScrollPanel type all the properties panels are attached to.\n",
      "@name DProperties:GetCanvas",
      "@wiki https://wiki.garrysmod.com/page/DProperties/GetCanvas",
      "@param {DProperties} this - no description",
      "@returns {DScrollPanel} - A @DScrollPanel type canvas"
    ],
    "type": "class",
    "context": "DProperties",
    "extends": [
      "Panel"
    ],
    "name": "GetCanvas",
    "typings": [
      "(this: DProperties): DScrollPanel"
    ]
  },
  {
    "comments": [
      "\nCreates a row in the properties panel.\n",
      "@name DProperties:CreateRow",
      "@wiki https://wiki.garrysmod.com/page/DProperties/CreateRow",
      "@param {DProperties} this - no description",
      "@param {string} category - The category to list this row under",
      "@param {string} name - The label of this row",
      "@returns {Panel} - An internal Row panel."
    ],
    "type": "class",
    "context": "DProperties",
    "extends": [
      "Panel"
    ],
    "name": "CreateRow",
    "typings": [
      "(this: DProperties, category: string, name: string): Panel"
    ]
  },
  {
    "comments": [
      "\nSets the fraction of the progress bar. 0 is 0% and 1 is 100%.\n",
      "@name DProgress:SetFraction",
      "@wiki https://wiki.garrysmod.com/page/DProgress/SetFraction",
      "@param {DProgress} this - no description",
      "@param {number} fraction - Fraction of the progress bar. Range is 0 to 1 (0% to 100%).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DProgress",
    "extends": [
      "Panel"
    ],
    "name": "SetFraction",
    "typings": [
      "(this: DProgress, fraction: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the progress bar's fraction. 0 is 0% and 1 is 100%.\n",
      "@name DProgress:GetFraction",
      "@wiki https://wiki.garrysmod.com/page/DProgress/GetFraction",
      "@param {DProgress} this - no description",
      "@returns {number} - Current fraction of the progress bar."
    ],
    "type": "class",
    "context": "DProgress",
    "extends": [
      "Panel"
    ],
    "name": "GetFraction",
    "typings": [
      "(this: DProgress): number"
    ]
  },
  {
    "comments": [
      "\nSets the type of the @DPanelOverlay type.\n",
      "@name DPanelOverlay:SetType",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/DPanelOverlay/SetType",
      "@param {DPanelOverlay} this - no description",
      "@param {number} type - The type to set.\nPossible value are:\n* 1 - 8px corners of given color\n* 2 - 4px corners of given type\n* 3 - 2 top? corners of hardcoded color, 2 other corners of given color",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanelOverlay",
    "extends": [
      "DPanel"
    ],
    "name": "SetType",
    "typings": [
      "(this: DPanelOverlay, type: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the border color of the @DPanelOverlay type.\n",
      "@name DPanelOverlay:SetColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/DPanelOverlay/SetColor",
      "@param {DPanelOverlay} this - no description",
      "@param {Color} color - The color to set. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanelOverlay",
    "extends": [
      "DPanel"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DPanelOverlay, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally by the panel for types 1 and 2.\n",
      "@name DPanelOverlay:PaintInnerCorners",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/DPanelOverlay/PaintInnerCorners",
      "@internal",
      "@param {DPanelOverlay} this - no description",
      "@param {number} size - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanelOverlay",
    "extends": [
      "DPanel"
    ],
    "name": "PaintInnerCorners",
    "typings": [
      "(this: DPanelOverlay, size: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally by the panel for type 3.\n",
      "@name DPanelOverlay:PaintDifferentColours",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/DPanelOverlay/PaintDifferentColours",
      "@internal",
      "@param {DPanelOverlay} this - no description",
      "@param {table} cola - no description",
      "@param {table} colb - no description",
      "@param {table} colc - no description",
      "@param {table} cold - no description",
      "@param {number} size - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanelOverlay",
    "extends": [
      "DPanel"
    ],
    "name": "PaintDifferentColours",
    "typings": [
      "(this: DPanelOverlay, cola: table, colb: table, colc: table, cold: table, size: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the type of the @DPanelOverlay type set by @DPanelOverlay:SetType.\n",
      "@name DPanelOverlay:GetType",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/DPanelOverlay/GetType",
      "@param {DPanelOverlay} this - no description",
      "@returns {number} - The set type."
    ],
    "type": "class",
    "context": "DPanelOverlay",
    "extends": [
      "DPanel"
    ],
    "name": "GetType",
    "typings": [
      "(this: DPanelOverlay): number"
    ]
  },
  {
    "comments": [
      "\nReturns the border color of the @DPanelOverlay type set by @DPanelOverlay:SetColor.\n",
      "@name DPanelOverlay:GetColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/DPanelOverlay/GetColor",
      "@param {DPanelOverlay} this - no description",
      "@returns {IColor} - The set color. Uses the @IColor structure."
    ],
    "type": "class",
    "context": "DPanelOverlay",
    "extends": [
      "DPanel"
    ],
    "name": "GetColor",
    "typings": [
      "(this: DPanelOverlay): IColor"
    ]
  },
  {
    "comments": [
      "\nSets distance between list items\n",
      "@name DPanelList:SetSpacing",
      "@wiki https://wiki.garrysmod.com/page/DPanelList/SetSpacing",
      "@param {DPanelList} this - no description",
      "@param {number} Distance - Distance between panels",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanelList",
    "extends": [
      "DPanel"
    ],
    "name": "SetSpacing",
    "typings": [
      "(this: DPanelList, Distance: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the offset of the lists items from the panel borders\n",
      "@name DPanelList:SetPadding",
      "@wiki https://wiki.garrysmod.com/page/DPanelList/SetPadding",
      "@param {DPanelList} this - no description",
      "@param {number} Offset - Offset from panel borders",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanelList",
    "extends": [
      "DPanel"
    ],
    "name": "SetPadding",
    "typings": [
      "(this: DPanelList, Offset: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns distance between list items set by @DPanelList:SetSpacing\n",
      "@name DPanelList:GetSpacing",
      "@wiki https://wiki.garrysmod.com/page/DPanelList/GetSpacing",
      "@param {DPanelList} this - no description",
      "@returns {number} - Distance between panels"
    ],
    "type": "class",
    "context": "DPanelList",
    "extends": [
      "DPanel"
    ],
    "name": "GetSpacing",
    "typings": [
      "(this: DPanelList): number"
    ]
  },
  {
    "comments": [
      "@name DPanelList:InsertAtTop",
      "@wiki https://wiki.garrysmod.com/page/DPanelList/InsertAtTop",
      "@param {DPanelList} this - no description",
      "@param {Panel} insert - The panel to insert",
      "@param {string} strLineState - If set to \"ownline\", no other panels will be placed to the left or right of the panel we are inserting",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanelList",
    "extends": [
      "DPanel"
    ],
    "name": "InsertAtTop",
    "typings": [
      "(this: DPanelList, insert: Panel, strLineState: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns offset of list items from the panel borders set by @DPanelList:SetPadding\n",
      "@name DPanelList:GetPadding",
      "@wiki https://wiki.garrysmod.com/page/DPanelList/GetPadding",
      "@param {DPanelList} this - no description",
      "@returns {number} - Offset from panel borders"
    ],
    "type": "class",
    "context": "DPanelList",
    "extends": [
      "DPanel"
    ],
    "name": "GetPadding",
    "typings": [
      "(this: DPanelList): number"
    ]
  },
  {
    "comments": [
      "\nReturns all panels has added by @DPanelList:AddItem\n",
      "@name DPanelList:GetItems",
      "@wiki https://wiki.garrysmod.com/page/DPanelList/GetItems",
      "@param {DPanelList} this - no description",
      "@returns {DPanelList[]} - A table of panels used as items of @DPanelList type."
    ],
    "type": "class",
    "context": "DPanelList",
    "extends": [
      "DPanel"
    ],
    "name": "GetItems",
    "typings": [
      "(this: DPanelList): DPanelList[]"
    ]
  },
  {
    "comments": [
      "\nEnables/creates the vertical scroll bar so that the panel list can be scrolled through.\n",
      "@name DPanelList:EnableVerticalScrollbar",
      "@wiki https://wiki.garrysmod.com/page/DPanelList/EnableVerticalScrollbar",
      "@param {DPanelList} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanelList",
    "extends": [
      "DPanel"
    ],
    "name": "EnableVerticalScrollbar",
    "typings": [
      "(this: DPanelList): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all items.\n",
      "@name DPanelList:CleanList",
      "@wiki https://wiki.garrysmod.com/page/DPanelList/CleanList",
      "@param {DPanelList} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanelList",
    "extends": [
      "DPanel"
    ],
    "name": "CleanList",
    "typings": [
      "(this: DPanelList): void"
    ]
  },
  {
    "comments": [
      "\nAdds a existing panel to the end of @DPanelList type.\n",
      "@name DPanelList:AddItem",
      "@wiki https://wiki.garrysmod.com/page/DPanelList/AddItem",
      "@param {DPanelList} this - no description",
      "@param {Panel} pnl - Panel to be used as element of list",
      "@param {string} state - If set to \"ownline\", the item will take its own entire line.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanelList",
    "extends": [
      "DPanel"
    ],
    "name": "AddItem",
    "typings": [
      "(this: DPanelList, pnl: Panel, state?: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not to paint/draw the panel background.\n",
      "@name DPanel:SetPaintBackground",
      "@wiki https://wiki.garrysmod.com/page/DPanel/SetPaintBackground",
      "@param {DPanel} this - no description",
      "@param {boolean} paint - True to show the panel's background, false to hide it.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanel",
    "extends": [
      "Panel"
    ],
    "name": "SetPaintBackground",
    "typings": [
      "(this: DPanel, paint: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not to draw the panel background. Alias of @DPanel:SetPaintBackground.\n",
      "@name DPanel:SetDrawBackground",
      "@wiki https://wiki.garrysmod.com/page/DPanel/SetDrawBackground",
      "@param {DPanel} this - no description",
      "@param {boolean} draw - True to show the panel's background, false to hide it.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanel",
    "extends": [
      "Panel"
    ],
    "name": "SetDrawBackground",
    "typings": [
      "(this: DPanel, draw: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not to disable the panel.\n",
      "@name DPanel:SetDisabled",
      "@wiki https://wiki.garrysmod.com/page/DPanel/SetDisabled",
      "@param {DPanel} this - no description",
      "@param {boolean} disabled - True to disable the panel (mouse input disabled and background alpha set to 75), false to enable it (mouse input enabled and background alpha set to 255).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanel",
    "extends": [
      "Panel"
    ],
    "name": "SetDisabled",
    "typings": [
      "(this: DPanel, disabled: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the background color of the panel.\n",
      "@name DPanel:SetBackgroundColor",
      "@wiki https://wiki.garrysmod.com/page/DPanel/SetBackgroundColor",
      "@param {DPanel} this - no description",
      "@param {Color} color - The background color.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DPanel",
    "extends": [
      "Panel"
    ],
    "name": "SetBackgroundColor",
    "typings": [
      "(this: DPanel, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the panel background is being drawn.\n",
      "@name DPanel:GetPaintBackground",
      "@wiki https://wiki.garrysmod.com/page/DPanel/GetPaintBackground",
      "@param {DPanel} this - no description",
      "@returns {boolean} - True if the panel background is drawn, false otherwise."
    ],
    "type": "class",
    "context": "DPanel",
    "extends": [
      "Panel"
    ],
    "name": "GetPaintBackground",
    "typings": [
      "(this: DPanel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the panel background is being drawn. Alias of @DPanel:GetPaintBackground.\n",
      "@name DPanel:GetDrawBackground",
      "@wiki https://wiki.garrysmod.com/page/DPanel/GetDrawBackground",
      "@param {DPanel} this - no description",
      "@returns {boolean} - True if the panel background is drawn, false otherwise."
    ],
    "type": "class",
    "context": "DPanel",
    "extends": [
      "Panel"
    ],
    "name": "GetDrawBackground",
    "typings": [
      "(this: DPanel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the panel is disabled.\n",
      "@name DPanel:GetDisabled",
      "@wiki https://wiki.garrysmod.com/page/DPanel/GetDisabled",
      "@param {DPanel} this - no description",
      "@returns {boolean} - True if the panel is disabled (mouse input disabled and background alpha set to 75), false if its enabled (mouse input enabled and background alpha set to 255)."
    ],
    "type": "class",
    "context": "DPanel",
    "extends": [
      "Panel"
    ],
    "name": "GetDisabled",
    "typings": [
      "(this: DPanel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the panel's background color.\n",
      "@name DPanel:GetBackgroundColor",
      "@wiki https://wiki.garrysmod.com/page/DPanel/GetBackgroundColor",
      "@note By default this returns **nil** even though the default background color is white",
      "@param {DPanel} this - no description",
      "@returns {table} - Color of the panel's background."
    ],
    "type": "class",
    "context": "DPanel",
    "extends": [
      "Panel"
    ],
    "name": "GetBackgroundColor",
    "typings": [
      "(this: DPanel): table"
    ]
  },
  {
    "comments": [
      "\nCalled when the value has been changed. This will also be called when the user manually changes the value through the text panel.\nThis is an internal function. Override @DNumSlider:OnValueChanged instead.\n",
      "@name DNumSlider:ValueChanged",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/ValueChanged",
      "@internal",
      "@param {DNumSlider} this - no description",
      "@param {number} value - The value the slider has been changed to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "ValueChanged",
    "typings": [
      "(this: DNumSlider, value: number): void"
    ]
  },
  {
    "comments": [
      "@name DNumSlider:UpdateNotches",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/UpdateNotches",
      "@internal",
      "@param {DNumSlider} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "UpdateNotches",
    "typings": [
      "(this: DNumSlider): void"
    ]
  },
  {
    "comments": [
      "@name DNumSlider:TranslateSliderValues",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/TranslateSliderValues",
      "@internal",
      "@param {DNumSlider} this - no description",
      "@param {number} x - no description",
      "@param {number} y - no description",
      "@returns {number} - no description",
      "@returns {number} - The second passed argument.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "TranslateSliderValues",
    "typings": [
      "(this: DNumSlider, x: number, y: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nSets the value of the @DNumSlider type.\n",
      "@name DNumSlider:SetValue",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/SetValue",
      "@param {DNumSlider} this - no description",
      "@param {number} val - The value to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "SetValue",
    "typings": [
      "(this: DNumSlider, val: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum and the maximum value of the slider.\n",
      "@name DNumSlider:SetMinMax",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/SetMinMax",
      "@param {DNumSlider} this - no description",
      "@param {number} min - The minimum value of the slider.",
      "@param {number} max - The maximum value of the slider.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "SetMinMax",
    "typings": [
      "(this: DNumSlider, min: number, max: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum value for the slider\n",
      "@name DNumSlider:SetMin",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/SetMin",
      "@param {DNumSlider} this - no description",
      "@param {number} min - The value to set as minimum for the slider.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "SetMin",
    "typings": [
      "(this: DNumSlider, min: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the default value of the slider, to be used by @DNumSlider:ResetToDefaultValue or by middle mouse clicking the draggable knob of the slider.\n",
      "@name DNumSlider:SetDefaultValue",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/SetDefaultValue",
      "@param {DNumSlider} this - no description",
      "@param {number} def - The new default value of the slider to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "SetDefaultValue",
    "typings": [
      "(this: DNumSlider, def: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum value for the slider.\n",
      "@name DNumSlider:SetMax",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/SetMax",
      "@param {DNumSlider} this - no description",
      "@param {number} max - The value to set as maximum for the slider.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "SetMax",
    "typings": [
      "(this: DNumSlider, max: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the desired amount of numbers after the decimal point.\n",
      "@name DNumSlider:SetDecimals",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/SetDecimals",
      "@param {DNumSlider} this - no description",
      "@param {number} decimals - 0 for whole numbers only, 1 for one number after the decimal point, etc.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "SetDecimals",
    "typings": [
      "(this: DNumSlider, decimals: number): void"
    ]
  },
  {
    "comments": [
      "\nCalls @DLabel:SetDark on the @DLabel type part of the @DNumSlider type.\n",
      "@name DNumSlider:SetDark",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/SetDark",
      "@param {DNumSlider} this - no description",
      "@param {boolean} dark - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "SetDark",
    "typings": [
      "(this: DNumSlider, dark: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the console variable to be updated when the value of the slider is changed.\n",
      "@name DNumSlider:SetConVar",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/SetConVar",
      "@param {DNumSlider} this - no description",
      "@param {string} cvar - The name of the @ConVar type to be updated.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "SetConVar",
    "typings": [
      "(this: DNumSlider, cvar: string): void"
    ]
  },
  {
    "comments": [
      "\nResets the slider to the default value, if one was set by @DNumSlider:SetDefaultValue.\nThis function is called by the @DNumSlider type when user middle mouse clicks on the draggable knob of the slider.\n",
      "@name DNumSlider:ResetToDefaultValue",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/ResetToDefaultValue",
      "@param {DNumSlider} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "ResetToDefaultValue",
    "typings": [
      "(this: DNumSlider): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the value of the slider is changed, through code or changing the slider.\n",
      "@name DNumSlider:OnValueChanged",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/OnValueChanged",
      "@param {DNumSlider} this - no description",
      "@param {number} value - The new value of the DNumSlider",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "OnValueChanged",
    "typings": [
      "(this: DNumSlider, value: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if either the @DTextEntry type, the @DSlider type or the @DNumberScratch type are being edited.\n",
      "@name DNumSlider:IsEditing",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/IsEditing",
      "@param {DNumSlider} this - no description",
      "@returns {boolean} - Whether or not the @DNumSlider type is being edited by the player."
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "IsEditing",
    "typings": [
      "(this: DNumSlider): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the value of the @DNumSlider type\n",
      "@name DNumSlider:GetValue",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/GetValue",
      "@param {DNumSlider} this - no description",
      "@returns {number} - The value of the slider."
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "GetValue",
    "typings": [
      "(this: DNumSlider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the @DTextEntry type component of the slider.\n",
      "@name DNumSlider:GetTextArea",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/GetTextArea",
      "@param {DNumSlider} this - no description",
      "@returns {DTextEntry} - The @DTextEntry type."
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "GetTextArea",
    "typings": [
      "(this: DNumSlider): DTextEntry"
    ]
  },
  {
    "comments": [
      "\nReturns the range of the slider, basically maximum value - minimum value.\n",
      "@name DNumSlider:GetRange",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/GetRange",
      "@param {DNumSlider} this - no description",
      "@returns {number} - The range of the slider"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "GetRange",
    "typings": [
      "(this: DNumSlider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the minimum value of the slider\n",
      "@name DNumSlider:GetMin",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/GetMin",
      "@param {DNumSlider} this - no description",
      "@returns {number} - The minimum value of the slider"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "GetMin",
    "typings": [
      "(this: DNumSlider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum value of the slider\n",
      "@name DNumSlider:GetMax",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/GetMax",
      "@param {DNumSlider} this - no description",
      "@returns {number} - The maximum value of the slider"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "GetMax",
    "typings": [
      "(this: DNumSlider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the default value of the slider, if one was set by @DNumSlider:SetDefaultValue\n",
      "@name DNumSlider:GetDefaultValue",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/GetDefaultValue",
      "@param {DNumSlider} this - no description",
      "@returns {number} - The default value of the slider"
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "GetDefaultValue",
    "typings": [
      "(this: DNumSlider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of numbers after the decimal point.\n",
      "@name DNumSlider:GetDecimals",
      "@wiki https://wiki.garrysmod.com/page/DNumSlider/GetDecimals",
      "@param {DNumSlider} this - no description",
      "@returns {number} - 0 for whole numbers only, 1 for one number after the decimal point, etc."
    ],
    "type": "class",
    "context": "DNumSlider",
    "extends": [
      "Panel"
    ],
    "name": "GetDecimals",
    "typings": [
      "(this: DNumSlider): number"
    ]
  },
  {
    "comments": [
      "\nSets the value of the @DNumberWang type and triggers @DNumberWang:OnValueChanged\n",
      "@name DNumberWang:SetValue",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/SetValue",
      "@param {DNumberWang} this - no description",
      "@param {number} val - The value to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "SetValue",
    "typings": [
      "(this: DNumberWang, val: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum numeric value allowed by the number selector.\n",
      "@name DNumberWang:SetMin",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/SetMin",
      "@param {DNumberWang} this - no description",
      "@param {number} min - The minimum value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "SetMin",
    "typings": [
      "(this: DNumberWang, min: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum and maximum value allowed by the number selector.\n",
      "@name DNumberWang:SetMinMax",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/SetMinMax",
      "@param {DNumberWang} this - no description",
      "@param {number} min - The minimum value.",
      "@param {number} max - The maximum value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "SetMinMax",
    "typings": [
      "(this: DNumberWang, min: number, max: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum numeric value allowed by the number selector.\n",
      "@name DNumberWang:SetMax",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/SetMax",
      "@param {DNumberWang} this - no description",
      "@param {number} max - The maximum value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "SetMax",
    "typings": [
      "(this: DNumberWang, max: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the value of the number selector based on the given fraction number.\n",
      "@name DNumberWang:SetFraction",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/SetFraction",
      "@param {DNumberWang} this - no description",
      "@param {number} val - The fraction of the number selector's range.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "SetFraction",
    "typings": [
      "(this: DNumberWang, val: number): void"
    ]
  },
  {
    "comments": [
      "\nAppears to do nothing.\n",
      "@name DNumberWang:SetFloatValue",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/SetFloatValue",
      "@param {DNumberWang} this - no description",
      "@param {number} val - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "SetFloatValue",
    "typings": [
      "(this: DNumberWang, val: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the amount of decimal places allowed in the number selector.\n",
      "@name DNumberWang:SetDecimals",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/SetDecimals",
      "@param {DNumberWang} this - no description",
      "@param {number} num - The amount of decimal places.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "SetDecimals",
    "typings": [
      "(this: DNumberWang, num: number): void"
    ]
  },
  {
    "comments": [
      "\nInternal function which is called when the number selector value is changed. This function is empty by default so it needs to be overridden in order to provide functionality.\n",
      "@name DNumberWang:OnValueChanged",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/OnValueChanged",
      "@param {DNumberWang} this - no description",
      "@param {number} val - The new value of the number selector.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "OnValueChanged",
    "typings": [
      "(this: DNumberWang, val: number): void"
    ]
  },
  {
    "comments": [
      "\nHides the number selector arrows.\n",
      "@name DNumberWang:HideWang",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/HideWang",
      "@param {DNumberWang} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "HideWang",
    "typings": [
      "(this: DNumberWang): void"
    ]
  },
  {
    "comments": [
      "\nReturns the numeric value inside the number selector.\n",
      "@name DNumberWang:GetValue",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/GetValue",
      "@param {DNumberWang} this - no description",
      "@returns {number} - The numeric value."
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "GetValue",
    "typings": [
      "(this: DNumberWang): number"
    ]
  },
  {
    "comments": [
      "\nThis function returns the panel it is used on.\n",
      "@name DNumberWang:GetTextArea",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/GetTextArea",
      "@param {DNumberWang} this - no description",
      "@returns {Panel} - self"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "GetTextArea",
    "typings": [
      "(this: DNumberWang): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the minimum numeric value allowed by the number selector.\n",
      "@name DNumberWang:GetMin",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/GetMin",
      "@param {DNumberWang} this - no description",
      "@returns {number} - The minimum number."
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "GetMin",
    "typings": [
      "(this: DNumberWang): number"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum numeric value allowed by the number selector.\n",
      "@name DNumberWang:GetMax",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/GetMax",
      "@param {DNumberWang} this - no description",
      "@returns {number} - The maximum value."
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "GetMax",
    "typings": [
      "(this: DNumberWang): number"
    ]
  },
  {
    "comments": [
      "\nReturns a fraction representing the current number selector value to number selector min/max range ratio. If argument *val* is supplied, that number will be computed instead.\n",
      "@name DNumberWang:GetFraction",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/GetFraction",
      "@param {DNumberWang} this - no description",
      "@param {number} val - The fraction numerator.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "GetFraction",
    "typings": [
      "(this: DNumberWang, val: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns whatever is set by @DNumberWang:SetFloatValue or 0.\n",
      "@name DNumberWang:GetFloatValue",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/GetFloatValue",
      "@param {DNumberWang} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "GetFloatValue",
    "typings": [
      "(this: DNumberWang): number"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of decimal places allowed in the number selector, set by @DNumberWang:SetDecimals\n",
      "@name DNumberWang:GetDecimals",
      "@wiki https://wiki.garrysmod.com/page/DNumberWang/GetDecimals",
      "@param {DNumberWang} this - no description",
      "@returns {number} - The amount of decimal places allowed in the number selector."
    ],
    "type": "class",
    "context": "DNumberWang",
    "extends": [
      "DTextEntry"
    ],
    "name": "GetDecimals",
    "typings": [
      "(this: DNumberWang): number"
    ]
  },
  {
    "comments": [
      "\nForces the assigned ConVar to be updated to the value of this @DNumberScratch type\n",
      "@name DNumberScratch:UpdateConVar",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/UpdateConVar",
      "@internal",
      "@param {DNumberScratch} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "UpdateConVar",
    "typings": [
      "(this: DNumberScratch): void"
    ]
  },
  {
    "comments": [
      "\nSets the zoom level of the scratch panel.\n",
      "@name DNumberScratch:SetZoom",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/SetZoom",
      "@param {DNumberScratch} this - no description",
      "@param {number} zoom - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "SetZoom",
    "typings": [
      "(this: DNumberScratch, zoom: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the value of the @DNumberScratch type and triggers @DNumberScratch:OnValueChanged\n",
      "@name DNumberScratch:SetValue",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/SetValue",
      "@param {DNumberScratch} this - no description",
      "@param {number} val - The value to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "SetValue",
    "typings": [
      "(this: DNumberScratch, val: number): void"
    ]
  },
  {
    "comments": [
      "\nSets if the scratch window should be drawn or not. Cannot be used to force it to draw, only to hide it, which will not stop the panel from working with invisible window.\n",
      "@name DNumberScratch:SetShouldDrawScreen",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/SetShouldDrawScreen",
      "@internal",
      "@param {DNumberScratch} this - no description",
      "@param {boolean} shouldDraw - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "SetShouldDrawScreen",
    "typings": [
      "(this: DNumberScratch, shouldDraw: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the max value that can be selected on the number scratch\n",
      "@name DNumberScratch:SetMax",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/SetMax",
      "@param {DNumberScratch} this - no description",
      "@param {number} max - The maximum number",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "SetMax",
    "typings": [
      "(this: DNumberScratch, max: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum value that can be selected on the number scratch.\n",
      "@name DNumberScratch:SetMin",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/SetMin",
      "@param {DNumberScratch} this - no description",
      "@param {number} min - The minimum number",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "SetMin",
    "typings": [
      "(this: DNumberScratch, min: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the value of the @DNumberScratch type as a fraction, a value between 0 and 1 where 0 is the minimum and 1 is the maximum value of the @DNumberScratch type\n",
      "@name DNumberScratch:SetFraction",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/SetFraction",
      "@param {DNumberScratch} this - no description",
      "@param {number} frac - A value between 0 and 1",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "SetFraction",
    "typings": [
      "(this: DNumberScratch, frac: number): void"
    ]
  },
  {
    "comments": [
      "\nDoes not trigger @DNumberScratch:OnValueChanged\nUse @DNumberScratch:SetValue instead.\n",
      "@name DNumberScratch:SetFloatValue",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/SetFloatValue",
      "@internal",
      "@param {DNumberScratch} this - no description",
      "@param {number} val - The value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "SetFloatValue",
    "typings": [
      "(this: DNumberScratch, val: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the desired amount of numbers after the decimal point.\n",
      "@name DNumberScratch:SetDecimals",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/SetDecimals",
      "@param {DNumberScratch} this - no description",
      "@param {number} decimals - 0 for whole numbers only, 1 for one number after the decimal point, etc.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "SetDecimals",
    "typings": [
      "(this: DNumberScratch, decimals: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the panel is 'active'.\nForcing this panel to be active may not work.\n",
      "@name DNumberScratch:SetActive",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/SetActive",
      "@internal",
      "@param {DNumberScratch} this - no description",
      "@param {boolean} active - true to activate, false to deactivate.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "SetActive",
    "typings": [
      "(this: DNumberScratch, active: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUsed to paint the 'scratch' window.\n",
      "@name DNumberScratch:PaintScratchWindow",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/PaintScratchWindow",
      "@internal",
      "@param {DNumberScratch} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "PaintScratchWindow",
    "typings": [
      "(this: DNumberScratch): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the value of the @DNumberScratch type is changed.\n",
      "@name DNumberScratch:OnValueChanged",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/OnValueChanged",
      "@param {DNumberScratch} this - no description",
      "@param {number} newValue - The new value",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "OnValueChanged",
    "typings": [
      "(this: DNumberScratch, newValue: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed to lock the cursor in place.\n",
      "@name DNumberScratch:LockCursor",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/LockCursor",
      "@internal",
      "@param {DNumberScratch} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "LockCursor",
    "typings": [
      "(this: DNumberScratch): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the player is currently editing the value of the @DNumberScratch type.\n",
      "@name DNumberScratch:IsEditing",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/IsEditing",
      "@param {DNumberScratch} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "IsEditing",
    "typings": [
      "(this: DNumberScratch): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the ideal zoom level for the panel based on the @DNumberScratch:GetRange.\n",
      "@name DNumberScratch:IdealZoom",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/IdealZoom",
      "@param {DNumberScratch} this - no description",
      "@returns {number} - The ideal zoom level for the panel based on the panels range."
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "IdealZoom",
    "typings": [
      "(this: DNumberScratch): number"
    ]
  },
  {
    "comments": [
      "\nReturns the zoom level of the scratch window\n",
      "@name DNumberScratch:GetZoom",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/GetZoom",
      "@param {DNumberScratch} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "GetZoom",
    "typings": [
      "(this: DNumberScratch): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether the scratch window should be visible or not.\n",
      "@name DNumberScratch:GetShouldDrawScreen",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/GetShouldDrawScreen",
      "@param {DNumberScratch} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "GetShouldDrawScreen",
    "typings": [
      "(this: DNumberScratch): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the real value of the @DNumberScratch type as a string.\nSee also @DNumberScratch:GetFloatValue and @DNumberScratch:GetFraction.\n",
      "@name DNumberScratch:GetTextValue",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/GetTextValue",
      "@param {DNumberScratch} this - no description",
      "@returns {string} - The real value of the @DNumberScratch type"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "GetTextValue",
    "typings": [
      "(this: DNumberScratch): string"
    ]
  },
  {
    "comments": [
      "\nReturns the range of the @DNumberScratch type. Basically max value - min value.\n",
      "@name DNumberScratch:GetRange",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/GetRange",
      "@param {DNumberScratch} this - no description",
      "@returns {number} - The range of the @DNumberScratch type"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "GetRange",
    "typings": [
      "(this: DNumberScratch): number"
    ]
  },
  {
    "comments": [
      "\nReturns the minimum value that can be selected on the number scratch\n",
      "@name DNumberScratch:GetMin",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/GetMin",
      "@param {DNumberScratch} this - no description",
      "@returns {number} - The minimum value that can be selected on the number scratch"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "GetMin",
    "typings": [
      "(this: DNumberScratch): number"
    ]
  },
  {
    "comments": [
      "\nReturns the value of the @DNumberScratch type as a fraction, a value between 0 and 1 where 0 is the minimum and 1 is the maximum value of the @DNumberScratch type.\nSee also:\n* @DNumberScratch:GetTextValue\n* @DNumberScratch:GetFloatValue\n* @DNumberScratch:SetFraction\n",
      "@name DNumberScratch:GetFraction",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/GetFraction",
      "@param {DNumberScratch} this - no description",
      "@returns {number} - A value between 0 and 1"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "GetFraction",
    "typings": [
      "(this: DNumberScratch): number"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum value that can be selected on the number scratch\n",
      "@name DNumberScratch:GetMax",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/GetMax",
      "@param {DNumberScratch} this - no description",
      "@returns {number} - The maximum value that can be selected on the number scratch"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "GetMax",
    "typings": [
      "(this: DNumberScratch): number"
    ]
  },
  {
    "comments": [
      "\nReturns the desired amount of numbers after the decimal point.\n",
      "@name DNumberScratch:GetDecimals",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/GetDecimals",
      "@param {DNumberScratch} this - no description",
      "@returns {number} - 0 for whole numbers only, 1 for one number after the decimal point, etc."
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "GetDecimals",
    "typings": [
      "(this: DNumberScratch): number"
    ]
  },
  {
    "comments": [
      "\nReturns the real value of the @DNumberScratch type as a number.\nSee also @DNumberScratch:GetTextValue and @DNumberScratch:GetFraction.\n",
      "@name DNumberScratch:GetFloatValue",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/GetFloatValue",
      "@param {DNumberScratch} this - no description",
      "@returns {number} - The real value of the @DNumberScratch type"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "GetFloatValue",
    "typings": [
      "(this: DNumberScratch): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether this panel is active or not, i.e. if the player is currently changing its value.\n",
      "@name DNumberScratch:GetActive",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/GetActive",
      "@param {DNumberScratch} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "GetActive",
    "typings": [
      "(this: DNumberScratch): boolean"
    ]
  },
  {
    "comments": [
      "\nUsed by @DNumberScratch:PaintScratchWindow.\n",
      "@name DNumberScratch:DrawScreen",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/DrawScreen",
      "@internal",
      "@param {DNumberScratch} this - no description",
      "@param {number} x - no description",
      "@param {number} y - no description",
      "@param {number} w - no description",
      "@param {number} h - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "DrawScreen",
    "typings": [
      "(this: DNumberScratch, x: number, y: number, w: number, h: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @DNumberScratch:DrawScreen.\n",
      "@name DNumberScratch:DrawNotches",
      "@wiki https://wiki.garrysmod.com/page/DNumberScratch/DrawNotches",
      "@internal",
      "@param {DNumberScratch} this - no description",
      "@param {number} level - no description",
      "@param {number} x - no description",
      "@param {number} y - no description",
      "@param {number} w - no description",
      "@param {number} h - no description",
      "@param {number} range - no description",
      "@param {number} value - no description",
      "@param {number} min - no description",
      "@param {number} max - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNumberScratch",
    "extends": [
      "DImageButton"
    ],
    "name": "DrawNotches",
    "typings": [
      "(this: DNumberScratch, level: number, x: number, y: number, w: number, h: number, range: number, value: number, min: number, max: number): void"
    ]
  },
  {
    "comments": [
      "@name DNotify:Shuffle",
      "@wiki https://wiki.garrysmod.com/page/DNotify/Shuffle",
      "@internal",
      "@param {DNotify} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNotify",
    "extends": [
      "Panel"
    ],
    "name": "Shuffle",
    "typings": [
      "(this: DNotify): void"
    ]
  },
  {
    "comments": [
      "\nSets the spacing between child elements of the notification panel.\n",
      "@name DNotify:SetSpacing",
      "@wiki https://wiki.garrysmod.com/page/DNotify/SetSpacing",
      "@param {DNotify} this - no description",
      "@param {number} spacing - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNotify",
    "extends": [
      "Panel"
    ],
    "name": "SetSpacing",
    "typings": [
      "(this: DNotify, spacing: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the display time in seconds for the DNotify.\n",
      "@name DNotify:SetLife",
      "@wiki https://wiki.garrysmod.com/page/DNotify/SetLife",
      "@param {DNotify} this - no description",
      "@param {number} time - The time in seconds.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNotify",
    "extends": [
      "Panel"
    ],
    "name": "SetLife",
    "typings": [
      "(this: DNotify, time: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the alignment of the child panels in the notification\n",
      "@name DNotify:SetAlignment",
      "@wiki https://wiki.garrysmod.com/page/DNotify/SetAlignment",
      "@param {DNotify} this - no description",
      "@param {number} alignment - It's the Numpad alignment, 6 is right, 9 is top left, etc.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNotify",
    "extends": [
      "Panel"
    ],
    "name": "SetAlignment",
    "typings": [
      "(this: DNotify, alignment: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the spacing between items set by @DNotify:SetSpacing.\n",
      "@name DNotify:GetSpacing",
      "@wiki https://wiki.garrysmod.com/page/DNotify/GetSpacing",
      "@param {DNotify} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DNotify",
    "extends": [
      "Panel"
    ],
    "name": "GetSpacing",
    "typings": [
      "(this: DNotify): number"
    ]
  },
  {
    "comments": [
      "\nReturns the display time in seconds of the DNotify. This is set with\n@DNotify:SetLife.\n",
      "@name DNotify:GetLife",
      "@wiki https://wiki.garrysmod.com/page/DNotify/GetLife",
      "@param {DNotify} this - no description",
      "@returns {number} - The display time in seconds."
    ],
    "type": "class",
    "context": "DNotify",
    "extends": [
      "Panel"
    ],
    "name": "GetLife",
    "typings": [
      "(this: DNotify): number"
    ]
  },
  {
    "comments": [
      "\nReturns all the items added with @DNotify:AddItem.\n",
      "@name DNotify:GetItems",
      "@wiki https://wiki.garrysmod.com/page/DNotify/GetItems",
      "@param {DNotify} this - no description",
      "@returns {Panel[]} - A table of @Panel types."
    ],
    "type": "class",
    "context": "DNotify",
    "extends": [
      "Panel"
    ],
    "name": "GetItems",
    "typings": [
      "(this: DNotify): Panel[]"
    ]
  },
  {
    "comments": [
      "\nReturns the current alignment of this notification panel. Set by @DNotify:SetAlignment.\n",
      "@name DNotify:GetAlignment",
      "@wiki https://wiki.garrysmod.com/page/DNotify/GetAlignment",
      "@param {DNotify} this - no description",
      "@returns {number} - The numpad alignment"
    ],
    "type": "class",
    "context": "DNotify",
    "extends": [
      "Panel"
    ],
    "name": "GetAlignment",
    "typings": [
      "(this: DNotify): number"
    ]
  },
  {
    "comments": [
      "\nAdds a panel to the notification\n",
      "@name DNotify:AddItem",
      "@wiki https://wiki.garrysmod.com/page/DNotify/AddItem",
      "@param {DNotify} this - no description",
      "@param {Panel} pnl - The panel to add",
      "@param {number} lifeLength - If set, overrides @DNotify:SetLife.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DNotify",
    "extends": [
      "Panel"
    ],
    "name": "AddItem",
    "typings": [
      "(this: DNotify, pnl: Panel, lifeLength?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the height of the panel **in the amount of 64px spawnicons**.\nOverrides @Panel:SetHeight.\n",
      "@name DModelSelect:SetHeight",
      "@wiki https://wiki.garrysmod.com/page/DModelSelect/SetHeight",
      "@param {DModelSelect} this - no description",
      "@param {number} num - Basically how many rows of 64x64 px spawnicons should fit in this DModelSelect",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelSelect",
    "extends": [
      "DPanelSelect"
    ],
    "name": "SetHeight",
    "typings": [
      "(this: DModelSelect, num?: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled to set the list of models within the panel element.\n",
      "@name DModelSelect:SetModelList",
      "@wiki https://wiki.garrysmod.com/page/DModelSelect/SetModelList",
      "@param {DModelSelect} this - no description",
      "@param {table} models - Each key is a model path, the value is a kay-value table where they key is a convar name and value is the value to set to that convar.",
      "@param {string} convar - no description",
      "@param {boolean} dontSort - no description",
      "@param {boolean} DontCallListConVars - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelSelect",
    "extends": [
      "DPanelSelect"
    ],
    "name": "SetModelList",
    "typings": [
      "(this: DModelSelect, models: table, convar: string, dontSort: boolean, DontCallListConVars: boolean): void"
    ]
  },
  {
    "comments": [
      "@name DModelPanel:StartScene",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/StartScene",
      "@param {DModelPanel} this - no description",
      "@param {string} path - The path to the scene file. (.vcd)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "StartScene",
    "typings": [
      "(this: DModelPanel, path: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the model of the rendered entity.\n",
      "@name DModelPanel:SetModel",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetModel",
      "@param {DModelPanel} this - no description",
      "@param {string} model - The model to apply to the entity",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetModel",
    "typings": [
      "(this: DModelPanel, model: string): void"
    ]
  },
  {
    "comments": [
      "\nMakes the panel's camera face the given position.\n",
      "@name DModelPanel:SetLookAt",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetLookAt",
      "@param {DModelPanel} this - no description",
      "@param {Vector} pos - The position to orient the camera toward.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetLookAt",
    "typings": [
      "(this: DModelPanel, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the angles of the camera.\n",
      "@name DModelPanel:SetLookAng",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetLookAng",
      "@param {DModelPanel} this - no description",
      "@param {Angle} ang - The angles to set the camera to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetLookAng",
    "typings": [
      "(this: DModelPanel, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the panel camera's FOV (field of view).\n",
      "@name DModelPanel:SetFOV",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetFOV",
      "@param {DModelPanel} this - no description",
      "@param {number} fov - The field of view value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetFOV",
    "typings": [
      "(this: DModelPanel, fov: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the entity to be rendered by the model panel.\n",
      "@name DModelPanel:SetEntity",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetEntity",
      "@note If you set *ent* to a shared entity you must set *ent* to nil before removing this panel or else a \"Trying to remove server entity on client!\" error is thrown",
      "@param {DModelPanel} this - no description",
      "@param {Entity} ent - The new panel entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetEntity",
    "typings": [
      "(this: DModelPanel, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the directional lighting used on the rendered entity.\n",
      "@name DModelPanel:SetDirectionalLight",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetDirectionalLight",
      "@param {DModelPanel} this - no description",
      "@param {BOX} direction - The light direction, see @BOX enum.",
      "@param {Color} color - The color of the directional lighting.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetDirectionalLight",
    "typings": [
      "(this: DModelPanel, direction: BOX, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the rendered entity.\n",
      "@name DModelPanel:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetColor",
      "@note This does not work on Garry's Mod player models since they use a different color system. To modify a player model color, see Example 2 on the @DModelPanel type page",
      "@param {DModelPanel} this - no description",
      "@param {Color} color - The render color of the entity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DModelPanel, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the position of the camera.\n",
      "@name DModelPanel:SetCamPos",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetCamPos",
      "@param {DModelPanel} this - no description",
      "@param {Vector} pos - The position to set the camera at.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetCamPos",
    "typings": [
      "(this: DModelPanel, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the speed used by @DModelPanel:RunAnimation to advance frame on an entity sequence.\n",
      "@name DModelPanel:SetAnimSpeed",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetAnimSpeed",
      "@note @EntityFuncs:FrameAdvance doesn't seem to have any functioning arguments and therefore changing this will not have any affect on the panel entity's sequence speed without reimplementation. It only affects the value returned by @DModelPanel:GetAnimSpeed",
      "@param {DModelPanel} this - no description",
      "@param {number} animSpeed - The animation speed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetAnimSpeed",
    "typings": [
      "(this: DModelPanel, animSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not to animate the entity when the default @DModelPanel:LayoutEntity is called.\n",
      "@name DModelPanel:SetAnimated",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetAnimated",
      "@param {DModelPanel} this - no description",
      "@param {boolean} animated - True to animate, false otherwise.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetAnimated",
    "typings": [
      "(this: DModelPanel, animated: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the ambient lighting used on the rendered entity.\n",
      "@name DModelPanel:SetAmbientLight",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/SetAmbientLight",
      "@param {DModelPanel} this - no description",
      "@param {Color} color - The color of the ambient lighting.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "SetAmbientLight",
    "typings": [
      "(this: DModelPanel, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nThis function is used in the **DModelPanel:LayoutEntity**. It will set the active model to the last set animation using @EntityFuncs:SetSequence. By default, it is the walking animation.\n",
      "@name DModelPanel:RunAnimation",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/RunAnimation",
      "@param {DModelPanel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "RunAnimation",
    "typings": [
      "(this: DModelPanel): void"
    ]
  },
  {
    "comments": [
      "\nCalled **before** the entity of the @DModelPanel type is drawn.\n",
      "@name DModelPanel:PreDrawModel",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/PreDrawModel",
      "@param {DModelPanel} this - no description",
      "@param {DModelPanel} ent - The clientside entity of the @DModelPanel type that has been drawn.",
      "@returns {boolean} - Return false to stop the entity from being drawn. This will also cause @DModelPanel:PostDrawModel to stop being called."
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "PreDrawModel",
    "typings": [
      "(this: DModelPanel, ent: DModelPanel): boolean"
    ]
  },
  {
    "comments": [
      "\nBy default, this function slowly rotates and animates the entity being rendered.\nIf you want to change this behavior, you should override it.\n",
      "@name DModelPanel:LayoutEntity",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/LayoutEntity",
      "@internal",
      "@param {DModelPanel} this - no description",
      "@param {Entity} entity - The entity that is being rendered.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "LayoutEntity",
    "typings": [
      "(this: DModelPanel, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the entity of the @DModelPanel type was drawn.\nThis is a rendering hook with 3d drawing context.\n",
      "@name DModelPanel:PostDrawModel",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/PostDrawModel",
      "@param {DModelPanel} this - no description",
      "@param {DModelPanel} ent - The clientside entity of the @DModelPanel type that has been drawn.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "PostDrawModel",
    "typings": [
      "(this: DModelPanel, ent: DModelPanel): void"
    ]
  },
  {
    "comments": [
      "\nGets the model of the rendered entity.\n",
      "@name DModelPanel:GetModel",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/GetModel",
      "@param {DModelPanel} this - no description",
      "@returns {string} - The model of the rendered entity."
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "GetModel",
    "typings": [
      "(this: DModelPanel): string"
    ]
  },
  {
    "comments": [
      "\nReturns the position the viewing camera is pointing toward.\n",
      "@name DModelPanel:GetLookAt",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/GetLookAt",
      "@param {DModelPanel} this - no description",
      "@returns {Vector} - The position the camera is pointing toward."
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "GetLookAt",
    "typings": [
      "(this: DModelPanel): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the angles of the model viewing camera. Is **nil** until changed with @DModelPanel:SetLookAng.\n",
      "@name DModelPanel:GetLookAng",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/GetLookAng",
      "@param {DModelPanel} this - no description",
      "@returns {Angle} - The angles of the camera."
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "GetLookAng",
    "typings": [
      "(this: DModelPanel): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the FOV (field of view) the camera is using.\n",
      "@name DModelPanel:GetFOV",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/GetFOV",
      "@param {DModelPanel} this - no description",
      "@returns {number} - The FOV of the camera."
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "GetFOV",
    "typings": [
      "(this: DModelPanel): number"
    ]
  },
  {
    "comments": [
      "\nReturns the entity being rendered by the model panel.\n",
      "@name DModelPanel:GetEntity",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/GetEntity",
      "@param {DModelPanel} this - no description",
      "@returns {CSEnt} - The rendered entity (client-side)"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "GetEntity",
    "typings": [
      "(this: DModelPanel): CSEnt"
    ]
  },
  {
    "comments": [
      "\nReturns the color of the rendered entity.\n",
      "@name DModelPanel:GetColor",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/GetColor",
      "@param {DModelPanel} this - no description",
      "@returns {IColor} - The color of the entity, see @IColor structure."
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "GetColor",
    "typings": [
      "(this: DModelPanel): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns the position of the model viewing camera.\n",
      "@name DModelPanel:GetCamPos",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/GetCamPos",
      "@param {DModelPanel} this - no description",
      "@returns {Vector} - The position of the camera."
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "GetCamPos",
    "typings": [
      "(this: DModelPanel): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the animation speed of the panel entity, see @DModelPanel:SetAnimSpeed.\n",
      "@name DModelPanel:GetAnimSpeed",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/GetAnimSpeed",
      "@param {DModelPanel} this - no description",
      "@returns {number} - The animation speed."
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "GetAnimSpeed",
    "typings": [
      "(this: DModelPanel): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the panel entity should be animated when the default @DModelPanel:LayoutEntity function is called.\n",
      "@name DModelPanel:GetAnimated",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/GetAnimated",
      "@param {DModelPanel} this - no description",
      "@returns {boolean} - True if the panel entity can be animated with @EntityFuncs:SetSequence directly, false otherwise."
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "GetAnimated",
    "typings": [
      "(this: DModelPanel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the ambient lighting used on the rendered entity.\n",
      "@name DModelPanel:GetAmbientLight",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/GetAmbientLight",
      "@param {DModelPanel} this - no description",
      "@returns {table} - The color of the ambient lighting."
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "GetAmbientLight",
    "typings": [
      "(this: DModelPanel): table"
    ]
  },
  {
    "comments": [
      "\nUsed by the DModelPanel's paint hook to draw the model and background.\n",
      "@name DModelPanel:DrawModel",
      "@wiki https://wiki.garrysmod.com/page/DModelPanel/DrawModel",
      "@internal",
      "@param {DModelPanel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DModelPanel",
    "extends": [
      "DButton"
    ],
    "name": "DrawModel",
    "typings": [
      "(this: DModelPanel): void"
    ]
  },
  {
    "comments": [
      "\nSets the value of the [console variable](https://wiki.garrysmod.com/page/ConVars) when the @DMenuOptionCVar type is checked.\n",
      "@name DMenuOptionCVar:SetValueOn",
      "@wiki https://wiki.garrysmod.com/page/DMenuOptionCVar/SetValueOn",
      "@param {DMenuOptionCVar} this - no description",
      "@param {string} value - The value",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuOptionCVar",
    "extends": [
      "DMenuOption"
    ],
    "name": "SetValueOn",
    "typings": [
      "(this: DMenuOptionCVar, value: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the value of the [console variable](https://wiki.garrysmod.com/page/ConVars) when the @DMenuOptionCVar type is not checked.\n",
      "@name DMenuOptionCVar:SetValueOff",
      "@wiki https://wiki.garrysmod.com/page/DMenuOptionCVar/SetValueOff",
      "@param {DMenuOptionCVar} this - no description",
      "@param {string} value - The value",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuOptionCVar",
    "extends": [
      "DMenuOption"
    ],
    "name": "SetValueOff",
    "typings": [
      "(this: DMenuOptionCVar, value: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the [console variable](https://wiki.garrysmod.com/page/ConVars) to be used by @DMenuOptionCVar type.\n",
      "@name DMenuOptionCVar:SetConVar",
      "@wiki https://wiki.garrysmod.com/page/DMenuOptionCVar/SetConVar",
      "@param {DMenuOptionCVar} this - no description",
      "@param {string} cvar - The [console variable](https://wiki.garrysmod.com/page/ConVars) name to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuOptionCVar",
    "extends": [
      "DMenuOption"
    ],
    "name": "SetConVar",
    "typings": [
      "(this: DMenuOptionCVar, cvar: string): void"
    ]
  },
  {
    "comments": [
      "\nReturn the value of the [console variable](https://wiki.garrysmod.com/page/ConVars) when the @DMenuOptionCVar type is checked.\n",
      "@name DMenuOptionCVar:GetValueOn",
      "@wiki https://wiki.garrysmod.com/page/DMenuOptionCVar/GetValueOn",
      "@param {DMenuOptionCVar} this - no description",
      "@returns {string} - The value"
    ],
    "type": "class",
    "context": "DMenuOptionCVar",
    "extends": [
      "DMenuOption"
    ],
    "name": "GetValueOn",
    "typings": [
      "(this: DMenuOptionCVar): string"
    ]
  },
  {
    "comments": [
      "\nReturns the value of the [console variable](https://wiki.garrysmod.com/page/ConVars) when the @DMenuOptionCVar type is not checked.\n",
      "@name DMenuOptionCVar:GetValueOff",
      "@wiki https://wiki.garrysmod.com/page/DMenuOptionCVar/GetValueOff",
      "@param {DMenuOptionCVar} this - no description",
      "@returns {string} - The value"
    ],
    "type": "class",
    "context": "DMenuOptionCVar",
    "extends": [
      "DMenuOption"
    ],
    "name": "GetValueOff",
    "typings": [
      "(this: DMenuOptionCVar): string"
    ]
  },
  {
    "comments": [
      "\nReturns the [console variable](https://wiki.garrysmod.com/page/ConVars) used by the @DMenuOptionCVar type.\n",
      "@name DMenuOptionCVar:GetConVar",
      "@wiki https://wiki.garrysmod.com/page/DMenuOptionCVar/GetConVar",
      "@param {DMenuOptionCVar} this - no description",
      "@returns {string} - The [console variable](https://wiki.garrysmod.com/page/ConVars) used"
    ],
    "type": "class",
    "context": "DMenuOptionCVar",
    "extends": [
      "DMenuOption"
    ],
    "name": "GetConVar",
    "typings": [
      "(this: DMenuOptionCVar): string"
    ]
  },
  {
    "comments": [
      "\nToggles the checked state of @DMenuOption type. Does not respect @DMenuOption:GetIsCheckable.\n",
      "@name DMenuOption:ToggleCheck",
      "@wiki https://wiki.garrysmod.com/page/DMenuOption/ToggleCheck",
      "@param {DMenuOption} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuOption",
    "extends": [
      "DButton"
    ],
    "name": "ToggleCheck",
    "typings": [
      "(this: DMenuOption): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally by @DMenuOption:AddSubMenu to create the submenu arrow and assign the created submenu to be opened this this option is hovered.\n",
      "@name DMenuOption:SetSubMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenuOption/SetSubMenu",
      "@internal",
      "@param {DMenuOption} this - no description",
      "@param {Panel} menu - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuOption",
    "extends": [
      "DButton"
    ],
    "name": "SetSubMenu",
    "typings": [
      "(this: DMenuOption, menu: Panel): void"
    ]
  },
  {
    "comments": [
      "@name DMenuOption:SetMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenuOption/SetMenu",
      "@param {DMenuOption} this - no description",
      "@param {Panel} pnl - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuOption",
    "extends": [
      "DButton"
    ],
    "name": "SetMenu",
    "typings": [
      "(this: DMenuOption, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the @DMenuOption type is a checkbox option or a normal button option.\n",
      "@name DMenuOption:SetIsCheckable",
      "@wiki https://wiki.garrysmod.com/page/DMenuOption/SetIsCheckable",
      "@param {DMenuOption} this - no description",
      "@param {boolean} checkable - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuOption",
    "extends": [
      "DButton"
    ],
    "name": "SetIsCheckable",
    "typings": [
      "(this: DMenuOption, checkable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the checked state of the @DMenuOption type. Does not invoke @DMenuOption:OnChecked.\n",
      "@name DMenuOption:SetChecked",
      "@wiki https://wiki.garrysmod.com/page/DMenuOption/SetChecked",
      "@param {DMenuOption} this - no description",
      "@param {boolean} checked - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuOption",
    "extends": [
      "DButton"
    ],
    "name": "SetChecked",
    "typings": [
      "(this: DMenuOption, checked: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever the @DMenuOption type's checked state changes.\n",
      "@name DMenuOption:OnChecked",
      "@wiki https://wiki.garrysmod.com/page/DMenuOption/OnChecked",
      "@param {DMenuOption} this - no description",
      "@param {boolean} checked - The new checked state",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuOption",
    "extends": [
      "DButton"
    ],
    "name": "OnChecked",
    "typings": [
      "(this: DMenuOption, checked: boolean): void"
    ]
  },
  {
    "comments": [
      "@name DMenuOption:GetMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenuOption/GetMenu",
      "@param {DMenuOption} this - no description",
      "@returns {DMenu} - A @DMenu type"
    ],
    "type": "class",
    "context": "DMenuOption",
    "extends": [
      "DButton"
    ],
    "name": "GetMenu",
    "typings": [
      "(this: DMenuOption): DMenu"
    ]
  },
  {
    "comments": [
      "\nReturns whether the @DMenuOption type is a checkbox option or a normal button option.\n",
      "@name DMenuOption:GetIsCheckable",
      "@wiki https://wiki.garrysmod.com/page/DMenuOption/GetIsCheckable",
      "@param {DMenuOption} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DMenuOption",
    "extends": [
      "DButton"
    ],
    "name": "GetIsCheckable",
    "typings": [
      "(this: DMenuOption): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the checked state of @DMenuOption type.\n",
      "@name DMenuOption:GetChecked",
      "@wiki https://wiki.garrysmod.com/page/DMenuOption/GetChecked",
      "@param {DMenuOption} this - no description",
      "@returns {boolean} - Are we checked or not"
    ],
    "type": "class",
    "context": "DMenuOption",
    "extends": [
      "DButton"
    ],
    "name": "GetChecked",
    "typings": [
      "(this: DMenuOption): boolean"
    ]
  },
  {
    "comments": [
      "\nCreates a sub @DMenu type and returns it. Has no duplicate call protection.\n",
      "@name DMenuOption:AddSubMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenuOption/AddSubMenu",
      "@param {DMenuOption} this - no description",
      "@returns {DMenu} - The created @DMenu type to add options to."
    ],
    "type": "class",
    "context": "DMenuOption",
    "extends": [
      "DButton"
    ],
    "name": "AddSubMenu",
    "typings": [
      "(this: DMenuOption): DMenu"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the background should be painted. Is the same as @DMenuBar:SetDrawBackground\n",
      "@name DMenuBar:SetPaintBackground",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/SetPaintBackground",
      "@param {DMenuBar} this - no description",
      "@param {boolean} shouldPaint - Should the background be painted",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "SetPaintBackground",
    "typings": [
      "(this: DMenuBar, shouldPaint: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the panel is a menu. Used for closing menus when another panel is selected.\n",
      "@name DMenuBar:SetIsMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/SetIsMenu",
      "@param {DMenuBar} this - no description",
      "@param {boolean} isMenu - Is this a menu",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "SetIsMenu",
    "typings": [
      "(this: DMenuBar, isMenu: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the background should be painted. Is the same as @DMenuBar:SetPaintBackground\n",
      "@name DMenuBar:SetDrawBackground",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/SetDrawBackground",
      "@param {DMenuBar} this - no description",
      "@param {boolean} shouldPaint - Should the background be painted",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "SetDrawBackground",
    "typings": [
      "(this: DMenuBar, shouldPaint: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the panel is disabled\n",
      "@name DMenuBar:SetDisabled",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/SetDisabled",
      "@param {DMenuBar} this - no description",
      "@param {boolean} disable - Should be disabled or not",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "SetDisabled",
    "typings": [
      "(this: DMenuBar, disable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the background color\n",
      "@name DMenuBar:SetBackgroundColor",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/SetBackgroundColor",
      "@param {DMenuBar} this - no description",
      "@param {Color} color - See @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "SetBackgroundColor",
    "typings": [
      "(this: DMenuBar, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nIf a menu is visible/opened, then the menu is returned.\n",
      "@name DMenuBar:GetOpenMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/GetOpenMenu",
      "@param {DMenuBar} this - no description",
      "@returns {Panel} - Returns the visible/open menu or nil."
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "GetOpenMenu",
    "typings": [
      "(this: DMenuBar): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the background should be painted. Is the same as @DMenuBar:GetDrawBackground\n",
      "@name DMenuBar:GetPaintBackground",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/GetPaintBackground",
      "@param {DMenuBar} this - no description",
      "@returns {boolean} - Should the background be painted"
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "GetPaintBackground",
    "typings": [
      "(this: DMenuBar): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the panel is a menu. Used for closing menus when another panel is selected.\n",
      "@name DMenuBar:GetIsMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/GetIsMenu",
      "@param {DMenuBar} this - no description",
      "@returns {boolean} - Is a menu"
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "GetIsMenu",
    "typings": [
      "(this: DMenuBar): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the background should be painted. Is the same as @DMenuBar:GetPaintBackground\n",
      "@name DMenuBar:GetDrawBackground",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/GetDrawBackground",
      "@param {DMenuBar} this - no description",
      "@returns {boolean} - Should the background be painted"
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "GetDrawBackground",
    "typings": [
      "(this: DMenuBar): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the DMenuBar is disabled\n",
      "@name DMenuBar:GetDisabled",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/GetDisabled",
      "@param {DMenuBar} this - no description",
      "@returns {boolean} - Is disabled"
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "GetDisabled",
    "typings": [
      "(this: DMenuBar): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the DMenuBar's background color\n",
      "@name DMenuBar:GetBackgroundColor",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/GetBackgroundColor",
      "@param {DMenuBar} this - no description",
      "@returns {IColor} - The background's color. See @IColor structure"
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "GetBackgroundColor",
    "typings": [
      "(this: DMenuBar): IColor"
    ]
  },
  {
    "comments": [
      "\nRetrieves a @DMenu type object from the menu bar. If one with the given label doesn't exist, a new one is created.\nTo add a DMenu without checking, use @DMenuBar:AddMenu.\n",
      "@name DMenuBar:AddOrGetMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/AddOrGetMenu",
      "@param {DMenuBar} this - no description",
      "@param {string} label - The name (label) of the derma menu to get or create.",
      "@returns {DMenu} - The @DMenu type with the given label."
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "AddOrGetMenu",
    "typings": [
      "(this: DMenuBar, label: string): DMenu"
    ]
  },
  {
    "comments": [
      "\nCreates a new @DMenu type object tied to a @DButton type with the given label on the menu bar.\nThis will create a new menu regardless of whether or not one with the same label exists. To add **or** get a menu, use @DMenuBar:AddOrGetMenu.\n",
      "@name DMenuBar:AddMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenuBar/AddMenu",
      "@param {DMenuBar} this - no description",
      "@param {string} label - The name (label) of the derma menu to create.",
      "@returns {DMenu} - The new @DMenu type which will be opened when the button is clicked."
    ],
    "type": "class",
    "context": "DMenuBar",
    "extends": [
      "DPanel"
    ],
    "name": "AddMenu",
    "typings": [
      "(this: DMenuBar, label: string): DMenu"
    ]
  },
  {
    "comments": [
      "\nUsed internally to store the open submenu by @DMenu:Hide, @DMenu:OpenSubMenu, @DMenu:CloseSubMenu\n",
      "@name DMenu:SetOpenSubMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenu/SetOpenSubMenu",
      "@internal",
      "@param {DMenu} this - no description",
      "@param {Panel} item - The menu to store",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetOpenSubMenu",
    "typings": [
      "(this: DMenu, item: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum width of the @DMenu type. The menu will be stretched to match the given value.\n",
      "@name DMenu:SetMinimumWidth",
      "@wiki https://wiki.garrysmod.com/page/DMenu/SetMinimumWidth",
      "@param {DMenu} this - no description",
      "@param {number} minWidth - The minimum width of the @DMenu type in pixels",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetMinimumWidth",
    "typings": [
      "(this: DMenu, minWidth: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum height the @DMenu type can have. If the height of all menu items exceed this value, a scroll bar will be automatically added.\n",
      "@name DMenu:SetMaxHeight",
      "@wiki https://wiki.garrysmod.com/page/DMenu/SetMaxHeight",
      "@param {DMenu} this - no description",
      "@param {number} maxHeight - The maximum height of the @DMenu type to set, in pixels",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetMaxHeight",
    "typings": [
      "(this: DMenu, maxHeight: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the @DMenu type should draw the icon column with a different color.\n",
      "@name DMenu:SetDrawColumn",
      "@wiki https://wiki.garrysmod.com/page/DMenu/SetDrawColumn",
      "@param {DMenu} this - no description",
      "@param {boolean} draw - Whether to draw the column or not",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetDrawColumn",
    "typings": [
      "(this: DMenu, draw: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDoes nothing.\n",
      "@name DMenu:SetDrawBorder",
      "@wiki https://wiki.garrysmod.com/page/DMenu/SetDrawBorder",
      "@param {DMenu} this - no description",
      "@param {boolean} bool - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetDrawBorder",
    "typings": [
      "(this: DMenu, bool: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSet to true by default. IF set to true, the menu will be deleted when it is closed, not simply hidden.\nThis is used by @DMenuBar type\n",
      "@name DMenu:SetDeleteSelf",
      "@wiki https://wiki.garrysmod.com/page/DMenu/SetDeleteSelf",
      "@param {DMenu} this - no description",
      "@param {boolean} newState - true to delete menu on close, false to simply hide.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetDeleteSelf",
    "typings": [
      "(this: DMenu, newState: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled by @DMenuOption type. Calls @DMenu:OptionSelected.\n",
      "@name DMenu:OptionSelectedInternal",
      "@wiki https://wiki.garrysmod.com/page/DMenu/OptionSelectedInternal",
      "@internal",
      "@param {DMenu} this - no description",
      "@param {DMenuOption} option - The @DMenuOption type that called this function",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "OptionSelectedInternal",
    "typings": [
      "(this: DMenu, option: DMenuOption): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a option has been selected\n",
      "@name DMenu:OptionSelected",
      "@wiki https://wiki.garrysmod.com/page/DMenu/OptionSelected",
      "@param {DMenu} this - no description",
      "@param {DMenuOption} option - The @DMenuOption type that was selected",
      "@param {string} optionText - The options text",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "OptionSelected",
    "typings": [
      "(this: DMenu, option: DMenuOption, optionText: string): void"
    ]
  },
  {
    "comments": [
      "\nCloses any active sub menus, and opens a new one.\n",
      "@name DMenu:OpenSubMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenu/OpenSubMenu",
      "@param {DMenu} this - no description",
      "@param {DMenuOption} item - The @DMenuOption type to open the submenu at",
      "@param {Panel} menu - The submenu to open. If set to nil, the function just closes existing submenus.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "OpenSubMenu",
    "typings": [
      "(this: DMenu, item: DMenuOption, menu?: Panel): void"
    ]
  },
  {
    "comments": [
      "\nOpens the DMenu at the current mouse position\n",
      "@name DMenu:Open",
      "@wiki https://wiki.garrysmod.com/page/DMenu/Open",
      "@param {DMenu} this - no description",
      "@param {number} x - Position (X coordinate) to open the menu at.",
      "@param {number} y - Position (Y coordinate) to open the menu at.",
      "@param {any} skipanimation - This argument does nothing.",
      "@param {Panel} ownerpanel - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "Open",
    "typings": [
      "(this: DMenu, x?: number, y?: number, skipanimation: any, ownerpanel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nHighlights selected item in the @DMenu type by setting the item's key \"Highlight\" to true.\nDoesn't appear to be working or used.\n",
      "@name DMenu:HighlightItem",
      "@wiki https://wiki.garrysmod.com/page/DMenu/HighlightItem",
      "@param {DMenu} this - no description",
      "@param {Panel} item - The item to highlight.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "HighlightItem",
    "typings": [
      "(this: DMenu, item: Panel): void"
    ]
  },
  {
    "comments": [
      "\nUsed to safely hide (not remove) the menu. This will also hide any opened submenues recursively.\n",
      "@name DMenu:Hide",
      "@wiki https://wiki.garrysmod.com/page/DMenu/Hide",
      "@param {DMenu} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "Hide",
    "typings": [
      "(this: DMenu): void"
    ]
  },
  {
    "comments": [
      "\nReturns the currently opened submenu.\nUsed internally to store the open submenu by @DMenu:Hide, @DMenu:OpenSubMenu.\n",
      "@name DMenu:GetOpenSubMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenu/GetOpenSubMenu",
      "@internal",
      "@param {DMenu} this - no description",
      "@returns {Panel} - The currently opened submenu, if any."
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetOpenSubMenu",
    "typings": [
      "(this: DMenu): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the minimum width of the @DMenu type in pixels\n",
      "@name DMenu:GetMinimumWidth",
      "@wiki https://wiki.garrysmod.com/page/DMenu/GetMinimumWidth",
      "@param {DMenu} this - no description",
      "@returns {number} - the minimum width of the @DMenu type"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetMinimumWidth",
    "typings": [
      "(this: DMenu): number"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum height of the @DMenu type.\n",
      "@name DMenu:GetMaxHeight",
      "@wiki https://wiki.garrysmod.com/page/DMenu/GetMaxHeight",
      "@param {DMenu} this - no description",
      "@returns {number} - The maximum height in pixels"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetMaxHeight",
    "typings": [
      "(this: DMenu): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether the @DMenu type should draw the icon column with a different color or not.\nSee @DMenu:SetDrawColumn\n",
      "@name DMenu:GetDrawColumn",
      "@wiki https://wiki.garrysmod.com/page/DMenu/GetDrawColumn",
      "@param {DMenu} this - no description",
      "@returns {boolean} - Whether to draw the column or not"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetDrawColumn",
    "typings": [
      "(this: DMenu): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the value set by @DMenu:SetDrawBorder.\n",
      "@name DMenu:GetDrawBorder",
      "@wiki https://wiki.garrysmod.com/page/DMenu/GetDrawBorder",
      "@param {DMenu} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetDrawBorder",
    "typings": [
      "(this: DMenu): boolean"
    ]
  },
  {
    "comments": [
      "\nSet by @DMenu:SetDeleteSelf\n",
      "@name DMenu:GetDeleteSelf",
      "@wiki https://wiki.garrysmod.com/page/DMenu/GetDeleteSelf",
      "@param {DMenu} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetDeleteSelf",
    "typings": [
      "(this: DMenu): boolean"
    ]
  },
  {
    "comments": [
      "\nGets a child by its index.\n",
      "@name DMenu:GetChild",
      "@wiki https://wiki.garrysmod.com/page/DMenu/GetChild",
      "@note Unlike @Panel:GetChild, this index starts at 1.",
      "@param {DMenu} this - no description",
      "@param {number} childIndex - The index of the child to get.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetChild",
    "typings": [
      "(this: DMenu, childIndex: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally by @DMenu:OpenSubMenu.\n",
      "@name DMenu:CloseSubMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenu/CloseSubMenu",
      "@internal",
      "@param {DMenu} this - no description",
      "@param {Panel} menu - The menu to close",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "CloseSubMenu",
    "typings": [
      "(this: DMenu, menu: Panel): void"
    ]
  },
  {
    "comments": [
      "\nClears all highlights made by @DMenu:HighlightItem.\nDoesn't appear to be used or do anything.\n",
      "@name DMenu:ClearHighlights",
      "@wiki https://wiki.garrysmod.com/page/DMenu/ClearHighlights",
      "@param {DMenu} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "ClearHighlights",
    "typings": [
      "(this: DMenu): void"
    ]
  },
  {
    "comments": [
      "\nReturns the number of child elements of @DMenu type's @DScrollPanel:GetCanvas.\n",
      "@name DMenu:ChildCount",
      "@wiki https://wiki.garrysmod.com/page/DMenu/ChildCount",
      "@param {DMenu} this - no description",
      "@returns {number} - The number of child elements"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "ChildCount",
    "typings": [
      "(this: DMenu): number"
    ]
  },
  {
    "comments": [
      "\nAdd a sub menu to the DMenu\n",
      "@name DMenu:AddSubMenu",
      "@wiki https://wiki.garrysmod.com/page/DMenu/AddSubMenu",
      "@param {DMenu} this - no description",
      "@param {string} Name - Name of the sub menu.",
      "@param {function} func - Function to execute when this sub menu is clicked.",
      "@returns {DMenu} - The created sub @DMenu type",
      "@returns {DMenuOption} - The created @DMenuOption type",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "AddSubMenu",
    "typings": [
      "(this: DMenu, Name: string, func?: UnknownFunc): [DMenu, DMenuOption]"
    ]
  },
  {
    "comments": [
      "\nAdds a horizontal line spacer.\n",
      "@name DMenu:AddSpacer",
      "@wiki https://wiki.garrysmod.com/page/DMenu/AddSpacer",
      "@param {DMenu} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "AddSpacer",
    "typings": [
      "(this: DMenu): void"
    ]
  },
  {
    "comments": [
      "\nAdds a panel to the @DMenu type as if it were an option.\nThis invokes @DScrollPanel:AddItem and will not create a new panel if a class name is passed, unlike @Panel:Add.\n",
      "@name DMenu:AddPanel",
      "@wiki https://wiki.garrysmod.com/page/DMenu/AddPanel",
      "@param {DMenu} this - no description",
      "@param {Panel} pnl - The panel that you want to add.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "AddPanel",
    "typings": [
      "(this: DMenu, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nAdd an option to the DMenu\n",
      "@name DMenu:AddOption",
      "@wiki https://wiki.garrysmod.com/page/DMenu/AddOption",
      "@param {DMenu} this - no description",
      "@param {string} name - Name of the option.",
      "@param {function} func - Function to execute when this option is clicked.",
      "@returns {DMenuOption} - Returns the created @DMenuOption type panel."
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "AddOption",
    "typings": [
      "(this: DMenu, name: string, func?: UnknownFunc): DMenuOption"
    ]
  },
  {
    "comments": [
      "\nCreates a @DMenuOptionCVar type and adds it as an option into the menu. Checking and unchecking the option will alter the given console variable's value.\n",
      "@name DMenu:AddCVar",
      "@wiki https://wiki.garrysmod.com/page/DMenu/AddCVar",
      "@param {DMenu} this - no description",
      "@param {string} strText - The text of the button",
      "@param {string} convar - The console variable to change",
      "@param {string} on - The value of the console variable to set when the option is checked",
      "@param {string} off - The value of the console variable to set when the option is unchecked",
      "@param {function} funcFunction - If set, the function will be called every time the option is pressed/clicked/selected.\nIt will have only one argument:",
      "@returns {DMenuOptionCVar} - The created @DMenuOptionCVar type"
    ],
    "type": "class",
    "context": "DMenu",
    "extends": [
      "DScrollPanel"
    ],
    "name": "AddCVar",
    "typings": [
      "(this: DMenu, strText: string, convar: string, on: string, off: string, funcFunction?: DMenuAddCVarFunc): DMenuOptionCVar"
    ],
    "types": [
      {
        "comments": [
          "@type DMenuAddCVarFunc",
          "@param {void} this - no description",
          "@param {DMenuOptionCVar} pnl - The created @DMenuOptionCVar type."
        ],
        "type": "type",
        "name": "DMenuAddCVarFunc",
        "typing": "(this: void, pnl: DMenuOptionCVar) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nSets the string held in the specified column of a @DListView_Line type panel.\n",
      "@name DListView_Line:SetColumnText",
      "@wiki https://wiki.garrysmod.com/page/DListView Line/SetColumnText",
      "@param {DListView_Line} this - no description",
      "@param {number} column - The number of the column to write the text from, starts with 1.",
      "@param {string} value - Column text you want to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView_Line",
    "extends": [
      "Panel"
    ],
    "name": "SetColumnText",
    "typings": [
      "(this: DListView_Line, column: number, value: string): void"
    ]
  },
  {
    "comments": [
      "\nGets the string held in the specified column of a @DListView_Line type panel.\nThis is the same thing as doing @DListView_Line:GetValue( column_number ).\n",
      "@name DListView_Line:GetColumnText",
      "@wiki https://wiki.garrysmod.com/page/DListView Line/GetColumnText",
      "@param {DListView_Line} this - no description",
      "@param {number} column - The number of the column to retrieve the text from, starts with 1.",
      "@returns {string} - The contents of the specified column."
    ],
    "type": "class",
    "context": "DListView_Line",
    "extends": [
      "Panel"
    ],
    "name": "GetColumnText",
    "typings": [
      "(this: DListView_Line, column: number): string"
    ]
  },
  {
    "comments": [
      "\nSets the width of the panel.\n",
      "@name DListView_Column:SetWidth",
      "@wiki https://wiki.garrysmod.com/page/DListView Column/SetWidth",
      "@param {DListView_Column} this - no description",
      "@param {number} width - The number value which will determine panel width.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView_Column",
    "extends": [
      "DPanel"
    ],
    "name": "SetWidth",
    "typings": [
      "(this: DListView_Column, width: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the text alignment for the column\n",
      "@name DListView_Column:SetTextAlign",
      "@wiki https://wiki.garrysmod.com/page/DListView Column/SetTextAlign",
      "@param {DListView_Column} this - no description",
      "@param {number} alignment - The direction of the content, based on the number pad.\n@7 key: **top-left**@8 key: **top-center**@9 key: **top-right**\n@4 key: **middle-left**@5 key: **center**@6 key: **middle-right**\n@1 key: **bottom-left**@2 key: **bottom-center**@3 key: **bottom-right**",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView_Column",
    "extends": [
      "DPanel"
    ],
    "name": "SetTextAlign",
    "typings": [
      "(this: DListView_Column, alignment: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum width of a column.\n",
      "@name DListView_Column:SetMinWidth",
      "@wiki https://wiki.garrysmod.com/page/DListView Column/SetMinWidth",
      "@param {DListView_Column} this - no description",
      "@param {number} width - The number value which will determine a minimum width.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView_Column",
    "extends": [
      "DPanel"
    ],
    "name": "SetMinWidth",
    "typings": [
      "(this: DListView_Column, width: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum width of a column.\n",
      "@name DListView_Column:SetMaxWidth",
      "@wiki https://wiki.garrysmod.com/page/DListView Column/SetMaxWidth",
      "@param {DListView_Column} this - no description",
      "@param {number} width - The number value which will determine a maximum width.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView_Column",
    "extends": [
      "DPanel"
    ],
    "name": "SetMaxWidth",
    "typings": [
      "(this: DListView_Column, width: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the fixed width of the column.\n",
      "@name DListView_Column:SetFixedWidth",
      "@wiki https://wiki.garrysmod.com/page/DListView Column/SetFixedWidth",
      "@param {DListView_Column} this - no description",
      "@param {number} width - The number value which will determine a fixed width.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView_Column",
    "extends": [
      "DPanel"
    ],
    "name": "SetFixedWidth",
    "typings": [
      "(this: DListView_Column, width: number): void"
    ]
  },
  {
    "comments": [
      "\nSorts the list based on given columns.\nAll arguments are optional\n",
      "@name DListView:SortByColumns",
      "@wiki https://wiki.garrysmod.com/page/DListView/SortByColumns",
      "@param {DListView} this - no description",
      "@param {number} column1 - no description",
      "@param {boolean} descrending1 - no description",
      "@param {number} column2 - no description",
      "@param {boolean} descrending2 - no description",
      "@param {number} column3 - no description",
      "@param {boolean} descrending3 - no description",
      "@param {number} column4 - no description",
      "@param {boolean} descrending4 - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "SortByColumns",
    "typings": [
      "(this: DListView, column1?: number, descrending1?: boolean, column2?: number, descrending2?: boolean, column3?: number, descrending3?: boolean, column4?: number, descrending4?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSorts the items in the specified column.\n",
      "@name DListView:SortByColumn",
      "@wiki https://wiki.garrysmod.com/page/DListView/SortByColumn",
      "@param {DListView} this - no description",
      "@param {number} columnIndex - The index of the column that should be sorted.",
      "@param {boolean} descending - Whether the items should be sorted in descending order or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "SortByColumn",
    "typings": [
      "(this: DListView, columnIndex: number, descending?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nEnables/disables the sorting of columns by clicking.\n",
      "@name DListView:SetSortable",
      "@wiki https://wiki.garrysmod.com/page/DListView/SetSortable",
      "@param {DListView} this - no description",
      "@param {boolean} isSortable - Whether sorting columns with clicking is allowed or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "SetSortable",
    "typings": [
      "(this: DListView, isSortable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether multiple lines can be selected by the user by using the @Ctrl key or @Shift key keys. When set to false, only one line can be selected.\n",
      "@name DListView:SetMultiSelect",
      "@wiki https://wiki.garrysmod.com/page/DListView/SetMultiSelect",
      "@param {DListView} this - no description",
      "@param {boolean} allowMultiSelect - Whether multiple lines can be selected or not",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "SetMultiSelect",
    "typings": [
      "(this: DListView, allowMultiSelect: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the header line should be visible on not.\n",
      "@name DListView:SetHideHeaders",
      "@wiki https://wiki.garrysmod.com/page/DListView/SetHideHeaders",
      "@param {DListView} this - no description",
      "@param {boolean} hide - Whether the header line should be visible on not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "SetHideHeaders",
    "typings": [
      "(this: DListView, hide: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the height of the header line of the @DListView type.\nSee also @DListView:SetDataHeight.\n",
      "@name DListView:SetHeaderHeight",
      "@wiki https://wiki.garrysmod.com/page/DListView/SetHeaderHeight",
      "@param {DListView} this - no description",
      "@param {number} height - The new height to set. Default value is 16.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "SetHeaderHeight",
    "typings": [
      "(this: DListView, height: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally to signify if the @DListView type needs a rebuild.\n",
      "@name DListView:SetDirty",
      "@wiki https://wiki.garrysmod.com/page/DListView/SetDirty",
      "@internal",
      "@param {DListView} this - no description",
      "@param {boolean} isDirty - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "SetDirty",
    "typings": [
      "(this: DListView, isDirty: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the height of all lines of the @DListView type except for the header line.\nSee also @DListView:SetHeaderHeight.\n",
      "@name DListView:SetDataHeight",
      "@wiki https://wiki.garrysmod.com/page/DListView/SetDataHeight",
      "@param {DListView} this - no description",
      "@param {number} height - The new height to set. Default value is 17.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "SetDataHeight",
    "typings": [
      "(this: DListView, height: number): void"
    ]
  },
  {
    "comments": [
      "\nSelects a line in the listview.\n",
      "@name DListView:SelectItem",
      "@wiki https://wiki.garrysmod.com/page/DListView/SelectItem",
      "@param {DListView} this - no description",
      "@param {Panel} Line - The line to select.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "SelectItem",
    "typings": [
      "(this: DListView, Line: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSelects the line at the first index of the DListView if one has been added.\n",
      "@name DListView:SelectFirstItem",
      "@wiki https://wiki.garrysmod.com/page/DListView/SelectFirstItem",
      "@param {DListView} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "SelectFirstItem",
    "typings": [
      "(this: DListView): void"
    ]
  },
  {
    "comments": [
      "\nRemoves a line from the list view.\n",
      "@name DListView:RemoveLine",
      "@wiki https://wiki.garrysmod.com/page/DListView/RemoveLine",
      "@param {DListView} this - no description",
      "@param {number} line - Removes the given row, by row id (same number as @DListView:GetLine).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "RemoveLine",
    "typings": [
      "(this: DListView, line: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled internally by @DListView:OnClickLine when a line is selected. This is the function you should override to define the behavior when a line is selected.\n",
      "@name DListView:OnRowSelected",
      "@wiki https://wiki.garrysmod.com/page/DListView/OnRowSelected",
      "@param {DListView} this - no description",
      "@param {number} rowIndex - The index of the row/line that the user clicked on.",
      "@param {DListView_Line} row - The @DListView_Line type that the user clicked on.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "OnRowSelected",
    "typings": [
      "(this: DListView, rowIndex: number, row: DListView_Line): void"
    ]
  },
  {
    "comments": [
      "\nCalled from @DListView_Column type.\n",
      "@name DListView:OnRequestResize",
      "@wiki https://wiki.garrysmod.com/page/DListView/OnRequestResize",
      "@internal",
      "@param {DListView} this - no description",
      "@param {Panel} column - The column which initialized the resize",
      "@param {number} size - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "OnRequestResize",
    "typings": [
      "(this: DListView, column: Panel, size: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a row is right-clicked\n",
      "@name DListView:OnRowRightClick",
      "@wiki https://wiki.garrysmod.com/page/DListView/OnRowRightClick",
      "@param {DListView} this - no description",
      "@param {number} lineID - The line ID of the right clicked line",
      "@param {DListView_Line} line - The line panel itself, a @DListView_Line type.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "OnRowRightClick",
    "typings": [
      "(this: DListView, lineID: number, line: DListView_Line): void"
    ]
  },
  {
    "comments": [
      "\nCalled whenever a line is clicked.\n",
      "@name DListView:OnClickLine",
      "@wiki https://wiki.garrysmod.com/page/DListView/OnClickLine",
      "@internal Use @DListView:OnRowSelected instead!",
      "@param {DListView} this - no description",
      "@param {Panel} line - The selected line.",
      "@param {boolean} isSelected - Boolean indicating whether the line is selected.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "OnClickLine",
    "typings": [
      "(this: DListView, line: Panel, isSelected: boolean): void"
    ]
  },
  {
    "comments": [
      "\nConverts LineID to SortedID\n",
      "@name DListView:GetSortedID",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetSortedID",
      "@internal",
      "@param {DListView} this - no description",
      "@param {number} lineId - The @DListView_Line:GetID of a line to look up",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetSortedID",
    "typings": [
      "(this: DListView, lineId: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether sorting of columns by clicking their headers is allowed or not.\nSee also @DListView:SetSortable.\n",
      "@name DListView:GetSortable",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetSortable",
      "@param {DListView} this - no description",
      "@returns {boolean} - Whether sorting of columns by clicking their headers is allowed or not"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetSortable",
    "typings": [
      "(this: DListView): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the currently selected @DListView_Line type index.\nIf @DListView:SetMultiSelect is set to true, only the first line of all selected lines will be returned. Use @DListView:GetSelected instead to get all of the selected lines.\n",
      "@name DListView:GetSelectedLine",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetSelectedLine",
      "@param {DListView} this - no description",
      "@returns {number} - The index of the currently selected line.",
      "@returns {DListView_Line} - The currently selected @DListView_Line type.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetSelectedLine",
    "typings": [
      "(this: DListView): [number, DListView_Line]"
    ]
  },
  {
    "comments": [
      "\nGets all of the lines that are currently selected.\n",
      "@name DListView:GetSelected",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetSelected",
      "@param {DListView} this - no description",
      "@returns {DListView_Line[]} - A table of @DListView_Line types."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetSelected",
    "typings": [
      "(this: DListView): DListView_Line[]"
    ]
  },
  {
    "comments": [
      "\nGets all of the lines added to the DListView.\n",
      "@name DListView:GetLines",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetLines",
      "@param {DListView} this - no description",
      "@returns {table} - The lines added to the DListView."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetLines",
    "typings": [
      "(this: DListView): table"
    ]
  },
  {
    "comments": [
      "\nGets the @DListView_Line type at the given index.\n",
      "@name DListView:GetLine",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetLine",
      "@param {DListView} this - no description",
      "@param {number} id - The index of the line to get.",
      "@returns {DListView_Line} - The @DListView_Line type at the given index."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetLine",
    "typings": [
      "(this: DListView, id: number): DListView_Line"
    ]
  },
  {
    "comments": [
      "\nReturns whether multiple lines can be selected or not.\nSee @DListView:SetMultiSelect.\n",
      "@name DListView:GetMultiSelect",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetMultiSelect",
      "@param {DListView} this - no description",
      "@returns {boolean} - Whether multiple lines can be selected or not."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetMultiSelect",
    "typings": [
      "(this: DListView): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the height of @DListView:GetCanvas.\nIntended to represent the height of all data lines.\n",
      "@name DListView:GetInnerTall",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetInnerTall",
      "@param {DListView} this - no description",
      "@returns {number} - The height of @DListView:GetCanvas."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetInnerTall",
    "typings": [
      "(this: DListView): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether the header line should be visible on not.\n",
      "@name DListView:GetHideHeaders",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetHideHeaders",
      "@param {DListView} this - no description",
      "@returns {boolean} - Whether the header line should be visible on not."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetHideHeaders",
    "typings": [
      "(this: DListView): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the height of the header of the @DListView type.\nSee also @DListView:SetHeaderHeight.\n",
      "@name DListView:GetHeaderHeight",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetHeaderHeight",
      "@param {DListView} this - no description",
      "@returns {number} - The height of the header of the @DListView type."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetHeaderHeight",
    "typings": [
      "(this: DListView): number"
    ]
  },
  {
    "comments": [
      "\nSee @DListView:SetDirty.\n",
      "@name DListView:GetDirty",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetDirty",
      "@internal",
      "@param {DListView} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetDirty",
    "typings": [
      "(this: DListView): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the height of the data of the @DListView type.\nSee also @DListView:SetDataHeight.\n",
      "@name DListView:GetDataHeight",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetDataHeight",
      "@param {DListView} this - no description",
      "@returns {number} - The height of the data of the @DListView type."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetDataHeight",
    "typings": [
      "(this: DListView): number"
    ]
  },
  {
    "comments": [
      "\nGets the canvas.\n",
      "@name DListView:GetCanvas",
      "@wiki https://wiki.garrysmod.com/page/DListView/GetCanvas",
      "@param {DListView} this - no description",
      "@returns {Panel} - The canvas."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "GetCanvas",
    "typings": [
      "(this: DListView): Panel"
    ]
  },
  {
    "comments": [
      "\nInternal helper function called from the @PanelHooks:PerformLayout of @DListView type.\n",
      "@name DListView:FixColumnsLayout",
      "@wiki https://wiki.garrysmod.com/page/DListView/FixColumnsLayout",
      "@internal",
      "@param {DListView} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "FixColumnsLayout",
    "typings": [
      "(this: DListView): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a line in the DListView is double clicked.\n",
      "@name DListView:DoDoubleClick",
      "@wiki https://wiki.garrysmod.com/page/DListView/DoDoubleClick",
      "@param {DListView} this - no description",
      "@param {number} lineID - The line number of the double clicked line.",
      "@param {DListView_Line} line - The double clicked @DListView_Line type.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "DoDoubleClick",
    "typings": [
      "(this: DListView, lineID: number, line: DListView_Line): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the scrollbar.\n",
      "@name DListView:DisableScrollbar",
      "@wiki https://wiki.garrysmod.com/page/DListView/DisableScrollbar",
      "@param {DListView} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "DisableScrollbar",
    "typings": [
      "(this: DListView): void"
    ]
  },
  {
    "comments": [
      "\nCreates the lines and gets the height of the contents, in a DListView.\n",
      "@name DListView:DataLayout",
      "@wiki https://wiki.garrysmod.com/page/DListView/DataLayout",
      "@param {DListView} this - no description",
      "@returns {number} - The height of the contents"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "DataLayout",
    "typings": [
      "(this: DListView): number"
    ]
  },
  {
    "comments": [
      "\nGets the width of a column.\n",
      "@name DListView:ColumnWidth",
      "@wiki https://wiki.garrysmod.com/page/DListView/ColumnWidth",
      "@param {DListView} this - no description",
      "@param {number} column - The column to get the width of.",
      "@returns {number} - Width of the column."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "ColumnWidth",
    "typings": [
      "(this: DListView, column: number): number"
    ]
  },
  {
    "comments": [
      "\nClears the current selection in the DListView.\n",
      "@name DListView:ClearSelection",
      "@wiki https://wiki.garrysmod.com/page/DListView/ClearSelection",
      "@param {DListView} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "ClearSelection",
    "typings": [
      "(this: DListView): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all lines that have been added to the DListView.\n",
      "@name DListView:Clear",
      "@wiki https://wiki.garrysmod.com/page/DListView/Clear",
      "@param {DListView} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "Clear",
    "typings": [
      "(this: DListView): void"
    ]
  },
  {
    "comments": [
      "\nAdds a line to the list view.\n",
      "@name DListView:AddLine",
      "@wiki https://wiki.garrysmod.com/page/DListView/AddLine",
      "@param {DListView} this - no description",
      "@param {any[]} ...text - Values for a new row in the DListView, If several arguments are supplied, each argument will correspond to a respective column in the DListView.",
      "@returns {DListView_Line} - The newly created @DListView_Line type."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "AddLine",
    "typings": [
      "(this: DListView, ...text: any[]): DListView_Line"
    ]
  },
  {
    "comments": [
      "\nAdds a column to the listview.\n",
      "@name DListView:AddColumn",
      "@wiki https://wiki.garrysmod.com/page/DListView/AddColumn",
      "@param {DListView} this - no description",
      "@param {string} column - The name of the column to add.",
      "@param {number} position - Sets the ordering of this column compared to other columns.",
      "@returns {DListView_Column} - The newly created @DListView_Column type."
    ],
    "type": "class",
    "context": "DListView",
    "extends": [
      "DPanel"
    ],
    "name": "AddColumn",
    "typings": [
      "(this: DListView, column: string, position: number): DListView_Column"
    ]
  },
  {
    "comments": [
      "\nSets the base text color of the @DLabelURL type. This is overridden by @DLabelURL:SetTextColor.\n",
      "@name DLabelURL:SetTextStyleColor",
      "@wiki https://wiki.garrysmod.com/page/DLabelURL/SetTextStyleColor",
      "@param {DLabelURL} this - no description",
      "@param {Color} color - The @Color function to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabelURL",
    "extends": [
      "URLLabel"
    ],
    "name": "SetTextStyleColor",
    "typings": [
      "(this: DLabelURL, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the text color of the @DLabelURL type. Overrides @DLabelURL:SetTextStyleColor.\nThis should only be used immediately after it is created, and otherwise @Panel:SetFGColor.\n",
      "@name DLabelURL:SetTextColor",
      "@wiki https://wiki.garrysmod.com/page/DLabelURL/SetTextColor",
      "@validate",
      "@param {DLabelURL} this - no description",
      "@param {table} col - The @Color function to use.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabelURL",
    "extends": [
      "URLLabel"
    ],
    "name": "SetTextColor",
    "typings": [
      "(this: DLabelURL, col: table): void"
    ]
  },
  {
    "comments": [
      "\nAlias of @DLabelURL:SetTextColor.\n",
      "@name DLabelURL:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DLabelURL/SetColor",
      "@param {DLabelURL} this - no description",
      "@param {table} col - The @Color function to use.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabelURL",
    "extends": [
      "URLLabel"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DLabelURL, col: table): void"
    ]
  },
  {
    "comments": [
      "\nReturns the color set by @DLabelURL:SetTextStyleColor.\n",
      "@name DLabelURL:GetTextStyleColor",
      "@wiki https://wiki.garrysmod.com/page/DLabelURL/GetTextStyleColor",
      "@param {DLabelURL} this - no description",
      "@returns {IColor} - The @IColor structure"
    ],
    "type": "class",
    "context": "DLabelURL",
    "extends": [
      "URLLabel"
    ],
    "name": "GetTextStyleColor",
    "typings": [
      "(this: DLabelURL): IColor"
    ]
  },
  {
    "comments": [
      "\nGets the current text color of the @DLabelURL type set by @DLabelURL:SetTextColor.\n",
      "@name DLabelURL:GetTextColor",
      "@wiki https://wiki.garrysmod.com/page/DLabelURL/GetTextColor",
      "@param {DLabelURL} this - no description",
      "@returns {table} - The current text @Color function."
    ],
    "type": "class",
    "context": "DLabelURL",
    "extends": [
      "URLLabel"
    ],
    "name": "GetTextColor",
    "typings": [
      "(this: DLabelURL): table"
    ]
  },
  {
    "comments": [
      "\nA hook called when the player presses Enter (i.e. the finished editing the label) and the text has changed.\nAllows you to override/modify the text that will be set to display.\n",
      "@name DLabelEditable:OnLabelTextChanged",
      "@wiki https://wiki.garrysmod.com/page/DLabelEditable/OnLabelTextChanged",
      "@param {DLabelEditable} this - no description",
      "@param {string} txt - The original user input text",
      "@returns {string} - If provided, will override the text that will be applied to the label itself."
    ],
    "type": "class",
    "context": "DLabelEditable",
    "extends": [
      "DLabel"
    ],
    "name": "OnLabelTextChanged",
    "typings": [
      "(this: DLabelEditable, txt: string): string"
    ]
  },
  {
    "comments": [
      "\nGets the current text color of the @DLabelURL type. Alias as @DLabelURL:GetTextColor.\n",
      "@name DLabelURL:GetColor",
      "@wiki https://wiki.garrysmod.com/page/DLabelURL/GetColor",
      "@param {DLabelURL} this - no description",
      "@returns {table} - The current text @Color function."
    ],
    "type": "class",
    "context": "DLabelURL",
    "extends": [
      "URLLabel"
    ],
    "name": "GetColor",
    "typings": [
      "(this: DLabelURL): table"
    ]
  },
  {
    "comments": [
      "\nCalled internally to update the color of the text.\n",
      "@name DLabel:UpdateFGColor",
      "@wiki https://wiki.garrysmod.com/page/DLabel/UpdateFGColor",
      "@internal",
      "@param {DLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "UpdateFGColor",
    "typings": [
      "(this: DLabel): void"
    ]
  },
  {
    "comments": [
      "\nA hook called from within @DLabel:ApplySchemeSettings to determine the color of the text on display.\n",
      "@name DLabel:UpdateColors",
      "@wiki https://wiki.garrysmod.com/page/DLabel/UpdateColours",
      "@param {DLabel} this - no description",
      "@param {table} skin - A table supposed to contain the color values listed above.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "UpdateColors",
    "typings": [
      "(this: DLabel, skin: table): void"
    ]
  },
  {
    "comments": [
      "\nToggles the label's state. This can be set and retrieved with @DLabel:SetToggle and @DLabel:GetToggle.\nIn order to use toggle functionality, you must first call @DLabel:SetIsToggle with *true*, as it is disabled by default.\n",
      "@name DLabel:Toggle",
      "@wiki https://wiki.garrysmod.com/page/DLabel/Toggle",
      "@param {DLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "Toggle",
    "typings": [
      "(this: DLabel): void"
    ]
  },
  {
    "comments": [
      "\nSets the toggle state of the label. This can be retrieved with @DLabel:GetToggle and toggled with @DLabel:Toggle.\nIn order to use toggle functionality, you must first call @DLabel:SetIsToggle with *true*, as it is disabled by default.\n",
      "@name DLabel:SetToggle",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetToggle",
      "@param {DLabel} this - no description",
      "@param {boolean} toggleState - The toggle state to be set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetToggle",
    "typings": [
      "(this: DLabel, toggleState: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUsed by @DLabel:SetDark, @DLabel:SetBright and @DLabel:SetHighlight to set the text color without affecting @DLabel:SetTextColor calls.\n",
      "@name DLabel:SetTextStyleColor",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetTextStyleColor",
      "@internal Use @DLabel:SetTextColor instead!",
      "@param {DLabel} this - no description",
      "@param {Color} color - The text color. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetTextStyleColor",
    "typings": [
      "(this: DLabel, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the text color of the @DLabel type. This will take precedence over @DLabel:SetTextStyleColor.\n",
      "@name DLabel:SetTextColor",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetTextColor",
      "@param {DLabel} this - no description",
      "@param {Color} color - The text color. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetTextColor",
    "typings": [
      "(this: DLabel, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nEnables or disables toggle functionality for a label. Retrieved with @DLabel:GetIsToggle.\nYou must call this before using @DLabel:SetToggle, @DLabel:GetToggle or @DLabel:Toggle.\n",
      "@name DLabel:SetIsToggle",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetIsToggle",
      "@param {DLabel} this - no description",
      "@param {boolean} allowToggle - Whether or not to enable toggle functionality.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetIsToggle",
    "typings": [
      "(this: DLabel, allowToggle: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the text to the highlight text color defined in the skin.\nFor the default Derma skin this makes the label red.\nSee also @DLabel:SetBright and @DLabel:SetDark.\nYou should only consider using this if you are using background elements that are not manually painted and are using the skin colors.\n",
      "@name DLabel:SetHighlight",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetHighlight",
      "@param {DLabel} this - no description",
      "@param {boolean} highlight - true to set the label's color to skins's text highlight color, false otherwise.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetHighlight",
    "typings": [
      "(this: DLabel, highlight: boolean): void"
    ]
  },
  {
    "comments": [
      "\n[Category:DButton](https://wiki.garrysmod.com/page/Category:DButton) Sets the font of the label.\n",
      "@name DLabel:SetFont",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetFont",
      "@param {DLabel} this - no description",
      "@param {string} fontName - The name of the font.\nSee [here](https://wiki.garrysmod.com/page/Default_Fonts) for a list of existing fonts.\nAlternatively, use @surface.CreateFont to create your own custom font.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetFont",
    "typings": [
      "(this: DLabel, fontName: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not double clicking should call @DLabel:DoDoubleClick.\nThis is enabled by default.\n",
      "@name DLabel:SetDoubleClickingEnabled",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetDoubleClickingEnabled",
      "@param {DLabel} this - no description",
      "@param {boolean} enable - true to enable, false to disable",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetDoubleClickingEnabled",
    "typings": [
      "(this: DLabel, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the disabled state of the @DLabel type.\nWhen disabled, the label does not respond to click, toggle or drag & drop actions.\n",
      "@name DLabel:SetDisabled",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetDisabled",
      "@param {DLabel} this - no description",
      "@param {boolean} disable - *true* to disable the DLabel, *false* to enable it.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetDisabled",
    "typings": [
      "(this: DLabel, disable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the text to the dark text color defined in the skin.\nSee also @DLabel:SetBright and @DLabel:SetHighlight.\nYou should only consider using this if you are using background elements that are not manually painted and are using the skin colors.\n",
      "@name DLabel:SetDark",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetDark",
      "@param {DLabel} this - no description",
      "@param {boolean} dark - Whenever to set the text to dark or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetDark",
    "typings": [
      "(this: DLabel, dark: boolean): void"
    ]
  },
  {
    "comments": [
      "\nChanges color of label. Alias of @DLabel:SetTextColor.\n",
      "@name DLabel:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetColor",
      "@param {DLabel} this - no description",
      "@param {Color} color - The color to set. Uses the Color structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DLabel, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the text to the bright text color defined in the skin.\nSee also @DLabel:SetDark and @DLabel:SetHighlight.\nYou should only consider using this if you are using background elements that are not manually painted and are using the skin colors.\n",
      "@name DLabel:SetBright",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetBright",
      "@param {DLabel} this - no description",
      "@param {boolean} bright - Whenever to set the text to bright or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetBright",
    "typings": [
      "(this: DLabel, bright: boolean): void"
    ]
  },
  {
    "comments": [
      "\nAutomatically adjusts the height of the label dependent of the height of the text inside of it.\n",
      "@name DLabel:SetAutoStretchVertical",
      "@wiki https://wiki.garrysmod.com/page/DLabel/SetAutoStretchVertical",
      "@param {DLabel} this - no description",
      "@param {boolean} stretch - Whenever to stretch the label vertically or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "SetAutoStretchVertical",
    "typings": [
      "(this: DLabel, stretch: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the toggle state of the label is changed by @DLabel:Toggle.\nIn order to use toggle functionality, you must first call @DLabel:SetIsToggle with *true*, as it is disabled by default.\n",
      "@name DLabel:OnToggled",
      "@wiki https://wiki.garrysmod.com/page/DLabel/OnToggled",
      "@param {DLabel} this - no description",
      "@param {boolean} toggleState - The new toggle state.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "OnToggled",
    "typings": [
      "(this: DLabel, toggleState: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player releases any mouse button on the label. This is always called after @DLabel:OnDepressed.\nThis works as an alternative to @PanelHooks:OnMouseReleased as that hook is used heavily by @DLabel type and overriding it will break functionality.\nSee also @DLabel:DoClick, @DLabel:DoMiddleClick, @DLabel:DoRightClick and @DLabel:DoDoubleClick.\n",
      "@name DLabel:OnReleased",
      "@wiki https://wiki.garrysmod.com/page/DLabel/OnReleased",
      "@param {DLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "OnReleased",
    "typings": [
      "(this: DLabel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player presses the label with any mouse button.\nThis works as an alternative to @PanelHooks:OnMousePressed as that hook is used heavily by @DLabel type and overriding it will break functionality.\nSee also @DLabel:DoClick, @DLabel:DoMiddleClick, @DLabel:DoRightClick, @DLabel:OnReleased and @DLabel:DoDoubleClick.\n",
      "@name DLabel:OnDepressed",
      "@wiki https://wiki.garrysmod.com/page/DLabel/OnDepressed",
      "@param {DLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "OnDepressed",
    "typings": [
      "(this: DLabel): void"
    ]
  },
  {
    "comments": [
      "\nReturns the current toggle state of the label. This can be set with @DLabel:SetToggle and toggled with @DLabel:Toggle.\nIn order to use toggle functionality, you must first call @DLabel:SetIsToggle with *true*, as it is disabled by default.\n",
      "@name DLabel:GetToggle",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetToggle",
      "@param {DLabel} this - no description",
      "@returns {boolean} - The current toggle state."
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetToggle",
    "typings": [
      "(this: DLabel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the \"internal\" or fallback color of the text.\nSee also @DLabel:GetTextColor and @DLabel:SetTextStyleColor.\n",
      "@name DLabel:GetTextStyleColor",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetTextStyleColor",
      "@internal",
      "@param {DLabel} this - no description",
      "@returns {table} - The \"internal\" color of the text"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetTextStyleColor",
    "typings": [
      "(this: DLabel): table"
    ]
  },
  {
    "comments": [
      "\nReturns the \"override\" text color, set by @DLabel:SetTextColor.\n",
      "@name DLabel:GetTextColor",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetTextColor",
      "@param {DLabel} this - no description",
      "@returns {table} - The color of the text, or nil."
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetTextColor",
    "typings": [
      "(this: DLabel): table"
    ]
  },
  {
    "comments": [
      "\nReturns whether the toggle functionality is enabled for a label. Set with @DLabel:SetIsToggle.\n",
      "@name DLabel:GetIsToggle",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetIsToggle",
      "@param {DLabel} this - no description",
      "@returns {boolean} - Whether or not toggle functionality is enabled."
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetIsToggle",
    "typings": [
      "(this: DLabel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the @DLabel type should set its text color to the current skin's highlighted text color.\nSee @DLabel:SetHighlight.\n",
      "@name DLabel:GetHighlight",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetHighlight",
      "@param {DLabel} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetHighlight",
    "typings": [
      "(this: DLabel): boolean"
    ]
  },
  {
    "comments": [
      "\n[Category:DButton](https://wiki.garrysmod.com/page/Category:DButton) Returns the current font of the DLabel. This is set with @DLabel:SetFont.\n",
      "@name DLabel:GetFont",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetFont",
      "@param {DLabel} this - no description",
      "@returns {string} - The name of the font in use."
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetFont",
    "typings": [
      "(this: DLabel): string"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not double clicking will call @DLabel:DoDoubleClick.\nSee @DLabel:SetDoubleClickingEnabled.\n",
      "@name DLabel:GetDoubleClickingEnabled",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetDoubleClickingEnabled",
      "@param {DLabel} this - no description",
      "@returns {boolean} - true = enabled, false means disabled"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetDoubleClickingEnabled",
    "typings": [
      "(this: DLabel): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the disabled state of the @DLabel type. This is set with @DLabel:SetDisabled.\n",
      "@name DLabel:GetDisabled",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetDisabled",
      "@param {DLabel} this - no description",
      "@returns {boolean} - The disabled state of the label."
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetDisabled",
    "typings": [
      "(this: DLabel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the @DLabel type should set its text color to the current skin's dark text color.\nSee @DLabel:SetDark.\n",
      "@name DLabel:GetDark",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetDark",
      "@param {DLabel} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetDark",
    "typings": [
      "(this: DLabel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the actual color of the text.\nSee also @DLabel:GetTextColor and @DLabel:GetTextStyleColor.\n",
      "@name DLabel:GetColor",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetColor",
      "@param {DLabel} this - no description",
      "@returns {table} - The the actual color of the text."
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetColor",
    "typings": [
      "(this: DLabel): table"
    ]
  },
  {
    "comments": [
      "\nReturns whether the @DLabel type should set its text color to the current skin's bright text color.\nSee @DLabel:SetBright.\n",
      "@name DLabel:GetBright",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetBright",
      "@param {DLabel} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetBright",
    "typings": [
      "(this: DLabel): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the label stretches vertically or not.\nSet by @DLabel:SetAutoStretchVertical.\n",
      "@name DLabel:GetAutoStretchVertical",
      "@wiki https://wiki.garrysmod.com/page/DLabel/GetAutoStretchVertical",
      "@param {DLabel} this - no description",
      "@returns {boolean} - Whether the label stretches vertically or not."
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "GetAutoStretchVertical",
    "typings": [
      "(this: DLabel): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when the label is right clicked (on key release) by the player.\nThis will be called after @DLabel:OnDepressed and @DLabel:OnReleased.\nSee also @DLabel:DoClick, @DLabel:DoMiddleClick and @DLabel:DoDoubleClick.\n[Category:DButton](https://wiki.garrysmod.com/page/Category:DButton)\n",
      "@name DLabel:DoRightClick",
      "@wiki https://wiki.garrysmod.com/page/DLabel/DoRightClick",
      "@param {DLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "DoRightClick",
    "typings": [
      "(this: DLabel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the label is middle mouse (Mouse wheel, also known as mouse 3) clicked (on key release) by the player.\nThis will be called after @DLabel:OnDepressed and @DLabel:OnReleased.\nSee also @DLabel:DoClick, @DLabel:DoRightClick and @DLabel:DoDoubleClick.\n[Category:DButton](https://wiki.garrysmod.com/page/Category:DButton)\n",
      "@name DLabel:DoMiddleClick",
      "@wiki https://wiki.garrysmod.com/page/DLabel/DoMiddleClick",
      "@param {DLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "DoMiddleClick",
    "typings": [
      "(this: DLabel): void"
    ]
  },
  {
    "comments": [
      "\nCalled just before @DLabel:DoDoubleClick. In @DLabel type does nothing and is safe to override.\n",
      "@name DLabel:DoDoubleClickInternal",
      "@wiki https://wiki.garrysmod.com/page/DLabel/DoDoubleClickInternal",
      "@param {DLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "DoDoubleClickInternal",
    "typings": [
      "(this: DLabel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the label is double clicked by the player with left clicks.\n@DLabel:SetDoubleClickingEnabled must be set to true for this hook to work, which it is by default.\nThis will be called after @DLabel:OnDepressed and @DLabel:OnReleased and @DLabel:DoClick.\nSee also @DLabel:DoRightClick and @DLabel:DoMiddleClick.\n",
      "@name DLabel:DoDoubleClick",
      "@wiki https://wiki.garrysmod.com/page/DLabel/DoDoubleClick",
      "@param {DLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "DoDoubleClick",
    "typings": [
      "(this: DLabel): void"
    ]
  },
  {
    "comments": [
      "\nCalled just before @DLabel:DoClick.\nIn @DLabel type does nothing and is safe to override. Used by @DMenuOption type and @DCollapsibleCategory type's tabs.\n",
      "@name DLabel:DoClickInternal",
      "@wiki https://wiki.garrysmod.com/page/DLabel/DoClickInternal",
      "@param {DLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "DoClickInternal",
    "typings": [
      "(this: DLabel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the label is left clicked (on key release) by the player.\nThis will be called after @DLabel:OnDepressed and @DLabel:OnReleased.\nThis can be overridden; by default, it calls @DLabel:Toggle.\nSee also @DLabel:DoRightClick, @DLabel:DoMiddleClick and @DLabel:DoDoubleClick.\n[Category:DButton](https://wiki.garrysmod.com/page/Category:DButton)\n",
      "@name DLabel:DoClick",
      "@wiki https://wiki.garrysmod.com/page/DLabel/DoClick",
      "@param {DLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DLabel",
    "extends": [
      "Label"
    ],
    "name": "DoClick",
    "typings": [
      "(this: DLabel): void"
    ]
  },
  {
    "comments": [
      "\nSets the killicon to be displayed. You should call @DKillIcon:SizeToContents following this.\nKillicons can be added with @killicon.Add and @killicon.AddFont.\n",
      "@name DKillIcon:SetName",
      "@wiki https://wiki.garrysmod.com/page/DKillIcon/SetName",
      "@param {DKillIcon} this - no description",
      "@param {string} iconName - The name of the killicon to be displayed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DKillIcon",
    "extends": [
      "Panel"
    ],
    "name": "SetName",
    "typings": [
      "(this: DKillIcon, iconName: string): void"
    ]
  },
  {
    "comments": [
      "\nGets the killicon being shown.\n",
      "@name DKillIcon:GetName",
      "@wiki https://wiki.garrysmod.com/page/DKillIcon/GetName",
      "@param {DKillIcon} this - no description",
      "@returns {string} - The name of the killicon currently being displayed."
    ],
    "type": "class",
    "context": "DKillIcon",
    "extends": [
      "Panel"
    ],
    "name": "GetName",
    "typings": [
      "(this: DKillIcon): string"
    ]
  },
  {
    "comments": [
      "\nSets whether the image inside the @DImageButton type should be stretched to fill the entire size of the button, without preserving aspect ratio.\nIf set to false, the image will not be resized at all.\n",
      "@name DImageButton:SetStretchToFit",
      "@wiki https://wiki.garrysmod.com/page/DImageButton/SetStretchToFit",
      "@param {DImageButton} this - no description",
      "@param {boolean} stretch - True to stretch, false to not to stretch",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImageButton",
    "extends": [
      "DButton"
    ],
    "name": "SetStretchToFit",
    "typings": [
      "(this: DImageButton, stretch: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSee @DImage:SetOnViewMaterial\n",
      "@name DImageButton:SetOnViewMaterial",
      "@wiki https://wiki.garrysmod.com/page/DImageButton/SetOnViewMaterial",
      "@param {DImageButton} this - no description",
      "@param {string} mat - no description",
      "@param {string} backup - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImageButton",
    "extends": [
      "DButton"
    ],
    "name": "SetOnViewMaterial",
    "typings": [
      "(this: DImageButton, mat: string, backup: string): void"
    ]
  },
  {
    "comments": [
      "\nSets a @Material function directly as an image. Equivalent of @DImage:SetMaterial.\n",
      "@name DImageButton:SetMaterial",
      "@wiki https://wiki.garrysmod.com/page/DImageButton/SetMaterial",
      "@param {DImageButton} this - no description",
      "@param {IMaterial} mat - The material to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImageButton",
    "extends": [
      "DButton"
    ],
    "name": "SetMaterial",
    "typings": [
      "(this: DImageButton, mat: IMaterial): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the @DImageButton type should keep the aspect ratio of its image. Equivalent of @DImage:SetKeepAspect.\nNote that this will not try to fit the image inside the button, but instead it will fill the button with the image.\n",
      "@name DImageButton:SetKeepAspect",
      "@wiki https://wiki.garrysmod.com/page/DImageButton/SetKeepAspect",
      "@param {DImageButton} this - no description",
      "@param {boolean} keep - true to keep the aspect ratio, false not to",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImageButton",
    "extends": [
      "DButton"
    ],
    "name": "SetKeepAspect",
    "typings": [
      "(this: DImageButton, keep: boolean): void"
    ]
  },
  {
    "comments": [
      "\nHides or shows the image of the image button. Internally this calls @Panel:SetVisible on the internal @DImage type.\n",
      "@name DImageButton:SetImageVisible",
      "@wiki https://wiki.garrysmod.com/page/DImageButton/SetImageVisible",
      "@param {DImageButton} this - no description",
      "@param {boolean} visible - Set true to make it visible ( default ), or false to hide the image",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImageButton",
    "extends": [
      "DButton"
    ],
    "name": "SetImageVisible",
    "typings": [
      "(this: DImageButton, visible: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the \"image\" of the @DImageButton type. Equivalent of @DImage:SetImage.\n",
      "@name DImageButton:SetImage",
      "@wiki https://wiki.garrysmod.com/page/DImageButton/SetImage",
      "@param {DImageButton} this - no description",
      "@param {string} strImage - The path of the image to load. When no file extension is supplied the VMT file extension is used.",
      "@param {string} strBackup - The path of the backup image.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImageButton",
    "extends": [
      "DButton"
    ],
    "name": "SetImage",
    "typings": [
      "(this: DImageButton, strImage: string, strBackup?: string): void"
    ]
  },
  {
    "comments": [
      "\nAlias of @DImageButton:SetImage.\n",
      "@name DImageButton:SetIcon",
      "@wiki https://wiki.garrysmod.com/page/DImageButton/SetIcon",
      "@param {DImageButton} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImageButton",
    "extends": [
      "DButton"
    ],
    "name": "SetIcon",
    "typings": [
      "(this: DImageButton): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the image. Equivalent of @DImage:SetImageColor\n",
      "@name DImageButton:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DImageButton/SetColor",
      "@param {DImageButton} this - no description",
      "@param {Color} color - The @Color function to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImageButton",
    "extends": [
      "DButton"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DImageButton, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the image inside the button should be stretched to fit it or not\nSee @DImageButton:SetStretchToFit\n",
      "@name DImageButton:GetStretchToFit",
      "@wiki https://wiki.garrysmod.com/page/DImageButton/GetStretchToFit",
      "@param {DImageButton} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DImageButton",
    "extends": [
      "DButton"
    ],
    "name": "GetStretchToFit",
    "typings": [
      "(this: DImageButton): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the \"image\" of the @DImageButton type. Equivalent of @DImage:GetImage.\n",
      "@name DImageButton:GetImage",
      "@wiki https://wiki.garrysmod.com/page/DImageButton/GetImage",
      "@param {DImageButton} this - no description",
      "@returns {string} - The path to the image that is loaded."
    ],
    "type": "class",
    "context": "DImageButton",
    "extends": [
      "DButton"
    ],
    "name": "GetImage",
    "typings": [
      "(this: DImageButton): string"
    ]
  },
  {
    "comments": [
      "\nReturns true if the image is **not** yet loaded.\n",
      "@name DImage:Unloaded",
      "@wiki https://wiki.garrysmod.com/page/DImage/Unloaded",
      "@param {DImage} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "Unloaded",
    "typings": [
      "(this: DImage): boolean"
    ]
  },
  {
    "comments": [
      "\nSimilar to @DImage:SetImage, but will only do the expensive part of actually loading the textures/material if the material is about to be rendered/viewed.\nUseful for cases like @DIconBrowser type, where there are hundreds of small icons in 1 panel in a list that do not need all to be loaded at the same time.\n",
      "@name DImage:SetOnViewMaterial",
      "@wiki https://wiki.garrysmod.com/page/DImage/SetOnViewMaterial",
      "@param {DImage} this - no description",
      "@param {string} mat - no description",
      "@param {string} backupMat - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "SetOnViewMaterial",
    "typings": [
      "(this: DImage, mat: string, backupMat: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the material to be loaded when the image is first rendered. Used by @DImage:SetOnViewMaterial.\n",
      "@name DImage:SetMatName",
      "@wiki https://wiki.garrysmod.com/page/DImage/SetMatName",
      "@internal",
      "@param {DImage} this - no description",
      "@param {string} mat - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "SetMatName",
    "typings": [
      "(this: DImage, mat: string): void"
    ]
  },
  {
    "comments": [
      "\nSets a @Material function directly as an image.\n",
      "@name DImage:SetMaterial",
      "@wiki https://wiki.garrysmod.com/page/DImage/SetMaterial",
      "@param {DImage} this - no description",
      "@param {IMaterial} mat - The material to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "SetMaterial",
    "typings": [
      "(this: DImage, mat: IMaterial): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the @DImage type should keep the aspect ratio of its image when being resized.\nNote that this will not try to fit the image inside the button, but instead it will fill the button with the image.\n",
      "@name DImage:SetKeepAspect",
      "@wiki https://wiki.garrysmod.com/page/DImage/SetKeepAspect",
      "@param {DImage} this - no description",
      "@param {boolean} keep - true to keep the aspect ratio, false not to",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "SetKeepAspect",
    "typings": [
      "(this: DImage, keep: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the image's color override.\n",
      "@name DImage:SetImageColor",
      "@wiki https://wiki.garrysmod.com/page/DImage/SetImageColor",
      "@param {DImage} this - no description",
      "@param {IColor} col - The color override of the image. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "SetImageColor",
    "typings": [
      "(this: DImage, col: IColor): void"
    ]
  },
  {
    "comments": [
      "\nSets the image to load into the frame. If the first image can't be loaded and *strBackup* is set, that image will be loaded instead.\nThis eventually calls @DImage:SetMaterial.\n",
      "@name DImage:SetImage",
      "@wiki https://wiki.garrysmod.com/page/DImage/SetImage",
      "@param {DImage} this - no description",
      "@param {string} strImage - The path of the image to load. When no file extension is supplied the VMT file extension is used.",
      "@param {string} strBackup - The path of the backup image.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "SetImage",
    "typings": [
      "(this: DImage, strImage: string, strBackup?: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the backup material to be loaded when the image is first rendered. Used by @DImage:SetOnViewMaterial.\n",
      "@name DImage:SetFailsafeMatName",
      "@wiki https://wiki.garrysmod.com/page/DImage/SetFailsafeMatName",
      "@internal",
      "@param {DImage} this - no description",
      "@param {string} backupMat - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "SetFailsafeMatName",
    "typings": [
      "(this: DImage, backupMat: string): void"
    ]
  },
  {
    "comments": [
      "\nPaints a ghost copy of the DImage panel at the given position and dimensions. This function overrides @Panel:PaintAt.\n",
      "@name DImage:PaintAt",
      "@wiki https://wiki.garrysmod.com/page/DImage/PaintAt",
      "@param {DImage} this - no description",
      "@param {number} posX - The x coordinate to draw the panel from.",
      "@param {number} posY - The y coordinate to draw the panel from.",
      "@param {number} width - The width of the panel image to be drawn.",
      "@param {number} height - The height of the panel image to be drawn.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "PaintAt",
    "typings": [
      "(this: DImage, posX: number, posY: number, width?: number, height?: number): void"
    ]
  },
  {
    "comments": [
      "\nInitializes the loading process of the material to render if it is not loaded yet.\nYou do not need to call this function. It is done for you automatically.\n",
      "@name DImage:LoadMaterial",
      "@wiki https://wiki.garrysmod.com/page/DImage/LoadMaterial",
      "@internal",
      "@param {DImage} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "LoadMaterial",
    "typings": [
      "(this: DImage): void"
    ]
  },
  {
    "comments": [
      "\nReturns the texture path set by @DImage:SetMatName.\n",
      "@name DImage:GetMatName",
      "@wiki https://wiki.garrysmod.com/page/DImage/GetMatName",
      "@internal",
      "@param {DImage} this - no description",
      "@returns {string} - no description"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "GetMatName",
    "typings": [
      "(this: DImage): string"
    ]
  },
  {
    "comments": [
      "\nReturns the current @Material function of the @DImage type.\n",
      "@name DImage:GetMaterial",
      "@wiki https://wiki.garrysmod.com/page/DImage/GetMaterial",
      "@param {DImage} this - no description",
      "@returns {IMaterial} - no description"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "GetMaterial",
    "typings": [
      "(this: DImage): IMaterial"
    ]
  },
  {
    "comments": [
      "\nReturns whether the @DImage type should keep the aspect ratio of its image when being resized.\nSee @DImage:SetKeepAspect for more info on how it works.\n",
      "@name DImage:GetKeepAspect",
      "@wiki https://wiki.garrysmod.com/page/DImage/GetKeepAspect",
      "@param {DImage} this - no description",
      "@returns {boolean} - Whether the @DImage type should keep the aspect ratio of its image when being resized."
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "GetKeepAspect",
    "typings": [
      "(this: DImage): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the color override of the image panel.\n",
      "@name DImage:GetImageColor",
      "@wiki https://wiki.garrysmod.com/page/DImage/GetImageColor",
      "@param {DImage} this - no description",
      "@returns {IColor} - The color override of the image. Uses the @IColor structure."
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "GetImageColor",
    "typings": [
      "(this: DImage): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns the image loaded in the image panel.\n",
      "@name DImage:GetImage",
      "@wiki https://wiki.garrysmod.com/page/DImage/GetImage",
      "@param {DImage} this - no description",
      "@returns {string} - The path to the image that is loaded."
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "GetImage",
    "typings": [
      "(this: DImage): string"
    ]
  },
  {
    "comments": [
      "\nReturns the texture path set by @DImage:SetFailsafeMatName.\n",
      "@name DImage:GetFailsafeMatName",
      "@wiki https://wiki.garrysmod.com/page/DImage/GetFailsafeMatName",
      "@internal",
      "@param {DImage} this - no description",
      "@returns {string} - no description"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "GetFailsafeMatName",
    "typings": [
      "(this: DImage): string"
    ]
  },
  {
    "comments": [
      "\n\"Fixes\" the current material of the @DImage type if it has VertexLit shader by creating a new one with the same name and a prefix of \"_DImage\" and automatically calling @DImage:SetMaterial with the new material.\nThis fixes the problem where using materials using shaders that expect lighting information causing \"weird\" flickering when displayed in 2D/Unlit environment.\n",
      "@name DImage:FixVertexLitMaterial",
      "@wiki https://wiki.garrysmod.com/page/DImage/FixVertexLitMaterial",
      "@internal",
      "@param {DImage} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "FixVertexLitMaterial",
    "typings": [
      "(this: DImage): void"
    ]
  },
  {
    "comments": [
      "\nActually loads the @IMaterial type to render it. Called from @DImage:LoadMaterial.\n",
      "@name DImage:DoLoadMaterial",
      "@wiki https://wiki.garrysmod.com/page/DImage/DoLoadMaterial",
      "@internal",
      "@param {DImage} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DImage",
    "extends": [
      "DPanel"
    ],
    "name": "DoLoadMaterial",
    "typings": [
      "(this: DImage): void"
    ]
  },
  {
    "comments": [
      "\nIf set to true, the icon layout will stretch its width to fit all the children.\nSee also @DIconLayout:SetStretchHeight\n",
      "@name DIconLayout:SetStretchWidth",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/SetStretchWidth",
      "@param {DIconLayout} this - no description",
      "@param {boolean} stretchW - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetStretchWidth",
    "typings": [
      "(this: DIconLayout, stretchW: boolean): void"
    ]
  },
  {
    "comments": [
      "\nIf set to true, the icon layout will stretch its height to fit all the children.\nSee also @DIconLayout:SetStretchWidth\n",
      "@name DIconLayout:SetStretchHeight",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/SetStretchHeight",
      "@param {DIconLayout} this - no description",
      "@param {boolean} do_stretch - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetStretchHeight",
    "typings": [
      "(this: DIconLayout, do_stretch: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the vertical (y) spacing between children within the DIconLayout. You must call @DIconLayout:Layout in order for the changes to take effect.\n",
      "@name DIconLayout:SetSpaceY",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/SetSpaceY",
      "@param {DIconLayout} this - no description",
      "@param {number} ySpacing - The vertical gap between rows in the DIconLayout.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetSpaceY",
    "typings": [
      "(this: DIconLayout, ySpacing: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the horizontal (x) spacing between children within the DIconLayout. You must call @DIconLayout:Layout in order for the changes to take effect.\n",
      "@name DIconLayout:SetSpaceX",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/SetSpaceX",
      "@param {DIconLayout} this - no description",
      "@param {number} xSpacing - The width of the gap between child objects.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetSpaceX",
    "typings": [
      "(this: DIconLayout, xSpacing: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the direction that it will be layed out, using the @DOCK enum.\nCurrently only TOP and LEFT are supported.\n",
      "@name DIconLayout:SetLayoutDir",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/SetLayoutDir",
      "@param {DIconLayout} this - no description",
      "@param {DOCK} direction - @DOCK enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetLayoutDir",
    "typings": [
      "(this: DIconLayout, direction: DOCK): void"
    ]
  },
  {
    "comments": [
      "\nSets the internal border (padding) within the DIconLayout. This will not change its size, only the positioning of children. You must call @DIconLayout:Layout in order for the changes to take effect.\n",
      "@name DIconLayout:SetBorder",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/SetBorder",
      "@param {DIconLayout} this - no description",
      "@param {number} width - The border (padding) inside the DIconLayout.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "SetBorder",
    "typings": [
      "(this: DIconLayout, width: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the panel is modified.\n",
      "@name DIconLayout:OnModified",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/OnModified",
      "@param {DIconLayout} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "OnModified",
    "typings": [
      "(this: DIconLayout): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally to layout the child elements if the @DIconLayout:SetLayoutDir is set to TOP (See @DOCK enum).\n",
      "@name DIconLayout:LayoutIcons_TOP",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/LayoutIcons TOP",
      "@internal",
      "@param {DIconLayout} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "LayoutIcons_TOP",
    "typings": [
      "(this: DIconLayout): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally to layout the child elements if the @DIconLayout:SetLayoutDir is set to LEFT (See @DOCK enum).\n",
      "@name DIconLayout:LayoutIcons_LEFT",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/LayoutIcons LEFT",
      "@internal",
      "@param {DIconLayout} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "LayoutIcons_LEFT",
    "typings": [
      "(this: DIconLayout): void"
    ]
  },
  {
    "comments": [
      "\nResets layout vars before calling @Panel:InvalidateLayout. This is called when children are added or removed, and must be called when the spacing, border or layout direction is changed.\n",
      "@name DIconLayout:Layout",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/Layout",
      "@param {DIconLayout} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "Layout",
    "typings": [
      "(this: DIconLayout): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the icon layout will stretch its width to fit all the children.\nSee also @DIconLayout:GetStretchHeight\n",
      "@name DIconLayout:GetStretchWidth",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/GetStretchWidth",
      "@param {DIconLayout} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetStretchWidth",
    "typings": [
      "(this: DIconLayout): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the icon layout will stretch its height to fit all the children.\nSee also @DIconLayout:GetStretchWidth\n",
      "@name DIconLayout:GetStretchHeight",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/GetStretchHeight",
      "@param {DIconLayout} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetStretchHeight",
    "typings": [
      "(this: DIconLayout): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns distance between two \"Icons\" on the Y axis.\n",
      "@name DIconLayout:GetSpaceY",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/GetSpaceY",
      "@param {DIconLayout} this - no description",
      "@returns {number} - distance between two \"Icons\" on the Y axis."
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetSpaceY",
    "typings": [
      "(this: DIconLayout): number"
    ]
  },
  {
    "comments": [
      "\nReturns the distance between two 'icons' on the X axis.\n",
      "@name DIconLayout:GetSpaceX",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/GetSpaceX",
      "@param {DIconLayout} this - no description",
      "@returns {number} - Distance between two 'icons' on the X axis."
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetSpaceX",
    "typings": [
      "(this: DIconLayout): number"
    ]
  },
  {
    "comments": [
      "\nReturns the direction that it will be layed out, using the DOCK enumerations.\n",
      "@name DIconLayout:GetLayoutDir",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/GetLayoutDir",
      "@param {DIconLayout} this - no description",
      "@returns {number} - Layout direction."
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetLayoutDir",
    "typings": [
      "(this: DIconLayout): number"
    ]
  },
  {
    "comments": [
      "\nReturns the size of the border.\n",
      "@name DIconLayout:GetBorder",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/GetBorder",
      "@param {DIconLayout} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "GetBorder",
    "typings": [
      "(this: DIconLayout): number"
    ]
  },
  {
    "comments": [
      "\nCopies the contents (Child elements) of another @DIconLayout type to itself.\n",
      "@name DIconLayout:CopyContents",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/CopyContents",
      "@param {DIconLayout} this - no description",
      "@param {DIconLayout} from - @DIconLayout type to copy from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "CopyContents",
    "typings": [
      "(this: DIconLayout, from: DIconLayout): void"
    ]
  },
  {
    "comments": [
      "\nCreates a replica of the DIconLayout it is called on.\n",
      "@name DIconLayout:Copy",
      "@wiki https://wiki.garrysmod.com/page/DIconLayout/Copy",
      "@param {DIconLayout} this - no description",
      "@returns {Panel} - The replica."
    ],
    "type": "class",
    "context": "DIconLayout",
    "extends": [
      "DDragBase"
    ],
    "name": "Copy",
    "typings": [
      "(this: DIconLayout): Panel"
    ]
  },
  {
    "comments": [
      "\nSet the currently selected file path. Do not use. Use @DIconBrowser:SelectIcon instead.\n",
      "@name DIconBrowser:SetSelectedIcon",
      "@wiki https://wiki.garrysmod.com/page/DIconBrowser/SetSelectedIcon",
      "@internal",
      "@param {DIconBrowser} this - no description",
      "@param {string} str - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconBrowser",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetSelectedIcon",
    "typings": [
      "(this: DIconBrowser, str: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the browser should automatically fill itself with icons.\n",
      "@name DIconBrowser:SetManual",
      "@wiki https://wiki.garrysmod.com/page/DIconBrowser/SetManual",
      "@param {DIconBrowser} this - no description",
      "@param {boolean} manual - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconBrowser",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SetManual",
    "typings": [
      "(this: DIconBrowser, manual: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSelects an icon from file path\n",
      "@name DIconBrowser:SelectIcon",
      "@wiki https://wiki.garrysmod.com/page/DIconBrowser/SelectIcon",
      "@param {DIconBrowser} this - no description",
      "@param {string} icon - The file path of the icon to select. Do not include the \"materials/\" part.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconBrowser",
    "extends": [
      "DScrollPanel"
    ],
    "name": "SelectIcon",
    "typings": [
      "(this: DIconBrowser, icon: string): void"
    ]
  },
  {
    "comments": [
      "\nScrolls the browser to the selected icon\n",
      "@name DIconBrowser:ScrollToSelected",
      "@wiki https://wiki.garrysmod.com/page/DIconBrowser/ScrollToSelected",
      "@param {DIconBrowser} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconBrowser",
    "extends": [
      "DScrollPanel"
    ],
    "name": "ScrollToSelected",
    "typings": [
      "(this: DIconBrowser): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the selected icon was changed. Use @DIconBrowser:GetSelectedIcon to get the selected icon's filepath.\n",
      "@name DIconBrowser:OnChange",
      "@wiki https://wiki.garrysmod.com/page/DIconBrowser/OnChange",
      "@param {DIconBrowser} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconBrowser",
    "extends": [
      "DScrollPanel"
    ],
    "name": "OnChange",
    "typings": [
      "(this: DIconBrowser): void"
    ]
  },
  {
    "comments": [
      "\nUse @DIconBrowser:OnChange instead\n",
      "@name DIconBrowser:OnChangeInternal",
      "@wiki https://wiki.garrysmod.com/page/DIconBrowser/OnChangeInternal",
      "@internal",
      "@param {DIconBrowser} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconBrowser",
    "extends": [
      "DScrollPanel"
    ],
    "name": "OnChangeInternal",
    "typings": [
      "(this: DIconBrowser): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the browser should fill itself with icons.\n",
      "@name DIconBrowser:GetManual",
      "@wiki https://wiki.garrysmod.com/page/DIconBrowser/GetManual",
      "@param {DIconBrowser} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DIconBrowser",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetManual",
    "typings": [
      "(this: DIconBrowser): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the currently selected icon's file path.\n",
      "@name DIconBrowser:GetSelectedIcon",
      "@wiki https://wiki.garrysmod.com/page/DIconBrowser/GetSelectedIcon",
      "@param {DIconBrowser} this - no description",
      "@returns {string} - The currently selected icon's file path."
    ],
    "type": "class",
    "context": "DIconBrowser",
    "extends": [
      "DScrollPanel"
    ],
    "name": "GetSelectedIcon",
    "typings": [
      "(this: DIconBrowser): string"
    ]
  },
  {
    "comments": [
      "\nA simple unused search feature, hides all icons that do not contain given text in their file path.\n",
      "@name DIconBrowser:FilterByText",
      "@wiki https://wiki.garrysmod.com/page/DIconBrowser/FilterByText",
      "@param {DIconBrowser} this - no description",
      "@param {string} text - The text to search for",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconBrowser",
    "extends": [
      "DScrollPanel"
    ],
    "name": "FilterByText",
    "typings": [
      "(this: DIconBrowser, text: string): void"
    ]
  },
  {
    "comments": [
      "\nAutomatically called to fill the browser with icons. Will not work if @DIconBrowser:SetManual is set to true.\n",
      "@name DIconBrowser:Fill",
      "@wiki https://wiki.garrysmod.com/page/DIconBrowser/Fill",
      "@internal",
      "@param {DIconBrowser} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DIconBrowser",
    "extends": [
      "DScrollPanel"
    ],
    "name": "Fill",
    "typings": [
      "(this: DIconBrowser): void"
    ]
  },
  {
    "comments": [
      "\nBasically adds an URL to the history.\n",
      "@name DHTMLControls:UpdateHistory",
      "@wiki https://wiki.garrysmod.com/page/DHTMLControls/UpdateHistory",
      "@internal",
      "@param {DHTMLControls} this - no description",
      "@param {string} url - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTMLControls",
    "extends": [
      "Panel"
    ],
    "name": "UpdateHistory",
    "typings": [
      "(this: DHTMLControls, url: string): void"
    ]
  },
  {
    "comments": [
      "@name DHTMLControls:UpdateNavButtonStatus",
      "@wiki https://wiki.garrysmod.com/page/DHTMLControls/UpdateNavButtonStatus",
      "@internal",
      "@param {DHTMLControls} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTMLControls",
    "extends": [
      "Panel"
    ],
    "name": "UpdateNavButtonStatus",
    "typings": [
      "(this: DHTMLControls): void"
    ]
  },
  {
    "comments": [
      "@name DHTMLControls:StartedLoading",
      "@wiki https://wiki.garrysmod.com/page/DHTMLControls/StartedLoading",
      "@internal",
      "@param {DHTMLControls} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTMLControls",
    "extends": [
      "Panel"
    ],
    "name": "StartedLoading",
    "typings": [
      "(this: DHTMLControls): void"
    ]
  },
  {
    "comments": [
      "\nSets the @DHTML type element to control with these @DHTMLControls type.\n",
      "@name DHTMLControls:SetHTML",
      "@wiki https://wiki.garrysmod.com/page/DHTMLControls/SetHTML",
      "@param {DHTMLControls} this - no description",
      "@param {Panel} dhtml - The HTML panel",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTMLControls",
    "extends": [
      "Panel"
    ],
    "name": "SetHTML",
    "typings": [
      "(this: DHTMLControls, dhtml: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the navigation buttons.\n",
      "@name DHTMLControls:SetButtonColor",
      "@wiki https://wiki.garrysmod.com/page/DHTMLControls/SetButtonColor",
      "@param {DHTMLControls} this - no description",
      "@param {IColor} clr - A @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTMLControls",
    "extends": [
      "Panel"
    ],
    "name": "SetButtonColor",
    "typings": [
      "(this: DHTMLControls, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "@name DHTMLControls:FinishedLoading",
      "@wiki https://wiki.garrysmod.com/page/DHTMLControls/FinishedLoading",
      "@internal",
      "@param {DHTMLControls} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTMLControls",
    "extends": [
      "Panel"
    ],
    "name": "FinishedLoading",
    "typings": [
      "(this: DHTMLControls): void"
    ]
  },
  {
    "comments": [
      "\nStops the loading of the HTML panel's current page.\n[Category:HTML](https://wiki.garrysmod.com/page/Category:HTML)\n[Category:Awesomium](https://wiki.garrysmod.com/page/Category:Awesomium)\n",
      "@name DHTML:StopLoading",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/DHTML/StopLoading",
      "@param {DHTML} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTML",
    "extends": [
      "Awesomium"
    ],
    "name": "StopLoading",
    "typings": [
      "(this: DHTML): void"
    ]
  },
  {
    "comments": [
      "\nSets if the loaded window should display scrollbars when the webpage is larger than the viewing window. This is similar to the CSS *overflow* rule.\n",
      "@name DHTML:SetScrollbars",
      "@wiki https://wiki.garrysmod.com/page/DHTML/SetScrollbars",
      "@param {DHTML} this - no description",
      "@param {boolean} show - True if scrollbars should be visible.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTML",
    "extends": [
      "Awesomium"
    ],
    "name": "SetScrollbars",
    "typings": [
      "(this: DHTML, show: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDetermines whether the loaded page can run Lua code or not. See @DHTML type for how to run Lua from a DHTML window.\n",
      "@name DHTML:SetAllowLua",
      "@wiki https://wiki.garrysmod.com/page/DHTML/SetAllowLua",
      "@param {DHTML} this - no description",
      "@param {boolean} allow - Whether or not to allow Lua.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTML",
    "extends": [
      "Awesomium"
    ],
    "name": "SetAllowLua",
    "typings": [
      "(this: DHTML, allow?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nRuns/Executes a string as JavaScript code.\n",
      "@name DHTML:QueueJavascript",
      "@wiki https://wiki.garrysmod.com/page/DHTML/QueueJavascript",
      "@note This function does **NOT** evaluate expression (i.e. allow you to pass variables from JavaScript (JS) to Lua context).\nBecause a return value is nil/no value (a.k.a. void).\nIf you wish to pass/return values from JS to Lua, you may want to use @DHTML:AddFunction function to accomplish that job.",
      "@param {DHTML} this - no description",
      "@param {string} js - Specify JavaScript code to be executed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTML",
    "extends": [
      "Awesomium"
    ],
    "name": "QueueJavascript",
    "typings": [
      "(this: DHTML, js: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns if the loaded page can run Lua code, set by @DHTML:SetAllowLua\n",
      "@name DHTML:GetAllowLua",
      "@wiki https://wiki.garrysmod.com/page/DHTML/GetAllowLua",
      "@param {DHTML} this - no description",
      "@returns {boolean} - Whether or not Lua code can be called from the loaded page."
    ],
    "type": "class",
    "context": "DHTML",
    "extends": [
      "Awesomium"
    ],
    "name": "GetAllowLua",
    "typings": [
      "(this: DHTML): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled when the page inside the @DHTML type window runs *console.log*. This can also be called within the Lua environment to emulate *console.log*. If the contained message begins with *RUNLUA:* the following text will be executed as code within the Lua environment (this is how Lua is called from DHTML windows).\n",
      "@name DHTML:ConsoleMessage",
      "@wiki https://wiki.garrysmod.com/page/DHTML/ConsoleMessage",
      "@param {DHTML} this - no description",
      "@param {string} msg - The message to be logged (or Lua code to be executed; see above).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTML",
    "extends": [
      "Awesomium"
    ],
    "name": "ConsoleMessage",
    "typings": [
      "(this: DHTML, msg: string): void"
    ]
  },
  {
    "comments": [
      "\nRuns/Executes a string as JavaScript code.\n",
      "@name DHTML:Call",
      "@wiki https://wiki.garrysmod.com/page/DHTML/Call",
      "@note This function does **NOT** evaluate expression (i.e. allow you to pass variables from JavaScript (JS) to Lua context).\nBecause a return value is nil/no value (a.k.a. void).\nIf you wish to pass/return values from JS to Lua, you may want to use @DHTML:AddFunction function to accomplish that job.",
      "@note This function is an alias of @DHTML:QueueJavascript ([source](https://github.com/Facepunch/garrysmod/blob/master/garrysmod/lua/vgui/dhtml.lua#L62)).",
      "@param {DHTML} this - no description",
      "@param {string} js - Specify JavaScript code to be executed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTML",
    "extends": [
      "Awesomium"
    ],
    "name": "Call",
    "typings": [
      "(this: DHTML, js: string): void"
    ]
  },
  {
    "comments": [
      "\nDefines a Javascript function that when called will call a Lua callback.\n",
      "@name DHTML:AddFunction",
      "@wiki https://wiki.garrysmod.com/page/DHTML/AddFunction",
      "@note Must be called after the HTML document has fully loaded.",
      "@param {DHTML} this - no description",
      "@param {string} library - Library name of the JS function you are defining.",
      "@param {string} name - Name of the JS function you are defining.",
      "@param {function} callback - Function called when the JS function is called. Arguments passed to the JS function will be passed here.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHTML",
    "extends": [
      "Awesomium"
    ],
    "name": "AddFunction",
    "typings": [
      "(this: DHTML, library: string, name: string, callback: UnknownFunc): void"
    ]
  },
  {
    "comments": [
      "\nSame as @DDragBase:SetUseLiveDrag\n",
      "@name DHorizontalScroller:SetUseLiveDrag",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/SetUseLiveDrag",
      "@param {DHorizontalScroller} this - no description",
      "@param {boolean} newState - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "SetUseLiveDrag",
    "typings": [
      "(this: DHorizontalScroller, newState: boolean): void"
    ]
  },
  {
    "comments": [
      "@name DHorizontalScroller:SetShowDropTargets",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/SetShowDropTargets",
      "@param {DHorizontalScroller} this - no description",
      "@param {boolean} newState - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "SetShowDropTargets",
    "typings": [
      "(this: DHorizontalScroller, newState: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the scroll amount, automatically clamping the value.\n",
      "@name DHorizontalScroller:SetScroll",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/SetScroll",
      "@param {DHorizontalScroller} this - no description",
      "@param {number} scroll - The new scroll amount",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "SetScroll",
    "typings": [
      "(this: DHorizontalScroller, scroll: number): void"
    ]
  },
  {
    "comments": [
      "\nControls the spacing between elements of the horizontal scroller.\n",
      "@name DHorizontalScroller:SetOverlap",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/SetOverlap",
      "@param {DHorizontalScroller} this - no description",
      "@param {number} overlap - Overlap in pixels. Positive numbers will make elements *overlap* each other, negative will add spacing.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "SetOverlap",
    "typings": [
      "(this: DHorizontalScroller, overlap: number): void"
    ]
  },
  {
    "comments": [
      "\nScrolls the @DHorizontalScroller type to given child panel.\n",
      "@name DHorizontalScroller:ScrollToChild",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/ScrollToChild",
      "@param {DHorizontalScroller} this - no description",
      "@param {Panel} target - The target child panel. Must be a child of @DHorizontalScroller:GetCanvas",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "ScrollToChild",
    "typings": [
      "(this: DHorizontalScroller, target: Panel): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the panel is scrolled.\n",
      "@name DHorizontalScroller:OnDragModified",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/OnDragModified",
      "@param {DHorizontalScroller} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "OnDragModified",
    "typings": [
      "(this: DHorizontalScroller): void"
    ]
  },
  {
    "comments": [
      "\nSame as @DDragBase:MakeDroppable.\nTODO: Transclude or whatever to here?\n",
      "@name DHorizontalScroller:MakeDroppable",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/MakeDroppable",
      "@param {DHorizontalScroller} this - no description",
      "@param {string} name - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "MakeDroppable",
    "typings": [
      "(this: DHorizontalScroller, name: string): void"
    ]
  },
  {
    "comments": [
      "@name DHorizontalScroller:GetShowDropTargets",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/GetShowDropTargets",
      "@param {DHorizontalScroller} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "GetShowDropTargets",
    "typings": [
      "(this: DHorizontalScroller): boolean"
    ]
  },
  {
    "comments": [
      "@name DHorizontalScroller:GetOverlap",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/GetOverlap",
      "@param {DHorizontalScroller} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "GetOverlap",
    "typings": [
      "(this: DHorizontalScroller): number"
    ]
  },
  {
    "comments": [
      "\nReturns the internal canvas panel where the content of @DHorizontalScroller type are placed on.\n",
      "@name DHorizontalScroller:GetCanvas",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/GetCanvas",
      "@param {DHorizontalScroller} this - no description",
      "@returns {DDragBase} - The @DDragBase type panel."
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "GetCanvas",
    "typings": [
      "(this: DHorizontalScroller): DDragBase"
    ]
  },
  {
    "comments": [
      "\nAdds a panel to the @DHorizontalScroller type.\n",
      "@name DHorizontalScroller:AddPanel",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalScroller/AddPanel",
      "@param {DHorizontalScroller} this - no description",
      "@param {Panel} pnl - The panel to add. It will be automatically parented.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalScroller",
    "extends": [
      "Panel"
    ],
    "name": "AddPanel",
    "typings": [
      "(this: DHorizontalScroller, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "@name DHorizontalDivider:StartGrab",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/StartGrab",
      "@internal",
      "@param {DHorizontalDivider} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "StartGrab",
    "typings": [
      "(this: DHorizontalDivider): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum width of the right side\n",
      "@name DHorizontalDivider:SetRightMin",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/SetRightMin",
      "@param {DHorizontalDivider} this - no description",
      "@param {number} minWidth - The minimum width of the right side",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetRightMin",
    "typings": [
      "(this: DHorizontalDivider, minWidth: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the right side content\n",
      "@name DHorizontalDivider:SetRight",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/SetRight",
      "@param {DHorizontalDivider} this - no description",
      "@param {Panel} pnl - The right side content",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetRight",
    "typings": [
      "(this: DHorizontalDivider, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the middle content, over the draggable divider bar panel.\n",
      "@name DHorizontalDivider:SetMiddle",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/SetMiddle",
      "@param {DHorizontalDivider} this - no description",
      "@param {Panel} middle - The middle content",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetMiddle",
    "typings": [
      "(this: DHorizontalDivider, middle: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the current/starting width of the left side.\nThe width of the right side is automatically calculated by subtracting this from the total width of the @DHorizontalDivider type.\n",
      "@name DHorizontalDivider:SetLeftWidth",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/SetLeftWidth",
      "@param {DHorizontalDivider} this - no description",
      "@param {number} width - The current/starting width of the left side",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetLeftWidth",
    "typings": [
      "(this: DHorizontalDivider, width: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum width of the left side\n",
      "@name DHorizontalDivider:SetLeftMin",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/SetLeftMin",
      "@param {DHorizontalDivider} this - no description",
      "@param {number} minWidth - The minimum width of the left side",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetLeftMin",
    "typings": [
      "(this: DHorizontalDivider, minWidth: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the left side content of the @DHorizontalDivider type.\n",
      "@name DHorizontalDivider:SetLeft",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/SetLeft",
      "@param {DHorizontalDivider} this - no description",
      "@param {Panel} pnl - The panel to set as the left side",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetLeft",
    "typings": [
      "(this: DHorizontalDivider, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the local X coordinate of where the player started dragging the thing\n",
      "@name DHorizontalDivider:SetHoldPos",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/SetHoldPos",
      "@internal",
      "@param {DHorizontalDivider} this - no description",
      "@param {number} x - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetHoldPos",
    "typings": [
      "(this: DHorizontalDivider, x: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the player is dragging the divider or not\n",
      "@name DHorizontalDivider:SetDragging",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/SetDragging",
      "@internal",
      "@param {DHorizontalDivider} this - no description",
      "@param {boolean} dragonot - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetDragging",
    "typings": [
      "(this: DHorizontalDivider, dragonot: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the width of the horizontal divider bar.\n",
      "@name DHorizontalDivider:SetDividerWidth",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/SetDividerWidth",
      "@param {DHorizontalDivider} this - no description",
      "@param {number} width - The width of the horizontal divider bar.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "SetDividerWidth",
    "typings": [
      "(this: DHorizontalDivider, width: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the minimum width of the right side, set by @DHorizontalDivider:SetRightMin.\n",
      "@name DHorizontalDivider:GetRightMin",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/GetRightMin",
      "@param {DHorizontalDivider} this - no description",
      "@returns {number} - The minimum width of the right side"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetRightMin",
    "typings": [
      "(this: DHorizontalDivider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the right side content\n",
      "@name DHorizontalDivider:GetRight",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/GetRight",
      "@param {DHorizontalDivider} this - no description",
      "@returns {Panel} - The right side content"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetRight",
    "typings": [
      "(this: DHorizontalDivider): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the middle content, set by @DHorizontalDivider:SetMiddle.\n",
      "@name DHorizontalDivider:GetMiddle",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/GetMiddle",
      "@param {DHorizontalDivider} this - no description",
      "@returns {Panel} - The middle content"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetMiddle",
    "typings": [
      "(this: DHorizontalDivider): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the current width of the left side, set by @DHorizontalDivider:SetLeftWidth or by the user.\n",
      "@name DHorizontalDivider:GetLeftWidth",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/GetLeftWidth",
      "@param {DHorizontalDivider} this - no description",
      "@returns {number} - The current width of the left side"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetLeftWidth",
    "typings": [
      "(this: DHorizontalDivider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the minimum width of the left side, set by @DHorizontalDivider:SetLeftMin.\n",
      "@name DHorizontalDivider:GetLeftMin",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/GetLeftMin",
      "@param {DHorizontalDivider} this - no description",
      "@returns {number} - The minimum width of the left side"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetLeftMin",
    "typings": [
      "(this: DHorizontalDivider): number"
    ]
  },
  {
    "comments": [
      "\nReturns the left side content of the @DHorizontalDivider type\n",
      "@name DHorizontalDivider:GetLeft",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/GetLeft",
      "@param {DHorizontalDivider} this - no description",
      "@returns {Panel} - The content on the left side"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetLeft",
    "typings": [
      "(this: DHorizontalDivider): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns the local X coordinate of where the player started dragging the thing\n",
      "@name DHorizontalDivider:GetHoldPos",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/GetHoldPos",
      "@internal",
      "@param {DHorizontalDivider} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetHoldPos",
    "typings": [
      "(this: DHorizontalDivider): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the player is currently dragging the middle divider bar.\n",
      "@name DHorizontalDivider:GetDragging",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/GetDragging",
      "@param {DHorizontalDivider} this - no description",
      "@returns {boolean} - Whether or not the player is currently dragging the middle divider bar."
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetDragging",
    "typings": [
      "(this: DHorizontalDivider): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the width of the horizontal divider bar, set by @DHorizontalDivider:SetDividerWidth.\n",
      "@name DHorizontalDivider:GetDividerWidth",
      "@wiki https://wiki.garrysmod.com/page/DHorizontalDivider/GetDividerWidth",
      "@param {DHorizontalDivider} this - no description",
      "@returns {number} - The width of the horizontal divider bar"
    ],
    "type": "class",
    "context": "DHorizontalDivider",
    "extends": [
      "DPanel"
    ],
    "name": "GetDividerWidth",
    "typings": [
      "(this: DHorizontalDivider): number"
    ]
  },
  {
    "comments": [
      "\nSorts the items in the grid. Does not visually update the grid, use @Panel:InvalidateLayout for that.\n",
      "@name DGrid:SortByMember",
      "@wiki https://wiki.garrysmod.com/page/DGrid/SortByMember",
      "@param {DGrid} this - no description",
      "@param {string} key - A key in the panel from @DGrid:GetItems. The key's value must be numeric.",
      "@param {boolean} desc - True for descending order, false for ascending.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DGrid",
    "extends": [
      "Panel"
    ],
    "name": "SortByMember",
    "typings": [
      "(this: DGrid, key: string, desc?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the height of each row.\nThe cell panels (grid items) will not be resized or centered.\n",
      "@name DGrid:SetRowHeight",
      "@wiki https://wiki.garrysmod.com/page/DGrid/SetRowHeight",
      "@param {DGrid} this - no description",
      "@param {number} rowHeight - The height of each row",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DGrid",
    "extends": [
      "Panel"
    ],
    "name": "SetRowHeight",
    "typings": [
      "(this: DGrid, rowHeight: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the width of each column.\nThe cell panels (grid items) will not be resized or centered.\n",
      "@name DGrid:SetColWide",
      "@wiki https://wiki.garrysmod.com/page/DGrid/SetColWide",
      "@param {DGrid} this - no description",
      "@param {number} colWidth - The width of each column.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DGrid",
    "extends": [
      "Panel"
    ],
    "name": "SetColWide",
    "typings": [
      "(this: DGrid, colWidth: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the number of columns this panel should have.\nThe @DGrid type will resize its width to match this value.\n",
      "@name DGrid:SetCols",
      "@wiki https://wiki.garrysmod.com/page/DGrid/SetCols",
      "@param {DGrid} this - no description",
      "@param {number} cols - The desired number of columns",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DGrid",
    "extends": [
      "Panel"
    ],
    "name": "SetCols",
    "typings": [
      "(this: DGrid, cols: number): void"
    ]
  },
  {
    "comments": [
      "\nRemoves given panel from the @DGrid:GetItems.\n",
      "@name DGrid:RemoveItem",
      "@wiki https://wiki.garrysmod.com/page/DGrid/RemoveItem",
      "@param {DGrid} this - no description",
      "@param {Panel} item - Item to remove from the grid",
      "@param {boolean} bDontDelete - If set to true, the actual panel will not be removed via @Panel:Remove.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DGrid",
    "extends": [
      "Panel"
    ],
    "name": "RemoveItem",
    "typings": [
      "(this: DGrid, item: Panel, bDontDelete?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns the height of each row of the @DGrid type, which is set by @DGrid:SetRowHeight.\n",
      "@name DGrid:GetRowHeight",
      "@wiki https://wiki.garrysmod.com/page/DGrid/GetRowHeight",
      "@param {DGrid} this - no description",
      "@returns {number} - The height of each row"
    ],
    "type": "class",
    "context": "DGrid",
    "extends": [
      "Panel"
    ],
    "name": "GetRowHeight",
    "typings": [
      "(this: DGrid): number"
    ]
  },
  {
    "comments": [
      "\nReturns a list of panels in the grid.\n",
      "@name DGrid:GetItems",
      "@wiki https://wiki.garrysmod.com/page/DGrid/GetItems",
      "@param {DGrid} this - no description",
      "@returns {Panel[]} - A list of @Panel types."
    ],
    "type": "class",
    "context": "DGrid",
    "extends": [
      "Panel"
    ],
    "name": "GetItems",
    "typings": [
      "(this: DGrid): Panel[]"
    ]
  },
  {
    "comments": [
      "\nReturns the width of each column of the @DGrid type, which is set by @DGrid:SetColWide.\n",
      "@name DGrid:GetColWide",
      "@wiki https://wiki.garrysmod.com/page/DGrid/GetColWide",
      "@param {DGrid} this - no description",
      "@returns {number} - The width of each column"
    ],
    "type": "class",
    "context": "DGrid",
    "extends": [
      "Panel"
    ],
    "name": "GetColWide",
    "typings": [
      "(this: DGrid): number"
    ]
  },
  {
    "comments": [
      "\nReturns the number of columns of this @DGrid type. Set by @DGrid:SetCols.\n",
      "@name DGrid:GetCols",
      "@wiki https://wiki.garrysmod.com/page/DGrid/GetCols",
      "@param {DGrid} this - no description",
      "@returns {number} - The number of columns of this @DGrid type"
    ],
    "type": "class",
    "context": "DGrid",
    "extends": [
      "Panel"
    ],
    "name": "GetCols",
    "typings": [
      "(this: DGrid): number"
    ]
  },
  {
    "comments": [
      "\nAdds a new item to the grid.\n",
      "@name DGrid:AddItem",
      "@wiki https://wiki.garrysmod.com/page/DGrid/AddItem",
      "@param {DGrid} this - no description",
      "@param {DGrid} item - The item to add. It will be forced visible and parented to the @DGrid type.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DGrid",
    "extends": [
      "Panel"
    ],
    "name": "AddItem",
    "typings": [
      "(this: DGrid, item: DGrid): void"
    ]
  },
  {
    "comments": [
      "\nDetermines whether the DFrame's control box (close, minimise and maximise buttons) is displayed.\n",
      "@name DFrame:ShowCloseButton",
      "@wiki https://wiki.garrysmod.com/page/DFrame/ShowCloseButton",
      "@param {DFrame} this - no description",
      "@param {boolean} show - *false* hides the control box; this is *true* by default.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "ShowCloseButton",
    "typings": [
      "(this: DFrame, show: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the title of the frame.\n",
      "@name DFrame:SetTitle",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetTitle",
      "@param {DFrame} this - no description",
      "@param {string} title - New title of the frame.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetTitle",
    "typings": [
      "(this: DFrame, title: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the @DFrame type can be resized by the user.\nThis is achieved by clicking and dragging in the bottom right corner of the frame.\nYou can set the minimum size using @DFrame:SetMinWidth and @DFrame:SetMinHeight.\n",
      "@name DFrame:SetSizable",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetSizable",
      "@param {DFrame} this - no description",
      "@param {boolean} sizeable - Whether the frame should be resizeable or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetSizable",
    "typings": [
      "(this: DFrame, sizeable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the DFrame is restricted to the boundaries of the screen resolution.\n",
      "@name DFrame:SetScreenLock",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetScreenLock",
      "@param {DFrame} this - no description",
      "@param {boolean} lock - If *true*, the frame cannot be dragged outside of the screen bounds",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetScreenLock",
    "typings": [
      "(this: DFrame, lock: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the shadow effect bordering the DFrame should be drawn.\n",
      "@name DFrame:SetPaintShadow",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetPaintShadow",
      "@param {DFrame} this - no description",
      "@param {boolean} shouldPaint - Whether or not to draw the shadow. This is *true* by default.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetPaintShadow",
    "typings": [
      "(this: DFrame, shouldPaint: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum width the DFrame can be resized to by the user.\nThis only applies to users attempting to resize the frame; @Panel:SetWide and similar methods will not be affected. You must call @DFrame:SetSizable before the user can resize the frame.\n",
      "@name DFrame:SetMinWidth",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetMinWidth",
      "@param {DFrame} this - no description",
      "@param {number} minW - The minimum width the user can resize the frame to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetMinWidth",
    "typings": [
      "(this: DFrame, minW: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the minimum height the DFrame can be resized to by the user.\nThis only applies to users attempting to resize the frame; @Panel:SetTall and similar methods will not be affected. You must call @DFrame:SetSizable before the user can resize the frame.\n",
      "@name DFrame:SetMinHeight",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetMinHeight",
      "@param {DFrame} this - no description",
      "@param {number} minH - The minimum height the user can resize the frame to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetMinHeight",
    "typings": [
      "(this: DFrame, minH: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the frame is part of a derma menu or not.\nIf this is set to *true*, @CloseDermaMenus function will not be called when the frame is clicked, and thus any open menus will remain open.\n",
      "@name DFrame:SetIsMenu",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetIsMenu",
      "@param {DFrame} this - no description",
      "@param {boolean} isMenu - Whether or not this frame is a menu component.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetIsMenu",
    "typings": [
      "(this: DFrame, isMenu: boolean): void"
    ]
  },
  {
    "comments": [
      "\nAdds or removes an icon on the left of the @DFrame type's title.\n",
      "@name DFrame:SetIcon",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetIcon",
      "@param {DFrame} this - no description",
      "@param {string | SpawnIcon} path - Set to nil to remove the icon.\nOtherwise, set to file path to create the icon.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetIcon",
    "typings": [
      "(this: DFrame, path: string | SpawnIcon): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the frame should be draggable by the user. The DFrame can only be dragged from its title bar.\n",
      "@name DFrame:SetDraggable",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetDraggable",
      "@param {DFrame} this - no description",
      "@param {boolean} draggable - Whether to be draggable or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetDraggable",
    "typings": [
      "(this: DFrame, draggable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDetermines whether or not the DFrame is removed when it is closed with @DFrame:Close.\n",
      "@name DFrame:SetDeleteOnClose",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetDeleteOnClose",
      "@param {DFrame} this - no description",
      "@param {boolean} shouldDelete - Whether or not to delete the frame on close. This is *true* by default.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetDeleteOnClose",
    "typings": [
      "(this: DFrame, shouldDelete: boolean): void"
    ]
  },
  {
    "comments": [
      "\nBlurs background behind the frame.\n",
      "@name DFrame:SetBackgroundBlur",
      "@wiki https://wiki.garrysmod.com/page/DFrame/SetBackgroundBlur",
      "@param {DFrame} this - no description",
      "@param {boolean} blur - Whether or not to create background blur or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "SetBackgroundBlur",
    "typings": [
      "(this: DFrame, blur: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the DFrame is closed with @DFrame:Close. This applies when the *close* button in the DFrame's control box is clicked.\nThis is **not** called when the DFrame is removed with @Panel:Remove.\n",
      "@name DFrame:OnClose",
      "@wiki https://wiki.garrysmod.com/page/DFrame/OnClose",
      "@param {DFrame} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "OnClose",
    "typings": [
      "(this: DFrame): void"
    ]
  },
  {
    "comments": [
      "\nDetermines if the frame or one of its children has the screen focus.\n",
      "@name DFrame:IsActive",
      "@wiki https://wiki.garrysmod.com/page/DFrame/IsActive",
      "@param {DFrame} this - no description",
      "@returns {boolean} - Whether or not the frame has focus."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "IsActive",
    "typings": [
      "(this: DFrame): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the title of the frame.\n",
      "@name DFrame:GetTitle",
      "@wiki https://wiki.garrysmod.com/page/DFrame/GetTitle",
      "@param {DFrame} this - no description",
      "@returns {string} - Title of the frame."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "GetTitle",
    "typings": [
      "(this: DFrame): string"
    ]
  },
  {
    "comments": [
      "\nGets whether or not the DFrame can be resized by the user.\nThis is achieved by clicking and dragging in the bottom right corner of the frame.\n",
      "@name DFrame:GetSizable",
      "@wiki https://wiki.garrysmod.com/page/DFrame/GetSizable",
      "@param {DFrame} this - no description",
      "@returns {boolean} - Whether the frame can be resized or not."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "GetSizable",
    "typings": [
      "(this: DFrame): boolean"
    ]
  },
  {
    "comments": [
      "\nGets whether or not the DFrame is restricted to the boundaries of the screen resolution.\n",
      "@name DFrame:GetScreenLock",
      "@wiki https://wiki.garrysmod.com/page/DFrame/GetScreenLock",
      "@param {DFrame} this - no description",
      "@returns {boolean} - Whether or not the frame is restricted."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "GetScreenLock",
    "typings": [
      "(this: DFrame): boolean"
    ]
  },
  {
    "comments": [
      "\nGets whether or not the shadow effect bordering the DFrame is being drawn.\n",
      "@name DFrame:GetPaintShadow",
      "@wiki https://wiki.garrysmod.com/page/DFrame/GetPaintShadow",
      "@param {DFrame} this - no description",
      "@returns {boolean} - Whether or not the shadow is being drawn."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "GetPaintShadow",
    "typings": [
      "(this: DFrame): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the minimum width the DFrame can be resized to by the user.\nYou must call @DFrame:SetSizable before the user can resize the frame.\n",
      "@name DFrame:GetMinWidth",
      "@wiki https://wiki.garrysmod.com/page/DFrame/GetMinWidth",
      "@param {DFrame} this - no description",
      "@returns {number} - The minimum width the user can resize the frame to."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "GetMinWidth",
    "typings": [
      "(this: DFrame): number"
    ]
  },
  {
    "comments": [
      "\nGets the minimum height the DFrame can be resized to by the user.\nYou must call @DFrame:SetSizable before the user can resize the frame.\n",
      "@name DFrame:GetMinHeight",
      "@wiki https://wiki.garrysmod.com/page/DFrame/GetMinHeight",
      "@param {DFrame} this - no description",
      "@returns {number} - The minimum height the user can resize the frame to."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "GetMinHeight",
    "typings": [
      "(this: DFrame): number"
    ]
  },
  {
    "comments": [
      "\nGets whether or not the frame is part of a derma menu. This is set with @DFrame:SetIsMenu.\n",
      "@name DFrame:GetIsMenu",
      "@wiki https://wiki.garrysmod.com/page/DFrame/GetIsMenu",
      "@param {DFrame} this - no description",
      "@returns {boolean} - Whether or not this frame is a menu component."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "GetIsMenu",
    "typings": [
      "(this: DFrame): boolean"
    ]
  },
  {
    "comments": [
      "\nGets whether or not the frame is draggable by the user.\n",
      "@name DFrame:GetDraggable",
      "@wiki https://wiki.garrysmod.com/page/DFrame/GetDraggable",
      "@param {DFrame} this - no description",
      "@returns {boolean} - Whether the frame is draggable or not."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "GetDraggable",
    "typings": [
      "(this: DFrame): boolean"
    ]
  },
  {
    "comments": [
      "\nDetermines whether or not the DFrame will be removed when it is closed. This is set with @DFrame:SetDeleteOnClose.\n",
      "@name DFrame:GetDeleteOnClose",
      "@wiki https://wiki.garrysmod.com/page/DFrame/GetDeleteOnClose",
      "@param {DFrame} this - no description",
      "@returns {boolean} - Whether or not the frame will be removed on close."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "GetDeleteOnClose",
    "typings": [
      "(this: DFrame): boolean"
    ]
  },
  {
    "comments": [
      "\nGets whether the background behind the frame is being blurred.\n",
      "@name DFrame:GetBackgroundBlur",
      "@wiki https://wiki.garrysmod.com/page/DFrame/GetBackgroundBlur",
      "@param {DFrame} this - no description",
      "@returns {boolean} - Whether or not background blur is enabled."
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "GetBackgroundBlur",
    "typings": [
      "(this: DFrame): boolean"
    ]
  },
  {
    "comments": [
      "\nHides or removes the DFrame, and calls @DFrame:OnClose.\nTo set whether the frame is hidden or removed, use @DFrame:SetDeleteOnClose.\n",
      "@name DFrame:Close",
      "@wiki https://wiki.garrysmod.com/page/DFrame/Close",
      "@param {DFrame} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "Close",
    "typings": [
      "(this: DFrame): void"
    ]
  },
  {
    "comments": [
      "\nCenters the frame relative to the whole screen and invalidates its layout. This overrides @Panel:Center.\n",
      "@name DFrame:Center",
      "@wiki https://wiki.garrysmod.com/page/DFrame/Center",
      "@param {DFrame} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFrame",
    "extends": [
      "EditablePanel"
    ],
    "name": "Center",
    "typings": [
      "(this: DFrame): void"
    ]
  },
  {
    "comments": [
      "\nAdds a @DTextEntry type to a @DForm type\n",
      "@name DForm:TextEntry",
      "@wiki https://wiki.garrysmod.com/page/DForm/TextEntry",
      "@param {DForm} this - no description",
      "@param {string} label - The label to be next to the text entry",
      "@param {string} convar - The console variable to be changed when the text entry is changed",
      "@returns {DTextEntry} - The created @DTextEntry type",
      "@returns {DLabel} - The created @DLabel type",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "TextEntry",
    "typings": [
      "(this: DForm, label: string, convar: string): [DTextEntry, DLabel]"
    ]
  },
  {
    "comments": [
      "\nSets the title (header) name of the DForm. This is *Label* until set.\n",
      "@name DForm:SetName",
      "@wiki https://wiki.garrysmod.com/page/DForm/SetName",
      "@param {DForm} this - no description",
      "@param {string} name - The new header name.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "SetName",
    "typings": [
      "(this: DForm, name: string): void"
    ]
  },
  {
    "comments": [
      "\nDoes nothing.\n",
      "@name DForm:Rebuild",
      "@wiki https://wiki.garrysmod.com/page/DForm/Rebuild",
      "@param {DForm} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "Rebuild",
    "typings": [
      "(this: DForm): void"
    ]
  },
  {
    "comments": [
      "\nCreates a @DPanelSelect type and docks it to the top of the DForm.\n",
      "@name DForm:PanelSelect",
      "@wiki https://wiki.garrysmod.com/page/DForm/PanelSelect",
      "@param {DForm} this - no description",
      "@returns {Panel} - The created DPanelSelect."
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "PanelSelect",
    "typings": [
      "(this: DForm): Panel"
    ]
  },
  {
    "comments": [
      "\nAdds a @DNumSlider type onto the @DForm type\n",
      "@name DForm:NumSlider",
      "@wiki https://wiki.garrysmod.com/page/DForm/NumSlider",
      "@param {DForm} this - no description",
      "@param {string} label - The label of the DNumSlider",
      "@param {string} convar - The console variable to change when the slider is changed",
      "@param {number} min - The minimum value of the slider",
      "@param {number} max - The maximum value of the slider",
      "@param {number} decimals - The number of decimals to allow on the slider. (Optional)",
      "@returns {DNumSlider} - The created @DNumSlider type"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "NumSlider",
    "typings": [
      "(this: DForm, label: string, convar: string, min: number, max: number, decimals?: number): DNumSlider"
    ]
  },
  {
    "comments": [
      "\nAdds a @DListBox type onto the @DForm type\n",
      "@name DForm:ListBox",
      "@wiki https://wiki.garrysmod.com/page/DForm/ListBox",
      "@param {DForm} this - no description",
      "@param {string} label - The label to set on the DListBox",
      "@returns {DListBox} - The created @DListBox type",
      "@returns {DLabel} - The created @DLabel type",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "ListBox",
    "typings": [
      "(this: DForm, label: string): [DListBox, DLabel]"
    ]
  },
  {
    "comments": [
      "\nAdds a @DNumberWang type onto the @DForm type\n",
      "@name DForm:NumberWang",
      "@wiki https://wiki.garrysmod.com/page/DForm/NumberWang",
      "@param {DForm} this - no description",
      "@param {string} label - The label to be placed next to the DNumberWang",
      "@param {string} convar - The console variable to change when the slider is changed",
      "@param {number} min - The minimum value of the slider",
      "@param {number} max - The maximum value of the slider",
      "@param {number} decimals - The number of decimals to allow in the slider (Optional)",
      "@returns {DNumberWang} - The created @DNumberWang type",
      "@returns {DLabel} - The created @DLabel type",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "NumberWang",
    "typings": [
      "(this: DForm, label: string, convar: string, min: number, max: number, decimals?: number): [DNumberWang, DLabel]"
    ]
  },
  {
    "comments": [
      "\nAdds a @DLabel type onto the @DForm type as a helper\n",
      "@name DForm:Help",
      "@wiki https://wiki.garrysmod.com/page/DForm/Help",
      "@param {DForm} this - no description",
      "@param {string} help - The help message to be displayed",
      "@returns {DLabel} - The created @DLabel type"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "Help",
    "typings": [
      "(this: DForm, help: string): DLabel"
    ]
  },
  {
    "comments": [
      "\nAdds a @DLabel type onto the @DForm type. Unlike @DForm:Help, this is indented and is colored blue, depending on the derma skin.\n",
      "@name DForm:ControlHelp",
      "@wiki https://wiki.garrysmod.com/page/DForm/ControlHelp",
      "@param {DForm} this - no description",
      "@param {string} help - The help message to be displayed.",
      "@returns {DLabel} - The created @DLabel type"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "ControlHelp",
    "typings": [
      "(this: DForm, help: string): DLabel"
    ]
  },
  {
    "comments": [
      "\nAdds a @DComboBox type onto the @DForm type\n",
      "@name DForm:ComboBox",
      "@wiki https://wiki.garrysmod.com/page/DForm/ComboBox",
      "@param {DForm} this - no description",
      "@param {string} title - Text to the left of the combo box",
      "@param {string} convar - Console variable to change when the user selects something from the dropdown.",
      "@returns {DComboBox} - The created @DComboBox type",
      "@returns {DLabel} - The created @DLabel type",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "ComboBox",
    "typings": [
      "(this: DForm, title: string, convar: string): [DComboBox, DLabel]"
    ]
  },
  {
    "comments": [
      "\nAdds a @DCheckBoxLabel type onto the @DForm type\n",
      "@name DForm:CheckBox",
      "@wiki https://wiki.garrysmod.com/page/DForm/CheckBox",
      "@param {DForm} this - no description",
      "@param {string} label - The label to be set next to the check box",
      "@param {string} convar - The console variable to change when this is changed",
      "@returns {DCheckBoxLabel} - The created @DCheckBoxLabel type"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "CheckBox",
    "typings": [
      "(this: DForm, label: string, convar: string): DCheckBoxLabel"
    ]
  },
  {
    "comments": [
      "\nAdds a @DButton type onto the @DForm type\n",
      "@name DForm:Button",
      "@wiki https://wiki.garrysmod.com/page/DForm/Button",
      "@param {DForm} this - no description",
      "@param {string} text - The text on the button",
      "@param {string} concmd - The concommand to run when the button is clicked",
      "@param {any[]} ...concmd_args - The arguments to pass on to the concommand when the button is clicked",
      "@returns {DButton} - The created @DButton type"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "Button",
    "typings": [
      "(this: DForm, text: string, concmd: string, ...concmd_args: any[]): DButton"
    ]
  },
  {
    "comments": [
      "\nAdds one or two items to the DForm.\nIf this method is called with only one argument, it is added to the bottom of the form. If two arguments are passed, they are placed side-by-side at the bottom of the form.\nInternally, this function is used by the various DForm functions to, for example, add labels to the left of buttons.\n",
      "@name DForm:AddItem",
      "@wiki https://wiki.garrysmod.com/page/DForm/AddItem",
      "@param {DForm} this - no description",
      "@param {Panel} left - Left-hand element to add to the DForm.",
      "@param {Panel} right - Right-hand element to add to the DForm.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DForm",
    "extends": [
      "DCollapsibleCategory"
    ],
    "name": "AddItem",
    "typings": [
      "(this: DForm, left: Panel, right?: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSorts the file list.\n",
      "@name DFileBrowser:SortFiles",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SortFiles",
      "@note This is only functional when not using the model viewer. See @DFileBrowser:SetModels",
      "@param {DFileBrowser} this - no description",
      "@param {boolean} descending - The sort order. *true* for descending (z-a), *false* for ascending (a-z).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SortFiles",
    "typings": [
      "(this: DFileBrowser, descending?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nBuilds the file or icon list for the current directory.\nYou should use @DFileBrowser:SetCurrentFolder to change the directory.\n",
      "@name DFileBrowser:ShowFolder",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/ShowFolder",
      "@internal",
      "@param {DFileBrowser} this - no description",
      "@param {string} currentDir - The directory to populate the list from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "ShowFolder",
    "typings": [
      "(this: DFileBrowser, currentDir: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled to set up the @DTree type by @DFileBrowser:Setup.\n",
      "@name DFileBrowser:SetupTree",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SetupTree",
      "@internal",
      "@param {DFileBrowser} this - no description",
      "@returns {boolean} - Whether or not the tree was set up successfully."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetupTree",
    "typings": [
      "(this: DFileBrowser): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled to set up the @DListView type or @DIconBrowser type by @DFileBrowser:Setup.\nThe icon browser is used when in models mode. See @DFileBrowser:SetModels.\n",
      "@name DFileBrowser:SetupTree",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SetupFiles",
      "@internal",
      "@param {DFileBrowser} this - no description",
      "@returns {boolean} - Whether or not the files pane was set up successfully."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetupTree",
    "typings": [
      "(this: DFileBrowser): boolean"
    ]
  },
  {
    "comments": [
      "\nCalled to set up the @DTree type and file viewer when a base path has been set.\nCalls @DFileBrowser:SetupTree and @DFileBrowser:SetupFiles.\n",
      "@name DFileBrowser:Setup",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/Setup",
      "@internal",
      "@param {DFileBrowser} this - no description",
      "@returns {boolean} - Whether or not the variables needed to set up have been defined."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "Setup",
    "typings": [
      "(this: DFileBrowser): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the search filter for the file tree.\nThis accepts the same wildcards as @file.Find.\n",
      "@name DFileBrowser:SetSearch",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SetSearch",
      "@param {DFileBrowser} this - no description",
      "@param {string} filter - The filter to use on the file tree.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetSearch",
    "typings": [
      "(this: DFileBrowser, filter?: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the access path for the file tree. This is set to *GAME* by default.\nSee @file.Read for how paths work.\n",
      "@name DFileBrowser:SetPath",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SetPath",
      "@param {DFileBrowser} this - no description",
      "@param {string} path - The access path i.e. \"GAME\", \"LUA\", \"DATA\" etc.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetPath",
    "typings": [
      "(this: DFileBrowser, path: string): void"
    ]
  },
  {
    "comments": [
      "\nOpens or closes the file tree.\n",
      "@name DFileBrowser:SetOpen",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SetOpen",
      "@param {DFileBrowser} this - no description",
      "@param {boolean} open - *true* to open the tree, *false* to close it.",
      "@param {boolean} useAnim - If *true*, the @DTree type's open/close animation is used.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetOpen",
    "typings": [
      "(this: DFileBrowser, open?: boolean, useAnim?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the name to use for the file tree.\n",
      "@name DFileBrowser:SetName",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SetName",
      "@param {DFileBrowser} this - no description",
      "@param {string} treeName - The name for the root of the file tree. Passing no value causes this to be the base folder name. See @DFileBrowser:SetBaseFolder.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetName",
    "typings": [
      "(this: DFileBrowser, treeName?: string): void"
    ]
  },
  {
    "comments": [
      "\nEnables or disables the model viewer mode. In this mode, files are displayed as @SpawnIcon types instead of a list.\n",
      "@name DFileBrowser:SetModels",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SetModels",
      "@note This should only be used for *.mdl* files; the spawn icons will display error models for others. See @DFileBrowser:SetFileTypes",
      "@param {DFileBrowser} this - no description",
      "@param {boolean} showModels - Whether or not to display files using @SpawnIcon types.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetModels",
    "typings": [
      "(this: DFileBrowser, showModels?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the file type filter for the file list.\nThis accepts the same file extension wildcards as @file.Find.\n",
      "@name DFileBrowser:SetFileTypes",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SetFileTypes",
      "@param {DFileBrowser} this - no description",
      "@param {string} fileTypes - A list of file types to display, separated by spaces e.g.\n```\"*.lua *.txt *.mdl\"```",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetFileTypes",
    "typings": [
      "(this: DFileBrowser, fileTypes?: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the directory/folder from which to display the file list.\n",
      "@name DFileBrowser:SetPath",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SetCurrentFolder",
      "@param {DFileBrowser} this - no description",
      "@param {string} currentDir - The directory to display files from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetPath",
    "typings": [
      "(this: DFileBrowser, currentDir: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the root directory/folder of the file tree.\nThis needs to be set for the file tree to be displayed.\n",
      "@name DFileBrowser:SetBaseFolder",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/SetBaseFolder",
      "@param {DFileBrowser} this - no description",
      "@param {string} baseDir - The path to the folder to use as the root.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetBaseFolder",
    "typings": [
      "(this: DFileBrowser, baseDir: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a file is selected.\n",
      "@name DFileBrowser:OnSelect",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/OnSelect",
      "@param {DFileBrowser} this - no description",
      "@param {string} filePath - The path to the file that was selected.",
      "@param {DListView_Line | SpawnIcon} selectedPanel - The panel that was clicked to select this file.\nThis will either be a @DListView_Line type or @SpawnIcon type depending on whether the model viewer mode is enabled. See @DFileBrowser:SetModels.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "OnSelect",
    "typings": [
      "(this: DFileBrowser, filePath: string, selectedPanel: DListView_Line | SpawnIcon): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a file is right-clicked.\n",
      "@name DFileBrowser:OnRightClick",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/OnRightClick",
      "@note When not in model viewer mode, @DFileBrowser:OnSelect will also be called if the file is not already selected.",
      "@param {DFileBrowser} this - no description",
      "@param {string} filePath - The path to the file that was right-clicked.",
      "@param {DListView_Line | SpawnIcon} selectedPanel - The panel that was right-clicked to select this file.\nThis will either be a @DListView_Line type or @SpawnIcon type depending on whether the model viewer mode is enabled. See @DFileBrowser:SetModels.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "OnRightClick",
    "typings": [
      "(this: DFileBrowser, filePath: string, selectedPanel: DListView_Line | SpawnIcon): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a file is double-clicked.\n",
      "@name DFileBrowser:OnDoubleClick",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/OnDoubleClick",
      "@note Double-clicking a file or icon will trigger **both** this and @DFileBrowser:OnSelect.",
      "@param {DFileBrowser} this - no description",
      "@param {string} filePath - The path to the file that was double-clicked.",
      "@param {DListView_Line | SpawnIcon} selectedPanel - The panel that was double-clicked to select this file.\nThis will either be a @DListView_Line type or @SpawnIcon type depending on whether the model viewer mode is enabled. See @DFileBrowser:SetModels.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "OnDoubleClick",
    "typings": [
      "(this: DFileBrowser, filePath: string, selectedPanel: DListView_Line | SpawnIcon): void"
    ]
  },
  {
    "comments": [
      "\nReturns the current search filter on the file tree.\n",
      "@name DFileBrowser:GetSearch",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/GetSearch",
      "@param {DFileBrowser} this - no description",
      "@returns {string} - The filter in use on the file tree."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "GetSearch",
    "typings": [
      "(this: DFileBrowser): string"
    ]
  },
  {
    "comments": [
      "\nReturns the access path of the file tree. This is *GAME* unless changed with @DFileBrowser:SetPath.\nSee @file.Read for how paths work.\n",
      "@name DFileBrowser:SetPath",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/GetPath",
      "@param {DFileBrowser} this - no description",
      "@returns {string} - The current access path i.e. \"GAME\", \"LUA\", \"DATA\" etc."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetPath",
    "typings": [
      "(this: DFileBrowser): string"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the file tree is open.\n",
      "@name DFileBrowser:SetOpen",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/GetOpen",
      "@param {DFileBrowser} this - no description",
      "@returns {boolean} - Whether or not the file tree is open."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "SetOpen",
    "typings": [
      "(this: DFileBrowser): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the name being used for the file tree.\n",
      "@name DFileBrowser:GetName",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/GetName",
      "@param {DFileBrowser} this - no description",
      "@returns {string} - The name used for the root of the file tree."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "GetName",
    "typings": [
      "(this: DFileBrowser): string"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the model viewer mode is enabled. In this mode, files are displayed as @SpawnIcon types instead of a list.\n",
      "@name DFileBrowser:GetModels",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/GetModels",
      "@param {DFileBrowser} this - no description",
      "@returns {boolean} - Whether or not files will be displayed using @SpawnIcon types."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "GetModels",
    "typings": [
      "(this: DFileBrowser): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the @DTree Node type that the file tree stems from.\nThis is a child of the root node of the @DTree type.\n",
      "@name DFileBrowser:GetFolderNode",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/GetFolderNode",
      "@param {DFileBrowser} this - no description",
      "@returns {DTree_Node} - The @DTree_Node type used for the tree."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "GetFolderNode",
    "typings": [
      "(this: DFileBrowser): DTree_Node"
    ]
  },
  {
    "comments": [
      "\nReturns the current file type filter on the file list.\n",
      "@name DFileBrowser:GetFileTypes",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/GetFileTypes",
      "@param {DFileBrowser} this - no description",
      "@returns {string} - The current filter applied to the file list."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "GetFileTypes",
    "typings": [
      "(this: DFileBrowser): string"
    ]
  },
  {
    "comments": [
      "\nReturns the current directory/folder being displayed.\n",
      "@name DFileBrowser:GetCurrentFolder",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/GetCurrentFolder",
      "@param {DFileBrowser} this - no description",
      "@returns {string} - The directory the file list is currently displaying."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "GetCurrentFolder",
    "typings": [
      "(this: DFileBrowser): string"
    ]
  },
  {
    "comments": [
      "\nReturns the root directory/folder of the file tree.\n",
      "@name DFileBrowser:GetBaseFolder",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/GetBaseFolder",
      "@param {DFileBrowser} this - no description",
      "@returns {string} - The path to the root folder."
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "GetBaseFolder",
    "typings": [
      "(this: DFileBrowser): string"
    ]
  },
  {
    "comments": [
      "\nClears the file tree and list, and resets all values.\n",
      "@name DFileBrowser:Clear",
      "@wiki https://wiki.garrysmod.com/page/DFileBrowser/Clear",
      "@param {DFileBrowser} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DFileBrowser",
    "extends": [
      "DPanel"
    ],
    "name": "Clear",
    "typings": [
      "(this: DFileBrowser): void"
    ]
  },
  {
    "comments": [
      "\nSets whether this DExpandButton should be expanded or not. Only changes appearance.\n",
      "@name DExpandButton:SetExpanded",
      "@wiki https://wiki.garrysmod.com/page/DExpandButton/SetExpanded",
      "@param {DExpandButton} this - no description",
      "@param {boolean} expanded - True to expand ( visually will show a \"-\" )",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DExpandButton",
    "extends": [
      "DButton"
    ],
    "name": "SetExpanded",
    "typings": [
      "(this: DExpandButton, expanded: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether this DExpandButton is expanded or not.\n",
      "@name DExpandButton:GetExpanded",
      "@wiki https://wiki.garrysmod.com/page/DExpandButton/GetExpanded",
      "@param {DExpandButton} this - no description",
      "@returns {boolean} - True if expanded, false otherwise"
    ],
    "type": "class",
    "context": "DExpandButton",
    "extends": [
      "DButton"
    ],
    "name": "GetExpanded",
    "typings": [
      "(this: DExpandButton): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns a function to draw a specified texture of panels skin.\n",
      "@name derma.SkinTexture",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/SkinTexture",
      "@param {void} this - no description",
      "@param {string} name - The identifier of the texture",
      "@param {Panel} pnl - Panel to get the skin of.",
      "@param {any} fallback - What to return if we failed to retrieve the texture",
      "@returns {function} - A function that is created with the @GWEN library to draw a texture."
    ],
    "type": "func",
    "context": "derma",
    "name": "SkinTexture",
    "typings": [
      "(this: void, name: string, pnl: Panel, fallback?: any): UnknownFunc"
    ]
  },
  {
    "comments": [
      "\nReturns how many times @derma.RefreshSkins has been called.\n",
      "@name derma.SkinChangeIndex",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/SkinChangeIndex",
      "@param {void} this - no description",
      "@returns {number} - Amount of times @derma.RefreshSkins has been called."
    ],
    "type": "func",
    "context": "derma",
    "name": "SkinChangeIndex",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nCalls the specified hook for the given panel\n",
      "@name derma.SkinHook",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/SkinHook",
      "@param {void} this - no description",
      "@param {string} type - The type of hook to run",
      "@param {string} name - The name of the hook to run",
      "@param {Panel} panel - The panel to call the hook for",
      "@param {number} w - The width of the panel",
      "@param {number} h - The height of the panel",
      "@returns {any} - The returned variable from the skin hook"
    ],
    "type": "func",
    "context": "derma",
    "name": "SkinHook",
    "typings": [
      "(this: void, type: string, name: string, panel: Panel, w: number, h: number): any"
    ]
  },
  {
    "comments": [
      "\nClears all cached panels so that they reassess which skin they should be using.\n",
      "@name derma.RefreshSkins",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/RefreshSkins",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "derma",
    "name": "RefreshSkins",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns a copy of the table containing every Derma skin\n",
      "@name derma.GetSkinTable",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/GetSkinTable",
      "@param {void} this - no description",
      "@returns {table} - Table of every Derma skin"
    ],
    "type": "func",
    "context": "derma",
    "name": "GetSkinTable",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nReturns the default skin table, which can be changed with the hook [GM/ForceDermaSkin](https://wiki.garrysmod.com/page/GM/ForceDermaSkin)\n",
      "@name derma.GetDefaultSkin",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/GetDefaultSkin",
      "@param {void} this - no description",
      "@returns {table} - Skin table"
    ],
    "type": "func",
    "context": "derma",
    "name": "GetDefaultSkin",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nReturns the skin table of the skin with the supplied name\n",
      "@name derma.GetNamedSkin",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/GetNamedSkin",
      "@param {void} this - no description",
      "@param {string} name - Name of skin",
      "@returns {table} - Skin table"
    ],
    "type": "func",
    "context": "derma",
    "name": "GetNamedSkin",
    "typings": [
      "(this: void, name: string): table"
    ]
  },
  {
    "comments": [
      "\nDefines a new skin so that it is usable by Derma. The default skin can be found in \"garrysmod/lua/skins/default.lua\"\n",
      "@name derma.DefineSkin",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/DefineSkin",
      "@param {void} this - no description",
      "@param {string} name - Name of the skin",
      "@param {string} descriptions - Description of the skin",
      "@param {table} skin - Table containing skin data",
      "@returns {void}"
    ],
    "type": "func",
    "context": "derma",
    "name": "DefineSkin",
    "typings": [
      "(this: void, name: string, descriptions: string, skin: table): void"
    ]
  },
  {
    "comments": [
      "\nReturns the @derma.Controls table, a list of all derma controls registered with @derma.DefineControl.\n",
      "@name derma.GetControlList",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/GetControlList",
      "@param {void} this - no description",
      "@returns {table} - A listing of all available derma-based controls. See @derma.Controls for structure and contents."
    ],
    "type": "func",
    "context": "derma",
    "name": "GetControlList",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nDefines a new Derma control with an optional base.\nThis calls @vgui.Register internally, but also does the following:\n* Adds the control to @derma.GetControlList\n* Adds a key \"Derma\" - This is returned by @derma.GetControlList\n* Makes a global table with the name of the control (This is technically deprecated and should not be relied upon)\n* If reloading (i.e. called this function with name of an existing panel), updates all existing instances of panels with this name. (Updates functions, calls @PanelHooks:PreAutoRefresh and @PanelHooks:PostAutoRefresh, etc.)\n",
      "@name derma.DefineControl",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/DefineControl",
      "@param {void} this - no description",
      "@param {string} name - Name of the newly created control",
      "@param {string} description - Description of the control",
      "@param {table} tab - Table containing control methods and properties",
      "@param {string} base - Derma control to base the new control off of",
      "@returns {table} - A table containing the new control's methods and properties"
    ],
    "type": "func",
    "context": "derma",
    "name": "DefineControl",
    "typings": [
      "(this: void, name: string, description: string, tab: table, base: string): table"
    ]
  },
  {
    "comments": [
      "\nSets the entity to be edited by this panel. The entity must support the [Editable Entities](https://wiki.garrysmod.com/page/Editable%20Entities) system or nothing will happen.\n",
      "@name DEntityProperties:SetEntity",
      "@wiki https://wiki.garrysmod.com/page/DEntityProperties/SetEntity",
      "@param {DEntityProperties} this - no description",
      "@param {Entity} ent - The entity to edit",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DEntityProperties",
    "extends": [
      "DProperties"
    ],
    "name": "SetEntity",
    "typings": [
      "(this: DEntityProperties, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nGets the color from a Derma skin of a panel and returns default color if not found\n",
      "@name derma.Color",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/derma/Color",
      "@param {void} this - no description",
      "@param {string} name - no description",
      "@param {Panel} pnl - no description",
      "@param {table} def - The default color in case of failure.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "derma",
    "name": "Color",
    "typings": [
      "(this: void, name: string, pnl: Panel, def: table): void"
    ]
  },
  {
    "comments": [
      "\nCalled internally by @DEntityProperties:SetEntity to rebuild the controls.\n",
      "@name DEntityProperties:RebuildControls",
      "@wiki https://wiki.garrysmod.com/page/DEntityProperties/RebuildControls",
      "@internal",
      "@param {DEntityProperties} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DEntityProperties",
    "extends": [
      "DProperties"
    ],
    "name": "RebuildControls",
    "typings": [
      "(this: DEntityProperties): void"
    ]
  },
  {
    "comments": [
      "\nCalled when we were editing an entity and then it became invalid (probably removed)\n",
      "@name DEntityProperties:OnEntityLost",
      "@wiki https://wiki.garrysmod.com/page/DEntityProperties/OnEntityLost",
      "@param {DEntityProperties} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DEntityProperties",
    "extends": [
      "DProperties"
    ],
    "name": "OnEntityLost",
    "typings": [
      "(this: DEntityProperties): void"
    ]
  },
  {
    "comments": [
      "\nCalled internally when an entity being edited became invalid.\nYou should use @DEntityProperties:OnEntityLost instead.\n",
      "@name DEntityProperties:EntityLost",
      "@wiki https://wiki.garrysmod.com/page/DEntityProperties/EntityLost",
      "@internal",
      "@param {DEntityProperties} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DEntityProperties",
    "extends": [
      "DProperties"
    ],
    "name": "EntityLost",
    "typings": [
      "(this: DEntityProperties): void"
    ]
  },
  {
    "comments": [
      "\nCalled internally by @DEntityProperties:RebuildControls.\n",
      "@name DEntityProperties:EditVariable",
      "@wiki https://wiki.garrysmod.com/page/DEntityProperties/EditVariable",
      "@internal",
      "@param {DEntityProperties} this - no description",
      "@param {string} varname - no description",
      "@param {table} editdata - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DEntityProperties",
    "extends": [
      "DProperties"
    ],
    "name": "EditVariable",
    "typings": [
      "(this: DEntityProperties, varname: string, editdata: table): void"
    ]
  },
  {
    "comments": [
      "\nDisplays a colored triangle at the specified coordinates.\n",
      "@name debugoverlay.Triangle",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/Triangle",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {Vector} pos1 - First point of the triangle",
      "@param {Vector} pos2 - Second point of the triangle",
      "@param {Vector} pos3 - Third point of the triangle",
      "@param {number} lifetime - Number of seconds to appear",
      "@param {Color} color - The color of the box. Uses the @IColor structure",
      "@param {boolean} ignoreZ - If true, will draw on top of everything; ignoring the Z buffer",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "Triangle",
    "typings": [
      "(this: void, pos1: Vector, pos2: Vector, pos3: Vector, lifetime?: number, color?: Color, ignoreZ?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDisplays text at the specified position.\n",
      "@name debugoverlay.Text",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/Text",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {Vector} origin - Position origin",
      "@param {string} text - String message to display",
      "@param {number} lifetime - Number of seconds to appear",
      "@param {boolean} viewCheck - Clip text that is obscured",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "Text",
    "typings": [
      "(this: void, origin: Vector, text: string, lifetime?: number, viewCheck?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDisplays \"swept\" box, two boxes connected with lines by their verices.\n",
      "@name debugoverlay.SweptBox",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/SweptBox",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {Vector} vStart - The start position of the box.",
      "@param {Vector} vEnd - The end position of the box.",
      "@param {Vector} vMins - The \"minimum\" edge of the box.",
      "@param {Vector} vMaxs - The \"maximum\" edge of the box.",
      "@param {Angle} ang - no description",
      "@param {number} lifetime - Number of seconds to appear",
      "@param {Color} color - The color of the box. Uses the @IColor structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "SweptBox",
    "typings": [
      "(this: void, vStart: Vector, vEnd: Vector, vMins: Vector, vMaxs: Vector, ang: Angle, lifetime?: number, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nDisplays text triangle at the specified coordinates.\n",
      "@name debugoverlay.ScreenText",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/ScreenText",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {number} x - The position of the text, from 0 ( left ) to 1 ( right ).",
      "@param {number} y - The position of the text, from 0 ( top ) to 1 ( bottom ).",
      "@param {string} text - The text to display",
      "@param {number} lifetime - Number of seconds to appear",
      "@param {Color} color - The color of the box. Uses the @IColor structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "ScreenText",
    "typings": [
      "(this: void, x: number, y: number, text: string, lifetime?: number, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nDisplays a coloured sphere at the specified position.\n",
      "@name debugoverlay.Sphere",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/Sphere",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {Vector} origin - Position origin",
      "@param {number} size - Size of the sphere",
      "@param {number} lifetime - Number of seconds to appear",
      "@param {Color} color - The color of the sphere. Uses the @IColor structure",
      "@param {boolean} ignoreZ - If true, will draw on top of everything; ignoring the Z buffer",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "Sphere",
    "typings": [
      "(this: void, origin: Vector, size: number, lifetime?: number, color?: Color, ignoreZ?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDisplays a coloured line at the specified position.\n",
      "@name debugoverlay.Line",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/Line",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {Vector} pos1 - First position of the line",
      "@param {Vector} pos2 - Second position of the line",
      "@param {number} lifetime - Number of seconds to appear",
      "@param {Color} color - The color of the line. Uses the @IColor structure",
      "@param {boolean} ignoreZ - If true, will draw on top of everything; ignoring the Z buffer",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "Line",
    "typings": [
      "(this: void, pos1: Vector, pos2: Vector, lifetime?: number, color?: Color, ignoreZ?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDraws a 3D grid of limited size in given position.\n",
      "@name debugoverlay.Grid",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/Grid",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {Vector} position - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "Grid",
    "typings": [
      "(this: void, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nDisplays 2D text at the specified coordinates.\n",
      "@name debugoverlay.EntityTextAtPosition",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/EntityTextAtPosition",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {Vector} pos - The position in 3D to display the text.",
      "@param {number} line - Line of text, will offset text on the to display the new line unobstructed",
      "@param {string} text - The text to display",
      "@param {number} lifetime - Number of seconds to appear",
      "@param {Color} color - The color of the box. Uses the @IColor structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "EntityTextAtPosition",
    "typings": [
      "(this: void, pos: Vector, line: number, text: string, lifetime?: number, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nCreates a coloured cross at the specified position for the specified time.\n",
      "@name debugoverlay.Cross",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/Cross",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {Vector} position - Position origin",
      "@param {number} size - Size of the cross",
      "@param {number} lifetime - Number of seconds the cross to appear",
      "@param {Color} color - The color of the cross. Uses the @IColor structure",
      "@param {boolean} ignoreZ - If true, will draw on top of everything; ignoring the Z buffer",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "Cross",
    "typings": [
      "(this: void, position: Vector, size: number, lifetime?: number, color?: Color, ignoreZ?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDisplays a solid colored rotated box at the specified position.\n",
      "@name debugoverlay.BoxAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/BoxAngles",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {Vector} pos - World position",
      "@param {Vector} mins - The mins of the box (lowest corner)",
      "@param {Vector} maxs - The maxs of the box (highest corner)",
      "@param {Angle} ang - The angle to draw the box at",
      "@param {number} lifetime - Amount of seconds to show the box",
      "@param {Color} color - The color of the box. Uses the @IColor structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "BoxAngles",
    "typings": [
      "(this: void, pos: Vector, mins: Vector, maxs: Vector, ang: Angle, lifetime?: number, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nDisplays an axis indicator at the specified position.\n",
      "@name debugoverlay.Axis",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/Axis",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0",
      "@param {void} this - no description",
      "@param {Vector} origin - Position origin",
      "@param {Angle} ang - Angle of the axis",
      "@param {number} size - Size of the axis",
      "@param {number} lifetime - Number of seconds to appear",
      "@param {boolean} ignoreZ - If true, will draw on top of everything; ignoring the Z buffer",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "Axis",
    "typings": [
      "(this: void, origin: Vector, ang: Angle, size: number, lifetime?: number, ignoreZ?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nDisplays a solid coloured box at the specified position.\n",
      "@name debugoverlay.Box",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/debugoverlay/Box",
      "@note This function will silently fail if the **developer** @ConVar type is set to 0.",
      "@param {void} this - no description",
      "@param {Vector} origin - Position origin",
      "@param {Vector} mins - Minimum bounds of the box",
      "@param {Vector} maxs - Maximum bounds of the box",
      "@param {number} lifetime - Number of seconds to appear",
      "@param {Color} color - The color of the box. Uses the @IColor structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debugoverlay",
    "name": "Box",
    "typings": [
      "(this: void, origin: Vector, mins: Vector, maxs: Vector, lifetime?: number, color?: Color): void"
    ]
  },
  {
    "comments": [
      "\nMake the n1-th upvalue of the Lua closure f1 refer to the n2-th upvalue of the Lua closure f2.\n",
      "@name debug.upvaluejoin",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/upvaluejoin",
      "@deleted This function was removed due to security concerns.",
      "@param {void} this - no description",
      "@param {function} f1 - no description",
      "@param {number} n1 - no description",
      "@param {function} f2 - no description",
      "@param {number} n2 - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debug",
    "name": "upvaluejoin",
    "typings": [
      "(this: void, f1: UnknownFunc, n1: number, f2: UnknownFunc, n2: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns an unique identifier for the upvalue indexed from func\n",
      "@name debug.upvalueid",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/upvalueid",
      "@deleted This function was removed due to security concerns.",
      "@param {void} this - no description",
      "@param {function} func - The function to index the upvalue from",
      "@param {number} index - The index from func",
      "@returns {number} - A unique identifier"
    ],
    "type": "func",
    "context": "debug",
    "name": "upvalueid",
    "typings": [
      "(this: void, func: UnknownFunc, index: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns a full execution stack trace.\n",
      "@name debug.traceback",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/traceback",
      "@param {void} this - no description",
      "@param {thread} thread - Thread (ie. error object from xpcall error handler) to build traceback for.",
      "@param {string} message - Appended at the beginning of the traceback.",
      "@param {number} level - Which level to start the traceback.",
      "@returns {string} - A dump of the execution stack."
    ],
    "type": "func",
    "context": "debug",
    "name": "traceback",
    "typings": [
      "(this: void, thread?: thread, message?: string, level?: number): string"
    ]
  },
  {
    "comments": [
      "\nPrints out the lua function call stack to the console.\n",
      "@name debug.Trace",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/Trace",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debug",
    "name": "Trace",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the variable indexed from func\n",
      "@name debug.setupvalue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/setupvalue",
      "@deleted This function was removed due to security concerns.",
      "@param {void} this - no description",
      "@param {function} func - The function to index the upvalue from",
      "@param {number} index - The index from func",
      "@param {any} val - The value to set the upvalue to.",
      "@returns {string} - Returns nil if there is no upvalue with the given index, otherwise it returns the upvalue's name."
    ],
    "type": "func",
    "context": "debug",
    "name": "setupvalue",
    "typings": [
      "(this: void, func: UnknownFunc, index: number, val?: any): string"
    ]
  },
  {
    "comments": [
      "\nSets the object's metatable. Unlike @setmetatable function, this function works regardless of whether the first object passed is a valid table or not; this function even works on primitive datatypes such as numbers, functions, and even nil.\n",
      "@name debug.setmetatable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/setmetatable",
      "@param {void} this - no description",
      "@param {any} object - Object to set the metatable for.",
      "@param {table} metatable - The metatable to set for the object.\nIf this argument is nil, then the object's metatable is removed.",
      "@returns {boolean} - true if the object's metatable was set successfully."
    ],
    "type": "func",
    "context": "debug",
    "name": "setmetatable",
    "typings": [
      "(this: void, object: any, metatable: table): boolean"
    ]
  },
  {
    "comments": [
      "\nSets a local variable's value.\n",
      "@name debug.setlocal",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/setlocal",
      "@deleted This function was removed due to security concerns.",
      "@param {void} this - no description",
      "@param {thread} thread - The thread",
      "@param {number} level - The level above the thread.\n0 is the function that was called (most always this function)'s arguments\n1 is the thread that had called this function.\n2 is the thread that had called the function that started the thread that called this function.",
      "@param {number} index - The variable's index you want to get.\n1 = the first local defined in the thread\n2 = the second local defined in the thread",
      "@param {any} value - The value to set the local to",
      "@returns {string} - The name of the local variable if the local at the index exists, otherwise nil is returned."
    ],
    "type": "func",
    "context": "debug",
    "name": "setlocal",
    "typings": [
      "(this: void, thread?: thread, level: number, index: number, value?: any): string"
    ]
  },
  {
    "comments": [
      "\nSets the environment of the passed object.\n",
      "@name debug.setfenv",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/setfenv",
      "@param {void} this - no description",
      "@param {table} object - Object to set environment of",
      "@param {table} env - Environment to set",
      "@returns {table} - The object"
    ],
    "type": "func",
    "context": "debug",
    "name": "setfenv",
    "typings": [
      "(this: void, object: table, env: table): table"
    ]
  },
  {
    "comments": [
      "\nUsed for getting variable values in an index from the passed function. This does nothing for C functions.\n",
      "@name debug.getupvalue",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/getupvalue",
      "@param {void} this - no description",
      "@param {function} func - Function to get the upvalue indexed from.",
      "@param {number} index - The index in the upvalue array. The max number of entries can be found in @debug.getinfo's \"[nups](https://wiki.garrysmod.com/page/Structures/DebugInfo)\" key.",
      "@returns {string} - Name of the upvalue. Will be nil if the index was out of range ( @debug.getinfo.nups), or the function was defined in C.",
      "@returns {any} - Value of the upvalue.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "debug",
    "name": "getupvalue",
    "typings": [
      "(this: void, func: UnknownFunc, index: number): [string, any]"
    ]
  },
  {
    "comments": [
      "\nSets the given function as a Lua hook. This is completely different to gamemode hooks. The thread argument can be completely omitted and calling this function with no arguments will remove the current hook. This is used by default for infinite loop detection. More information on hooks can be found at http://www.lua.org/pil/23.2.html\nHooks are not always ran when code that has been compiled by LuaJIT's JIT compiler is being executed. This means that relying on them for infinite loop protection is unwise.\n",
      "@name debug.sethook",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/sethook",
      "@param {void} this - no description",
      "@param {thread} thread - Thread to set the hook on. This argument can be omited",
      "@param {function} hook - Function for the hook to call",
      "@param {string} mask - The hook's mask",
      "@param {number} count - How often to call the hook (in instructions). 0 for every instruction",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debug",
    "name": "sethook",
    "typings": [
      "(this: void, thread: thread, hook: UnknownFunc, mask: string, count: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the metatable of an object. This function ignores the metatable's __metatable field.\n",
      "@name debug.getmetatable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/getmetatable",
      "@param {void} this - no description",
      "@param {any} object - The object to retrieve the metatable from.",
      "@returns {table} - The metatable of the given object."
    ],
    "type": "func",
    "context": "debug",
    "name": "getmetatable",
    "typings": [
      "(this: void, object: any): table"
    ]
  },
  {
    "comments": [
      "\nReturns the internal Lua registry table.\nThe Lua registry is used by the engine and binary modules to create references to Lua values. Avoid creating entries into the registry with a number as the key, as they are reserved for the reference system.\n",
      "@name debug.getregistry",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/getregistry",
      "@warning Improper editing of the registry can result in unintended side effects, including crashing of the game.",
      "@param {void} this - no description",
      "@returns {table} - The Lua registry"
    ],
    "type": "func",
    "context": "debug",
    "name": "getregistry",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nGets the name and value of a local variable indexed from the level\n",
      "@name debug.getlocal",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/getlocal",
      "@note Variables with names starting with **(** are **internal variables**.",
      "@warning When a function has a tailcall return, you cannot access the locals of this function",
      "@param {void} this - no description",
      "@param {thread} thread - The thread",
      "@param {number} level - The level above the thread.\n0 = the function that was called (most always this function)'s arguments\n1 = the thread that had called this function.\n2 = the thread that had called the function that started the thread that called this function.\nA function defined in Lua can also be passed as the level. The index will specify the parameter's name to be returned (a parameter will have a value of nil).",
      "@param {number} index - The variable's index you want to get.\n1 = the first local defined in the thread\n2 = the second local defined in the thread\netc...",
      "@returns {string} - The name of the variable\nSometimes this will be \"(*temporary)\" if the local variable had no name.",
      "@returns {any} - The value of the local variable.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "debug",
    "name": "getlocal",
    "typings": [
      "(this: void, thread?: thread, level: number, index: number): [string, any]"
    ]
  },
  {
    "comments": [
      "\nReturns debug information about a function.\n",
      "@name debug.getinfo",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/getinfo",
      "@param {void} this - no description",
      "@param {function} funcOrStackLevel - Takes either a function or a number representing the stack level as an argument. Stack level 0 always corresponds to the debug.getinfo call, 1 would be the function calling debug.getinfo, and so on.\nReturns useful information about that function in a table.",
      "@param {string} fields - A string whose characters specify the information to be retrieved.\n* f - Populates the func field.\n* l - Populates the currentline field.\n* L - Populates the activelines field.\n* n - Populates the name and namewhat fields - only works if stack level is passed rather than function pointer.\n* S - Populates the location fields (lastlinedefined, linedefined, short_src, source and what).\n* u - Populates the argument and upvalue fields (isvararg, nparams, nups)",
      "@returns {DebugInfo} - A table as a @DebugInfo structure containing information about the function you passed. Can return nil if the stack level didn't point to a valid stack frame."
    ],
    "type": "func",
    "context": "debug",
    "name": "getinfo",
    "typings": [
      "(this: void, funcOrStackLevel: UnknownFunc, fields?: string): DebugInfo"
    ]
  },
  {
    "comments": [
      "\nReturns the environment of the passed object. This can be set with @debug.setfenv\n",
      "@name debug.getfenv",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/getfenv",
      "@param {void} this - no description",
      "@param {table} object - Object to get environment of",
      "@returns {table} - Environment"
    ],
    "type": "func",
    "context": "debug",
    "name": "getfenv",
    "typings": [
      "(this: void, object: table): table"
    ]
  },
  {
    "comments": [
      "\nReturns the current hook settings of the passed thread. The thread argument can be omitted. This is unrelated to [gamemode hooks](https://wiki.garrysmod.com/page/Category:GM%20Hooks). More information on hooks can be found at http://www.lua.org/pil/23.2.html\n",
      "@name debug.gethook",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/gethook",
      "@param {void} this - no description",
      "@param {thread} thread - Which thread to retrieve its hook from",
      "@returns {function} - Hook function",
      "@returns {string} - Hook mask",
      "@returns {number} - Hook count",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "debug",
    "name": "gethook",
    "typings": [
      "(this: void, thread?: thread): [UnknownFunc, string, number]"
    ]
  },
  {
    "comments": [
      "\nEnters an interactive mode with the user, running each string that the user enters. Using simple commands and other debug facilities, the user can inspect global and local variables, change their values, evaluate expressions, and so on. A line containing only the word cont finishes this function, so that the caller continues its execution.\n* Commands for debug.debug are not lexically nested within any function, and so have no direct access to local variables.\n* This only works on the source dedicated server.\n* To exit this interactive mode, you can press Ctrl + Z then Enter OR type the word 'cont' on a single line and press enter.\n",
      "@name debug.debug",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/debug/debug",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "debug",
    "name": "debug",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nToggles the @DDrawer type.\n",
      "@name DDrawer:Toggle",
      "@wiki https://wiki.garrysmod.com/page/DDrawer/Toggle",
      "@param {DDrawer} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDrawer",
    "extends": [
      "Panel"
    ],
    "name": "Toggle",
    "typings": [
      "(this: DDrawer): void"
    ]
  },
  {
    "comments": [
      "\nSet the time (in seconds) for DDrawer to open.\n",
      "@name DDrawer:SetOpenTime",
      "@wiki https://wiki.garrysmod.com/page/DDrawer/SetOpenTime",
      "@param {DDrawer} this - no description",
      "@param {number} value - Length in seconds. Default is 0.3",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDrawer",
    "extends": [
      "Panel"
    ],
    "name": "SetOpenTime",
    "typings": [
      "(this: DDrawer, value: number): void"
    ]
  },
  {
    "comments": [
      "\nSet the height of DDrawer\n",
      "@name DDrawer:SetOpenSize",
      "@wiki https://wiki.garrysmod.com/page/DDrawer/SetOpenSize",
      "@param {DDrawer} this - no description",
      "@param {number} Value - Height of DDrawer. Default is 100.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDrawer",
    "extends": [
      "Panel"
    ],
    "name": "SetOpenSize",
    "typings": [
      "(this: DDrawer, Value: number): void"
    ]
  },
  {
    "comments": [
      "\nReturn the Open Time of DDrawer.\n",
      "@name DDrawer:GetOpenTime",
      "@wiki https://wiki.garrysmod.com/page/DDrawer/GetOpenTime",
      "@param {DDrawer} this - no description",
      "@returns {number} - Time in seconds."
    ],
    "type": "class",
    "context": "DDrawer",
    "extends": [
      "Panel"
    ],
    "name": "GetOpenTime",
    "typings": [
      "(this: DDrawer): number"
    ]
  },
  {
    "comments": [
      "\nOpens the @DDrawer type.\n",
      "@name DDrawer:Open",
      "@wiki https://wiki.garrysmod.com/page/DDrawer/Open",
      "@param {DDrawer} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDrawer",
    "extends": [
      "Panel"
    ],
    "name": "Open",
    "typings": [
      "(this: DDrawer): void"
    ]
  },
  {
    "comments": [
      "\nReturn the Open Size of DDrawer.\n",
      "@name DDrawer:GetOpenSize",
      "@wiki https://wiki.garrysmod.com/page/DDrawer/GetOpenSize",
      "@param {DDrawer} this - no description",
      "@returns {number} - Open size."
    ],
    "type": "class",
    "context": "DDrawer",
    "extends": [
      "Panel"
    ],
    "name": "GetOpenSize",
    "typings": [
      "(this: DDrawer): number"
    ]
  },
  {
    "comments": [
      "\nCloses the @DDrawer type.\n",
      "@name DDrawer:Close",
      "@wiki https://wiki.garrysmod.com/page/DDrawer/Close",
      "@param {DDrawer} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDrawer",
    "extends": [
      "Panel"
    ],
    "name": "Close",
    "typings": [
      "(this: DDrawer): void"
    ]
  },
  {
    "comments": [
      "\nInternal function used in @DDragBase:DropAction_Normal\n",
      "@name DDragBase:UpdateDropTarget",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/UpdateDropTarget",
      "@internal",
      "@param {DDragBase} this - no description",
      "@param {number} drop - no description",
      "@param {Panel} pnl - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "UpdateDropTarget",
    "typings": [
      "(this: DDragBase, drop: number, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "@name DDragBase:SetUseLiveDrag",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/SetUseLiveDrag",
      "@param {DDragBase} this - no description",
      "@param {boolean} newState - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "SetUseLiveDrag",
    "typings": [
      "(this: DDragBase, newState: boolean): void"
    ]
  },
  {
    "comments": [
      "@name DDragBase:SetDnD",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/SetDnD",
      "@param {DDragBase} this - no description",
      "@param {string} name - Name of the DnD family.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "SetDnD",
    "typings": [
      "(this: DDragBase, name: string): void"
    ]
  },
  {
    "comments": [
      "\nDetermines where you can drop stuff.\n\"4\" for left\n\"5\" for center\n\"6\" for right\n\"8\" for top\n\"2\" for bottom\n",
      "@name DDragBase:SetDropPos",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/SetDropPos",
      "@param {DDragBase} this - no description",
      "@param {string} pos - Where you're allowed to drop things.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "SetDropPos",
    "typings": [
      "(this: DDragBase, pos?: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled when anything is dropped on or rearranged within the @DDragBase type.\n",
      "@name DDragBase:OnModified",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/OnModified",
      "@param {DDragBase} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "OnModified",
    "typings": [
      "(this: DDragBase): void"
    ]
  },
  {
    "comments": [
      "\nMakes the panel a receiver for any droppable panel with the same DnD name. Internally calls @Panel:Receiver.\n",
      "@name DDragBase:MakeDroppable",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/MakeDroppable",
      "@param {DDragBase} this - no description",
      "@param {string} name - The unique name for the receiver slot. Only droppable panels with the same DnD name as this can be dropped on the panel.",
      "@param {boolean} allowCopy - Whether or not to allow droppable panels to be copied when the @Ctrl key key is held down.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "MakeDroppable",
    "typings": [
      "(this: DDragBase, name: string, allowCopy: boolean): void"
    ]
  },
  {
    "comments": [
      "@name DDragBase:GetUseLiveDrag",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/GetUseLiveDrag",
      "@param {DDragBase} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "GetUseLiveDrag",
    "typings": [
      "(this: DDragBase): boolean"
    ]
  },
  {
    "comments": [
      "\nInternal function used in @DDragBase:DropAction_Normal\n",
      "@name DDragBase:DropAction_Simple",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/DropAction Simple",
      "@internal",
      "@param {DDragBase} this - no description",
      "@param {table} drops - no description",
      "@param {boolean} bDoDrop - no description",
      "@param {string} command - no description",
      "@param {number} y - no description",
      "@param {number} x - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "DropAction_Simple",
    "typings": [
      "(this: DDragBase, drops: table, bDoDrop: boolean, command: string, y: number, x: number): void"
    ]
  },
  {
    "comments": [
      "@name DDragBase:GetDnD",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/GetDnD",
      "@param {DDragBase} this - no description",
      "@returns {string} - Name of the DnD family."
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "GetDnD",
    "typings": [
      "(this: DDragBase): string"
    ]
  },
  {
    "comments": [
      "\nInternal function used in @DDragBase:DropAction_Copy\n",
      "@name DDragBase:DropAction_Normal",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/DropAction Normal",
      "@internal",
      "@param {DDragBase} this - no description",
      "@param {table} drops - no description",
      "@param {boolean} bDoDrop - no description",
      "@param {string} command - no description",
      "@param {number} y - no description",
      "@param {number} x - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "DropAction_Normal",
    "typings": [
      "(this: DDragBase, drops: table, bDoDrop: boolean, command: string, y: number, x: number): void"
    ]
  },
  {
    "comments": [
      "\nInternal function used in @DDragBase:MakeDroppable\n",
      "@name DDragBase:DropAction_Copy",
      "@wiki https://wiki.garrysmod.com/page/DDragBase/DropAction Copy",
      "@internal",
      "@param {DDragBase} this - no description",
      "@param {table} drops - no description",
      "@param {boolean} bDoDrop - no description",
      "@param {string} command - no description",
      "@param {number} y - no description",
      "@param {number} x - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DDragBase",
    "extends": [
      "DPanel"
    ],
    "name": "DropAction_Copy",
    "typings": [
      "(this: DDragBase, drops: table, bDoDrop: boolean, command: string, y: number, x: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the text shown in the combo box when the menu is not collapsed.\n",
      "@name DComboBox:SetValue",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/SetValue",
      "@param {DComboBox} this - no description",
      "@param {string} value - The text in the DComboBox.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "SetValue",
    "typings": [
      "(this: DComboBox, value: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the items should be sorted alphabetically in the dropdown menu of the @DComboBox type. If set to false, items will appear in the order they were added by @DComboBox:AddChoice calls.\nThis is enabled by default.\n",
      "@name DComboBox:SetSortItems",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/SetSortItems",
      "@param {DComboBox} this - no description",
      "@param {boolean} sort - true to enable, false to disable",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "SetSortItems",
    "typings": [
      "(this: DComboBox, sort: boolean): void"
    ]
  },
  {
    "comments": [
      "\nOpens the combo box drop down menu. Called when the combo box is clicked.\n",
      "@name DComboBox:OpenMenu",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/OpenMenu",
      "@param {DComboBox} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "OpenMenu",
    "typings": [
      "(this: DComboBox): void"
    ]
  },
  {
    "comments": [
      "\nCalled when an option in the combo box is selected.\n",
      "@name DComboBox:OnSelect",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/OnSelect",
      "@param {DComboBox} this - no description",
      "@param {number} index - The index of the option for use with other @DComboBox type functions.",
      "@param {string} value - The name of the option.",
      "@param {any} data - The data assigned to the option.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "OnSelect",
    "typings": [
      "(this: DComboBox, index: number, value: string, data: any): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the combo box's menu is opened.\n",
      "@name DComboBox:IsMenuOpen",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/IsMenuOpen",
      "@param {DComboBox} this - no description",
      "@returns {boolean} - True if the menu is open, false otherwise."
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "IsMenuOpen",
    "typings": [
      "(this: DComboBox): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns an whether the items in the dropdown will be alphabetically sorted or not.\nSee @DComboBox:SetSortItems.\n",
      "@name DComboBox:GetSortItems",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/GetSortItems",
      "@param {DComboBox} this - no description",
      "@returns {boolean} - True if enabled, false otherwise."
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "GetSortItems",
    "typings": [
      "(this: DComboBox): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the index (ID) of the currently selected option.\n",
      "@name DComboBox:GetSelectedID",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/GetSelectedID",
      "@param {DComboBox} this - no description",
      "@returns {number} - The ID of the currently selected option."
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "GetSelectedID",
    "typings": [
      "(this: DComboBox): number"
    ]
  },
  {
    "comments": [
      "\nReturns the currently selected option's text and data\n",
      "@name DComboBox:GetSelected",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/GetSelected",
      "@param {DComboBox} this - no description",
      "@returns {string} - The option's text value.",
      "@returns {any} - The option's stored data.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "GetSelected",
    "typings": [
      "(this: DComboBox): [string, any]"
    ]
  },
  {
    "comments": [
      "\nReturns an option's text based on the given data.\n",
      "@name DComboBox:GetOptionTextByData",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/GetOptionTextByData",
      "@param {DComboBox} this - no description",
      "@param {string} data - The data to look up the name of.\nIf given a @number type and no matching data was found, the function will test given data against each @tonumber function'd data entry.",
      "@returns {string} - The option's text value.\nIf no matching data was found, the data itself will be returned. If multiple identical data entries exist, the first instance will be returned."
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "GetOptionTextByData",
    "typings": [
      "(this: DComboBox, data: string): string"
    ]
  },
  {
    "comments": [
      "\nReturns an option's text based on the given index.\n",
      "@name DComboBox:GetOptionText",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/GetOptionText",
      "@param {DComboBox} this - no description",
      "@param {number} index - The option index.",
      "@returns {string} - The option's text value."
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "GetOptionText",
    "typings": [
      "(this: DComboBox, index: number): string"
    ]
  },
  {
    "comments": [
      "\nReturns an option's data based on the given index.\n",
      "@name DComboBox:GetOptionData",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/GetOptionData",
      "@param {DComboBox} this - no description",
      "@param {number} index - The option index.",
      "@returns {any} - The option's data value."
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "GetOptionData",
    "typings": [
      "(this: DComboBox, index: number): any"
    ]
  },
  {
    "comments": [
      "\nCloses the combo box menu. Called when the combo box is clicked while open.\n",
      "@name DComboBox:CloseMenu",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/CloseMenu",
      "@param {DComboBox} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "CloseMenu",
    "typings": [
      "(this: DComboBox): void"
    ]
  },
  {
    "comments": [
      "\nClears the combo box's text value, choices, and data values.\n",
      "@name DComboBox:Clear",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/Clear",
      "@param {DComboBox} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "Clear",
    "typings": [
      "(this: DComboBox): void"
    ]
  },
  {
    "comments": [
      "\nAdds a choice to the combo box.\n",
      "@name DComboBox:AddChoice",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/AddChoice",
      "@param {DComboBox} this - no description",
      "@param {string} value - The text show to the user.",
      "@param {any} data - The data accompanying this string. If left empty, the value argument is used instead.\nCan be accessed with the second argument of @DComboBox:GetSelected, @DComboBox:GetOptionData and as an argument of @DComboBox:OnSelect.",
      "@param {boolean} select - Should this be the default selected text show to the user or not.",
      "@param {string} icon - Adds an icon for this choice.",
      "@returns {number} - The index of the new option."
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "AddChoice",
    "typings": [
      "(this: DComboBox, value: string, data?: any, select?: boolean, icon?: string): number"
    ]
  },
  {
    "comments": [
      "\nSelects an option within a combo box based on its table index.\n",
      "@name DComboBox:ChooseOptionID",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/ChooseOptionID",
      "@param {DComboBox} this - no description",
      "@param {number} index - Selects the option with given index.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "ChooseOptionID",
    "typings": [
      "(this: DComboBox, index: number): void"
    ]
  },
  {
    "comments": [
      "\nMakes the tabs/buttons show only the image and no text.\n",
      "@name DColumnSheet:UseButtonOnlyStyle",
      "@wiki https://wiki.garrysmod.com/page/DColumnSheet/UseButtonOnlyStyle",
      "@param {DColumnSheet} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColumnSheet",
    "extends": [
      "Panel"
    ],
    "name": "UseButtonOnlyStyle",
    "typings": [
      "(this: DColumnSheet): void"
    ]
  },
  {
    "comments": [
      "\nSelects a combo box option by its index and changes the text displayed at the top of the combo box.\n",
      "@name DComboBox:ChooseOption",
      "@wiki https://wiki.garrysmod.com/page/DComboBox/ChooseOption",
      "@param {DComboBox} this - no description",
      "@param {string} value - The text to display at the top of the combo box.",
      "@param {number} index - The option index.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DComboBox",
    "extends": [
      "DButton"
    ],
    "name": "ChooseOption",
    "typings": [
      "(this: DComboBox, value: string, index: number): void"
    ]
  },
  {
    "comments": [
      "\nMakes a button an active button for this @DColumnSheet type.\n",
      "@name DColumnSheet:SetActiveButton",
      "@wiki https://wiki.garrysmod.com/page/DColumnSheet/SetActiveButton",
      "@internal",
      "@param {DColumnSheet} this - no description",
      "@param {Panel} active - The button to make active button",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColumnSheet",
    "extends": [
      "Panel"
    ],
    "name": "SetActiveButton",
    "typings": [
      "(this: DColumnSheet, active: Panel): void"
    ]
  },
  {
    "comments": [
      "\nReturns the active button of this @DColumnSheet type.\n",
      "@name DColumnSheet:GetActiveButton",
      "@wiki https://wiki.garrysmod.com/page/DColumnSheet/GetActiveButton",
      "@param {DColumnSheet} this - no description",
      "@returns {Panel} - The active button"
    ],
    "type": "class",
    "context": "DColumnSheet",
    "extends": [
      "Panel"
    ],
    "name": "GetActiveButton",
    "typings": [
      "(this: DColumnSheet): Panel"
    ]
  },
  {
    "comments": [
      "\nAdds a new column/tab.\n",
      "@name DColumnSheet:AddSheet",
      "@wiki https://wiki.garrysmod.com/page/DColumnSheet/AddSheet",
      "@param {DColumnSheet} this - no description",
      "@param {string} name - Name of the column/tab",
      "@param {DPanel} pnl - Panel to be used as contents of the tab. This normally would be a @DPanel type",
      "@param {string} icon - Icon for the tab. This will ideally be a [silkicon](https://wiki.garrysmod.com/page/Silkicons), but any material name can be used.",
      "@returns {IDColumnSheetAddSheetReturn} - A table containing the following keys:"
    ],
    "type": "class",
    "context": "DColumnSheet",
    "extends": [
      "Panel"
    ],
    "name": "AddSheet",
    "typings": [
      "(this: DColumnSheet, name: string, pnl: DPanel, icon?: string): IDColumnSheetAddSheetReturn"
    ],
    "types": [
      {
        "comments": [
          "Button - {Panel}: The created tab button that will switch to the given panel"
        ],
        "type": "interface",
        "name": "Button",
        "typing": "Panel",
        "context": "IDColumnSheetAddSheetReturn"
      },
      {
        "comments": [
          "Panel - {Panel}: The given panel to switch to when the button is pressed"
        ],
        "type": "interface",
        "name": "Panel",
        "typing": "Panel",
        "context": "IDColumnSheetAddSheetReturn"
      }
    ]
  },
  {
    "comments": [
      "\nUpdates all the console variables set by @DColorPalette:SetConVarR and so on with given color.\nCalled internally when a palette color is clicked.\n",
      "@name DColorPalette:UpdateConVars",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/UpdateConVars",
      "@internal",
      "@param {DColorPalette} this - no description",
      "@param {IColor} clr - A @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "UpdateConVars",
    "typings": [
      "(this: DColorPalette, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "\nInternal helper function for @DColorPalette:UpdateConVars.\n",
      "@name DColorPalette:UpdateConVar",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/UpdateConVar",
      "@internal",
      "@param {DColorPalette} this - no description",
      "@param {string} name - The name of the console variable to set",
      "@param {string} key - The key of the 3rd argument to set the convar to\nPossible values: \"r\", \"g\", \"b\", \"a\"",
      "@param {IColor} clr - The @IColor structure to retrieve the info from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "UpdateConVar",
    "typings": [
      "(this: DColorPalette, name: string, key: string, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "\nRoughly sets the number of colors that can be picked by the user. If the DColorPalette is exactly 6 rows tall, this function will set the number of colors shown per row in the palette.\n",
      "@name DColorPalette:SetNumRows",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/SetNumRows",
      "@note @DColorPalette:Reset or @DColorPalette:ResetSavedColors must be called after this function to apply changes.",
      "@param {DColorPalette} this - no description",
      "@param {number} rows - Scale for the range of colors that the user can pick. Default is 8.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "SetNumRows",
    "typings": [
      "(this: DColorPalette, rows: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the @ConVar type name for the green channel of the color.\nSee also:\n* @DColorPalette:SetConVarR - For the red channel\n* @DColorPalette:SetConVarB - For the blue channel\n* @DColorPalette:SetConVarA - For the alpha channel\n",
      "@name DColorPalette:SetConVarG",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/SetConVarG",
      "@param {DColorPalette} this - no description",
      "@param {string} convar - The @ConVar type name for the green channel of the color",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "SetConVarG",
    "typings": [
      "(this: DColorPalette, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the @ConVar type name for the red channel of the color.\nSee also:\n* @DColorPalette:SetConVarG - For the green channel\n* @DColorPalette:SetConVarB - For the blue channel\n* @DColorPalette:SetConVarA - For the alpha channel\n",
      "@name DColorPalette:SetConVarR",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/SetConVarR",
      "@param {DColorPalette} this - no description",
      "@param {string} convar - The @ConVar type name for the red channel of the color",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "SetConVarR",
    "typings": [
      "(this: DColorPalette, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the @ConVar type name for the alpha channel of the color.\nSee also:\n* @DColorPalette:SetConVarR - For the red channel\n* @DColorPalette:SetConVarG - For the green channel\n* @DColorPalette:SetConVarB - For the blue channel\n",
      "@name DColorPalette:SetConVarA",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/SetConVarA",
      "@param {DColorPalette} this - no description",
      "@param {string} convar - The @ConVar type name for the alpha channel of the color",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "SetConVarA",
    "typings": [
      "(this: DColorPalette, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the @ConVar type name for the blue channel of the color.\nSee also:\n* @DColorPalette:SetConVarR - For the red channel\n* @DColorPalette:SetConVarG - For the green channel\n* @DColorPalette:SetConVarA - For the alpha channel\n",
      "@name DColorPalette:SetConVarB",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/SetConVarB",
      "@param {DColorPalette} this - no description",
      "@param {string} convar - The @ConVar type name for the blue channel of the color",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "SetConVarB",
    "typings": [
      "(this: DColorPalette, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nClears the palette and adds new buttons with given colors.\n",
      "@name DColorPalette:SetColorButtons",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/SetColorButtons",
      "@param {DColorPalette} this - no description",
      "@param {IColor} tab - A number indexed table where each value is a @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "SetColorButtons",
    "typings": [
      "(this: DColorPalette, tab: IColor): void"
    ]
  },
  {
    "comments": [
      "\nCurrently does nothing. Intended to \"select\" the color.\n",
      "@name DColorPalette:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/SetColor",
      "@param {DColorPalette} this - no description",
      "@param {table} clr - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DColorPalette, clr: table): void"
    ]
  },
  {
    "comments": [
      "\nSets the size of each palette button.\nThis is best kept to such a number, where this equation would return a whole number:\nWidthOfColorPalette/ButtonSize=WholeNumber\nIf not, there will be ugly whitespace on the right side of the panel.\n",
      "@name DColorPalette:SetButtonSize",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/SetButtonSize",
      "@param {DColorPalette} this - no description",
      "@param {number} size - Sets the new size",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "SetButtonSize",
    "typings": [
      "(this: DColorPalette, size: number): void"
    ]
  },
  {
    "comments": [
      "\nSaves the color of given button across sessions.\nThe color is saved as a panel cookie, see @Panel:SetCookie and @Panel:SetCookieName.\nIt is expected that the amount of colors per palette (@Panel:SetCookieName) is the same every time.\n",
      "@name DColorPalette:SaveColor",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/SaveColor",
      "@param {DColorPalette} this - no description",
      "@param {Panel} btn - The button to save the color of. Used to get the ID of the button.",
      "@param {table} clr - The color to save to this button's index",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "SaveColor",
    "typings": [
      "(this: DColorPalette, btn: Panel, clr: table): void"
    ]
  },
  {
    "comments": [
      "\nResets this entire color palette to a default preset one and saves the changes.\nSee @DColorPalette:Reset for version that does not save the changes.\n",
      "@name DColorPalette:ResetSavedColors",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/ResetSavedColors",
      "@param {DColorPalette} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "ResetSavedColors",
    "typings": [
      "(this: DColorPalette): void"
    ]
  },
  {
    "comments": [
      "\nResets this entire color palette to a default preset one, without saving.\nSee @DColorPalette:ResetSavedColors for version that also saves the changes.\n",
      "@name DColorPalette:Reset",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/Reset",
      "@param {DColorPalette} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "Reset",
    "typings": [
      "(this: DColorPalette): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally to make sure changes on one palette affect other palettes with same name.\n",
      "@name DColorPalette:NetworkColorChange",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/NetworkColorChange",
      "@internal",
      "@param {DColorPalette} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "NetworkColorChange",
    "typings": [
      "(this: DColorPalette): void"
    ]
  },
  {
    "comments": [
      "\nReturns the number of rows of the palette, provided 6 colors fill each row. This value is equal to the number of colors in the DColorPalette divided by 6.\n",
      "@name DColorPalette:GetNumRows",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/GetNumRows",
      "@param {DColorPalette} this - no description",
      "@returns {number} - Number of rows of the DColorPalette."
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "GetNumRows",
    "typings": [
      "(this: DColorPalette): number"
    ]
  },
  {
    "comments": [
      "\nCalled when the color is changed after clicking a new value.\n",
      "@name DColorPalette:OnValueChanged",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/OnValueChanged",
      "@param {DColorPalette} this - no description",
      "@param {table} newcol - The new color of the @DColorPalette type",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "OnValueChanged",
    "typings": [
      "(this: DColorPalette, newcol: table): void"
    ]
  },
  {
    "comments": [
      "\nCalled when a palette button has been pressed\n",
      "@name DColorPalette:OnRightClickButton",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/OnRightClickButton",
      "@param {DColorPalette} this - no description",
      "@param {DColorButton} pnl - The @DColorButton type that was pressed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "OnRightClickButton",
    "typings": [
      "(this: DColorPalette, pnl: DColorButton): void"
    ]
  },
  {
    "comments": [
      "\nReturns the @ConVar type name for the red channel of the color.\nSee also:\n* @DColorPalette:GetConVarG - For the green channel\n* @DColorPalette:GetConVarB - For the blue channel\n* @DColorPalette:GetConVarA - For the alpha channel\n",
      "@name DColorPalette:GetConVarR",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/GetConVarR",
      "@param {DColorPalette} this - no description",
      "@returns {string} - The @ConVar type name for the red channel of the color"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "GetConVarR",
    "typings": [
      "(this: DColorPalette): string"
    ]
  },
  {
    "comments": [
      "\nReturns the @ConVar type name for the blue channel of the color.\nSee also:\n* @DColorPalette:GetConVarR - For the red channel\n* @DColorPalette:GetConVarG - For the green channel\n* @DColorPalette:GetConVarA - For the alpha channel\n",
      "@name DColorPalette:GetConVarB",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/GetConVarB",
      "@param {DColorPalette} this - no description",
      "@returns {string} - The @ConVar type name for the blue channel of the color"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "GetConVarB",
    "typings": [
      "(this: DColorPalette): string"
    ]
  },
  {
    "comments": [
      "\nReturns the @ConVar type name for the green channel of the color.\nSee also:\n* @DColorPalette:GetConVarR - For the red channel\n* @DColorPalette:GetConVarB - For the blue channel\n* @DColorPalette:GetConVarA - For the alpha channel\n",
      "@name DColorPalette:GetConVarG",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/GetConVarG",
      "@param {DColorPalette} this - no description",
      "@returns {string} - The @ConVar type name for the green channel of the color"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "GetConVarG",
    "typings": [
      "(this: DColorPalette): string"
    ]
  },
  {
    "comments": [
      "\nReturns the @ConVar type name for the alpha channel of the color.\nSee also:\n* @DColorPalette:GetConVarR - For the red channel\n* @DColorPalette:GetConVarG - For the green channel\n* @DColorPalette:GetConVarB - For the blue channel\n",
      "@name DColorPalette:GetConVarA",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/GetConVarA",
      "@param {DColorPalette} this - no description",
      "@returns {string} - The @ConVar type name for the alpha channel of the color"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "GetConVarA",
    "typings": [
      "(this: DColorPalette): string"
    ]
  },
  {
    "comments": [
      "\nReturns the size of each palette button. Set by @DColorPalette:SetButtonSize.\n",
      "@name DColorPalette:GetButtonSize",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/GetButtonSize",
      "@param {DColorPalette} this - no description",
      "@returns {number} - The size of each palette button"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "GetButtonSize",
    "typings": [
      "(this: DColorPalette): number"
    ]
  },
  {
    "comments": [
      "\nBasically the same functionality as @DColorPalette:OnValueChanged, you should use that instead!\n",
      "@name DColorPalette:DoClick",
      "@wiki https://wiki.garrysmod.com/page/DColorPalette/DoClick",
      "@param {DColorPalette} this - no description",
      "@param {IColor} clr - The new color via the @IColor structure",
      "@param {DColorButton} btn - The @DColorButton type that was pressed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorPalette",
    "extends": [
      "DIconLayout"
    ],
    "name": "DoClick",
    "typings": [
      "(this: DColorPalette, clr: IColor, btn: DColorButton): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player changes the color of the @DColorMixer type.\n",
      "@name DColorMixer:ValueChanged",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/ValueChanged",
      "@param {DColorMixer} this - no description",
      "@param {IColor} col - The new color. See @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "ValueChanged",
    "typings": [
      "(this: DColorMixer, col: IColor): void"
    ]
  },
  {
    "comments": [
      "@name DColorMixer:UpdateConVars",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/UpdateConVars",
      "@internal",
      "@param {DColorMixer} this - no description",
      "@param {IColor} clr - The @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "UpdateConVars",
    "typings": [
      "(this: DColorMixer, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "@name DColorMixer:UpdateConVar",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/UpdateConVar",
      "@internal",
      "@param {DColorMixer} this - no description",
      "@param {string} cvar - The @ConVar type name",
      "@param {string} part - The color part to set the cvar to. \"r\", \"g\", \"b\" or \"a\".",
      "@param {IColor} clr - The @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "UpdateConVar",
    "typings": [
      "(this: DColorMixer, cvar: string, part: string, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "\nUse @DColorMixer:SetColor instead!\n",
      "@name DColorMixer:UpdateColor",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/UpdateColor",
      "@internal",
      "@param {DColorMixer} this - no description",
      "@param {table} clr - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "UpdateColor",
    "typings": [
      "(this: DColorMixer, clr: table): void"
    ]
  },
  {
    "comments": [
      "\nDoes nothing.\n",
      "@name DColorMixer:TranslateValues",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/TranslateValues",
      "@internal",
      "@param {DColorMixer} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "TranslateValues",
    "typings": [
      "(this: DColorMixer): void"
    ]
  },
  {
    "comments": [
      "\nShow / Hide the colors indicators in DColorMixer\n",
      "@name DColorMixer:SetWangs",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetWangs",
      "@param {DColorMixer} this - no description",
      "@param {boolean} show - Show / Hide the colors indicators",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetWangs",
    "typings": [
      "(this: DColorMixer, show: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of @DColorMixer type from a @Vector type. Alpha is not included.\n",
      "@name DColorMixer:SetVector",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetVector",
      "@param {DColorMixer} this - no description",
      "@param {Vector} vec - The color to set. It is expected that the vector will have values be from 0 to 1. (i.e. be normalized)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetVector",
    "typings": [
      "(this: DColorMixer, vec: Vector): void"
    ]
  },
  {
    "comments": [
      "\nShow or hide the palette panel\n",
      "@name DColorMixer:SetPalette",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetPalette",
      "@param {DColorMixer} this - no description",
      "@param {boolean} enabled - Show or hide the palette panel?",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetPalette",
    "typings": [
      "(this: DColorMixer, enabled: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the label's text to show.\n",
      "@name DColorMixer:SetLabel",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetLabel",
      "@param {DColorMixer} this - no description",
      "@param {string} text - Set to non empty string to show the label and its text.\nGive it an empty string or nothing and the label will be hidden.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetLabel",
    "typings": [
      "(this: DColorMixer, text?: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the @ConVar type name for the red channel of the color.\nSee also:\n* @DColorMixer:SetConVarG - For the green channel\n* @DColorMixer:SetConVarB - For the blue channel\n* @DColorMixer:SetConVarA - For the alpha channel\n",
      "@name DColorMixer:SetConVarR",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetConVarR",
      "@param {DColorMixer} this - no description",
      "@param {string} convar - The @ConVar type name for the red channel of the color",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetConVarR",
    "typings": [
      "(this: DColorMixer, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the @ConVar type name for the green channel of the color.\nSee also:\n* @DColorMixer:SetConVarR - For the red channel\n* @DColorMixer:SetConVarB - For the blue channel\n* @DColorMixer:SetConVarA - For the alpha channel\n",
      "@name DColorMixer:SetConVarG",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetConVarG",
      "@param {DColorMixer} this - no description",
      "@param {string} convar - The @ConVar type name for the green channel of the color",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetConVarG",
    "typings": [
      "(this: DColorMixer, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the @ConVar type name for the blue channel of the color.\nSee also:\n* @DColorMixer:SetConVarR - For the red channel\n* @DColorMixer:SetConVarG - For the green channel\n* @DColorMixer:SetConVarA - For the alpha channel\n",
      "@name DColorMixer:SetConVarB",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetConVarB",
      "@param {DColorMixer} this - no description",
      "@param {string} convar - The @ConVar type name for the blue channel of the color",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetConVarB",
    "typings": [
      "(this: DColorMixer, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the @ConVar type name for the alpha channel of the color.\nSee also:\n* @DColorMixer:SetConVarR - For the red channel\n* @DColorMixer:SetConVarG - For the green channel\n* @DColorMixer:SetConVarB - For the blue channel\n",
      "@name DColorMixer:SetConVarA",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetConVarA",
      "@param {DColorMixer} this - no description",
      "@param {string} convar - The @ConVar type name for the alpha channel of the color",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetConVarA",
    "typings": [
      "(this: DColorMixer, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the @DColorMixer type\n",
      "@name DColorMixer:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetColor",
      "@param {DColorMixer} this - no description",
      "@param {Color} color - The color to set. See @Color function",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DColorMixer, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the base color of the @DColorCube type part of the @DColorMixer type.\nSee also @DColorCube:SetBaseRGB\n",
      "@name DColorMixer:SetBaseColor",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetBaseColor",
      "@param {DColorMixer} this - no description",
      "@param {IColor} clr - @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetBaseColor",
    "typings": [
      "(this: DColorMixer, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "\nShow/Hide the alpha bar in DColorMixer\n",
      "@name DColorMixer:SetAlphaBar",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/SetAlphaBar",
      "@param {DColorMixer} this - no description",
      "@param {boolean} show - Show / Hide the alpha bar",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "SetAlphaBar",
    "typings": [
      "(this: DColorMixer, show: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturn true if the wangs are shown, false if not.\n",
      "@name DColorMixer:GetWangs",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/GetWangs",
      "@param {DColorMixer} this - no description",
      "@returns {boolean} - Return true if shown, false if not."
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "GetWangs",
    "typings": [
      "(this: DColorMixer): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the color as a normalized @Vector type.\n",
      "@name DColorMixer:GetVector",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/GetVector",
      "@param {DColorMixer} this - no description",
      "@returns {DColorMixer} - A vector representing the color of the @DColorMixer type, each value being in range of 0 to 1. Alpha is not included."
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "GetVector",
    "typings": [
      "(this: DColorMixer): DColorMixer"
    ]
  },
  {
    "comments": [
      "\nReturn true if palette is shown, false if not.\n",
      "@name DColorMixer:GetPalette",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/GetPalette",
      "@param {DColorMixer} this - no description",
      "@returns {boolean} - Return true if shown, false if not."
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "GetPalette",
    "typings": [
      "(this: DColorMixer): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the @ConVar type name for the red channel of the color.\nSee also:\n* @DColorMixer:GetConVarG - For the green channel\n* @DColorMixer:GetConVarB - For the blue channel\n* @DColorMixer:GetConVarA - For the alpha channel\n",
      "@name DColorMixer:GetConVarR",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/GetConVarR",
      "@param {DColorMixer} this - no description",
      "@returns {string} - The @ConVar type name for the red channel of the color"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "GetConVarR",
    "typings": [
      "(this: DColorMixer): string"
    ]
  },
  {
    "comments": [
      "\nReturns the @ConVar type name for the green channel of the color.\nSee also:\n* @DColorMixer:GetConVarR - For the red channel\n* @DColorMixer:GetConVarB - For the blue channel\n* @DColorMixer:GetConVarA - For the alpha channel\n",
      "@name DColorMixer:GetConVarG",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/GetConVarG",
      "@param {DColorMixer} this - no description",
      "@returns {string} - The @ConVar type name for the green channel of the color"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "GetConVarG",
    "typings": [
      "(this: DColorMixer): string"
    ]
  },
  {
    "comments": [
      "\nReturns the @ConVar type name for the blue channel of the color.\nSee also:\n* @DColorMixer:GetConVarR - For the red channel\n* @DColorMixer:GetConVarG - For the green channel\n* @DColorMixer:GetConVarA - For the alpha channel\n",
      "@name DColorMixer:GetConVarB",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/GetConVarB",
      "@param {DColorMixer} this - no description",
      "@returns {string} - The @ConVar type name for the blue channel of the color"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "GetConVarB",
    "typings": [
      "(this: DColorMixer): string"
    ]
  },
  {
    "comments": [
      "\nReturns the @ConVar type name for the alpha channel of the color.\nSee also:\n* @DColorMixer:GetConVarR - For the red channel\n* @DColorMixer:GetConVarG - For the green channel\n* @DColorMixer:GetConVarB - For the blue channel\n",
      "@name DColorMixer:GetConVarA",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/GetConVarA",
      "@param {DColorMixer} this - no description",
      "@returns {string} - The @ConVar type name for the alpha channel of the color"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "GetConVarA",
    "typings": [
      "(this: DColorMixer): string"
    ]
  },
  {
    "comments": [
      "\nReturns the current selected color.\n",
      "@name DColorMixer:GetColor",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/GetColor",
      "@warning This method returns a **table** with keys r,g,b,a and not a Color type",
      "@param {DColorMixer} this - no description",
      "@returns {IColor} - The current selected color as a @IColor structure."
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "GetColor",
    "typings": [
      "(this: DColorMixer): IColor"
    ]
  },
  {
    "comments": [
      "\nReturn true if alpha bar is shown, false if not.\n",
      "@name DColorMixer:GetAlphaBar",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/GetAlphaBar",
      "@param {DColorMixer} this - no description",
      "@returns {boolean} - Return true if shown, false if not."
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "GetAlphaBar",
    "typings": [
      "(this: DColorMixer): boolean"
    ]
  },
  {
    "comments": [
      "@name DColorMixer:DoConVarThink",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/DoConVarThink",
      "@internal",
      "@param {DColorMixer} this - no description",
      "@param {string} cvar - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "DoConVarThink",
    "typings": [
      "(this: DColorMixer, cvar: string): void"
    ]
  },
  {
    "comments": [
      "@name DColorMixer:ConVarThink",
      "@wiki https://wiki.garrysmod.com/page/DColorMixer/ConVarThink",
      "@internal",
      "@param {DColorMixer} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorMixer",
    "extends": [
      "DPanel"
    ],
    "name": "ConVarThink",
    "typings": [
      "(this: DColorMixer): void"
    ]
  },
  {
    "comments": [
      "\nUpdates the color cube RGB based on the given x and y position. Similar to @DColorCube:TranslateValues.\n",
      "@name DColorCube:UpdateColor",
      "@wiki https://wiki.garrysmod.com/page/DColorCube/UpdateColor",
      "@internal",
      "@param {DColorCube} this - no description",
      "@param {number} x - The x position to set color to/the percentage of saturation to remove from the color (ranges from 0.0 to 1.0).",
      "@param {number} y - The y position to set color to/the percentage of brightness or value to remove from the color (ranges from 0.0 to 1.0).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorCube",
    "extends": [
      "DSlider"
    ],
    "name": "UpdateColor",
    "typings": [
      "(this: DColorCube, x?: number, y?: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally to set the real \"output\" color of the panel.\n",
      "@name DColorCube:SetRGB",
      "@wiki https://wiki.garrysmod.com/page/DColorCube/SetRGB",
      "@internal",
      "@param {DColorCube} this - no description",
      "@param {IColor} clr - A @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorCube",
    "extends": [
      "DSlider"
    ],
    "name": "SetRGB",
    "typings": [
      "(this: DColorCube, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "\nUpdates the color cube RGB based on the given x and y position and returns its arguments. Similar to @DColorCube:UpdateColor.\n",
      "@name DColorCube:TranslateValues",
      "@wiki https://wiki.garrysmod.com/page/DColorCube/TranslateValues",
      "@internal",
      "@param {DColorCube} this - no description",
      "@param {number} x - The x position to sample color from/the percentage of saturation to remove from the color (ranges from 0.0 to 1.0).",
      "@param {number} y - The y position to sample color from/the percentage of brightness or value to remove from the color (ranges from 0.0 to 1.0).",
      "@returns {number} - The given x position.",
      "@returns {number} - The given y position.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "DColorCube",
    "extends": [
      "DSlider"
    ],
    "name": "TranslateValues",
    "typings": [
      "(this: DColorCube, x: number, y: number): [number, number]"
    ]
  },
  {
    "comments": [
      "\nAppears to do nothing and unused.\n",
      "@name DColorCube:SetHue",
      "@wiki https://wiki.garrysmod.com/page/DColorCube/SetHue",
      "@param {DColorCube} this - no description",
      "@param {number} hue - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorCube",
    "extends": [
      "DSlider"
    ],
    "name": "SetHue",
    "typings": [
      "(this: DColorCube, hue: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the base color of the color cube and updates the slider position.\n",
      "@name DColorCube:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DColorCube/SetColor",
      "@param {DColorCube} this - no description",
      "@param {Color} color - The color to set, uses @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorCube",
    "extends": [
      "DSlider"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DColorCube, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the base color and the color used to draw the color cube panel itself.\n",
      "@name DColorCube:SetBaseRGB",
      "@wiki https://wiki.garrysmod.com/page/DColorCube/SetBaseRGB",
      "@note Calling this when using a color that isn't 100% saturated and valued (@HSVToColor function with saturation and value set to 1) causes the color cube to look inaccurate compared to the color that's returned by methods like @DColorCube:GetRGB and @DColorCube:OnUserChanged. You should use @DColorCube:SetColor instead",
      "@param {DColorCube} this - no description",
      "@param {Color} color - The base color to set, uses @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorCube",
    "extends": [
      "DSlider"
    ],
    "name": "SetBaseRGB",
    "typings": [
      "(this: DColorCube, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nFunction which is called when the color cube slider is moved (through user input). Meant to be overridden.\n",
      "@name DColorCube:OnUserChanged",
      "@wiki https://wiki.garrysmod.com/page/DColorCube/OnUserChanged",
      "@param {DColorCube} this - no description",
      "@param {Color} color - The new color, uses @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorCube",
    "extends": [
      "DSlider"
    ],
    "name": "OnUserChanged",
    "typings": [
      "(this: DColorCube, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nReturns the value set by @DColorCube:SetHue.\n",
      "@name DColorCube:GetHue",
      "@wiki https://wiki.garrysmod.com/page/DColorCube/GetHue",
      "@param {DColorCube} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DColorCube",
    "extends": [
      "DSlider"
    ],
    "name": "GetHue",
    "typings": [
      "(this: DColorCube): number"
    ]
  },
  {
    "comments": [
      "\nReturns the color cube's current set color.\n",
      "@name DColorCube:GetRGB",
      "@wiki https://wiki.garrysmod.com/page/DColorCube/GetRGB",
      "@param {DColorCube} this - no description",
      "@returns {IColor} - The set color, uses @IColor structure."
    ],
    "type": "class",
    "context": "DColorCube",
    "extends": [
      "DSlider"
    ],
    "name": "GetRGB",
    "typings": [
      "(this: DColorCube): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns the base Color set by @DColorCube:SetBaseRGB.\n",
      "@name DColorCube:GetBaseRGB",
      "@wiki https://wiki.garrysmod.com/page/DColorCube/GetBaseRGB",
      "@param {DColorCube} this - no description",
      "@returns {IColor} - A @IColor structure"
    ],
    "type": "class",
    "context": "DColorCube",
    "extends": [
      "DSlider"
    ],
    "name": "GetBaseRGB",
    "typings": [
      "(this: DColorCube): IColor"
    ]
  },
  {
    "comments": [
      "\nReturns true if the panel is currently being edited\nMore of a internal method, it technically should only ever work (i.e. return true) inside @DColorCombo:OnValueChanged.\n",
      "@name DColorCombo:IsEditing",
      "@wiki https://wiki.garrysmod.com/page/DColorCombo/IsEditing",
      "@param {DColorCombo} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DColorCombo",
    "extends": [
      "DPropertySheet"
    ],
    "name": "IsEditing",
    "typings": [
      "(this: DColorCombo): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the color of this panel.\n",
      "@name DColorCombo:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DColorCombo/SetColor",
      "@param {DColorCombo} this - no description",
      "@param {IColor} clr - A @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorCombo",
    "extends": [
      "DPropertySheet"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DColorCombo, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the value (color) of this panel was changed.\n",
      "@name DColorCombo:OnValueChanged",
      "@wiki https://wiki.garrysmod.com/page/DColorCombo/OnValueChanged",
      "@param {DColorCombo} this - no description",
      "@param {table} newcol - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorCombo",
    "extends": [
      "DPropertySheet"
    ],
    "name": "OnValueChanged",
    "typings": [
      "(this: DColorCombo, newcol: table): void"
    ]
  },
  {
    "comments": [
      "\nCalled internally to create panels necessary for this panel to work.\n",
      "@name DColorCombo:BuildControls",
      "@wiki https://wiki.garrysmod.com/page/DColorCombo/BuildControls",
      "@internal",
      "@param {DColorCombo} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorCombo",
    "extends": [
      "DPropertySheet"
    ],
    "name": "BuildControls",
    "typings": [
      "(this: DColorCombo): void"
    ]
  },
  {
    "comments": [
      "\nReturns the color of the @DColorCombo type.\n",
      "@name DColorCombo:GetColor",
      "@wiki https://wiki.garrysmod.com/page/DColorCombo/GetColor",
      "@param {DColorCombo} this - no description",
      "@returns {IColor} - A @IColor structure"
    ],
    "type": "class",
    "context": "DColorCombo",
    "extends": [
      "DPropertySheet"
    ],
    "name": "GetColor",
    "typings": [
      "(this: DColorCombo): IColor"
    ]
  },
  {
    "comments": [
      "\nSets the color of the @DColorButton type.\n",
      "@name DColorButton:SetColor",
      "@wiki https://wiki.garrysmod.com/page/DColorButton/SetColor",
      "@param {DColorButton} this - no description",
      "@param {Color} color - A @IColor structure to set the color as",
      "@param {boolean} noTooltip - If true, the tooltip will not be reset to display the selected color.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorButton",
    "extends": [
      "DLabel"
    ],
    "name": "SetColor",
    "typings": [
      "(this: DColorButton, color: Color, noTooltip?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nUsed internally by @DColorPalette type to detect which button is which.\n",
      "@name DColorButton:SetID",
      "@wiki https://wiki.garrysmod.com/page/DColorButton/SetID",
      "@param {DColorButton} this - no description",
      "@param {number} id - A unique ID to give this button",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DColorButton",
    "extends": [
      "DLabel"
    ],
    "name": "SetID",
    "typings": [
      "(this: DColorButton, id: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the @DColorButton type is currently being pressed (the user is holding it down).\n",
      "@name DColorButton:IsDown",
      "@wiki https://wiki.garrysmod.com/page/DColorButton/IsDown",
      "@param {DColorButton} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "DColorButton",
    "extends": [
      "DLabel"
    ],
    "name": "IsDown",
    "typings": [
      "(this: DColorButton): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the unique ID set by @DColorButton:SetID.\nUsed internally by @DColorPalette type\n",
      "@name DColorButton:GetID",
      "@wiki https://wiki.garrysmod.com/page/DColorButton/GetID",
      "@param {DColorButton} this - no description",
      "@returns {number} - The unique ID of the button"
    ],
    "type": "class",
    "context": "DColorButton",
    "extends": [
      "DLabel"
    ],
    "name": "GetID",
    "typings": [
      "(this: DColorButton): number"
    ]
  },
  {
    "comments": [
      "\nReturns the color of the button\n",
      "@name DColorButton:GetColor",
      "@wiki https://wiki.garrysmod.com/page/DColorButton/GetColor",
      "@param {DColorButton} this - no description",
      "@returns {IColor} - The @IColor structure of the button"
    ],
    "type": "class",
    "context": "DColorButton",
    "extends": [
      "DLabel"
    ],
    "name": "GetColor",
    "typings": [
      "(this: DColorButton): IColor"
    ]
  },
  {
    "comments": [
      "\nUsed internally to update the \"AltLine\" property on all \"child\" panels.\n",
      "@name DCollapsibleCategory:UpdateAltLines",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/UpdateAltLines",
      "@internal",
      "@param {DCollapsibleCategory} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "UpdateAltLines",
    "typings": [
      "(this: DCollapsibleCategory): void"
    ]
  },
  {
    "comments": [
      "@name DCollapsibleCategory:UnselectAll",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/UnselectAll",
      "@param {DCollapsibleCategory} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "UnselectAll",
    "typings": [
      "(this: DCollapsibleCategory): void"
    ]
  },
  {
    "comments": [
      "\nToggles the expanded state of the @DCollapsibleCategory type.\n",
      "@name DCollapsibleCategory:Toggle",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/Toggle",
      "@param {DCollapsibleCategory} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "Toggle",
    "typings": [
      "(this: DCollapsibleCategory): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the background should be painted.\n",
      "@name DCollapsibleCategory:SetPaintBackground",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/SetPaintBackground",
      "@param {DCollapsibleCategory} this - no description",
      "@param {boolean} paint - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "SetPaintBackground",
    "typings": [
      "(this: DCollapsibleCategory, paint: boolean): void"
    ]
  },
  {
    "comments": [
      "@name DCollapsibleCategory:SetStartHeight",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/SetStartHeight",
      "@param {DCollapsibleCategory} this - no description",
      "@param {number} height - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "SetStartHeight",
    "typings": [
      "(this: DCollapsibleCategory, height: number): void"
    ]
  },
  {
    "comments": [
      "\nDoesn't actually do anything.\n",
      "@name DCollapsibleCategory:SetPadding",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/SetPadding",
      "@param {DCollapsibleCategory} this - no description",
      "@param {number} padding - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "SetPadding",
    "typings": [
      "(this: DCollapsibleCategory, padding: number): void"
    ]
  },
  {
    "comments": [
      "@name DCollapsibleCategory:SetList",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/SetList",
      "@param {DCollapsibleCategory} this - no description",
      "@param {Panel} pnl - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "SetList",
    "typings": [
      "(this: DCollapsibleCategory, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the name of the DCollapsibleCategory.\n",
      "@name DCollapsibleCategory:SetLabel",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/SetLabel",
      "@param {DCollapsibleCategory} this - no description",
      "@param {string} label - The label/name of the DCollapsibleCategory.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "SetLabel",
    "typings": [
      "(this: DCollapsibleCategory, label: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the @DCollapsibleCategory type is expanded or not upon opening the container.\nYou should use @DCollapsibleCategory:Toggle or @DCollapsibleCategory:DoExpansion instead.\n",
      "@name DCollapsibleCategory:SetExpanded",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/SetExpanded",
      "@param {DCollapsibleCategory} this - no description",
      "@param {boolean} expanded - Whether it shall be expanded or not by default",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "SetExpanded",
    "typings": [
      "(this: DCollapsibleCategory, expanded?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the contents of the DCollapsibleCategory.\n",
      "@name DCollapsibleCategory:SetContents",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/SetContents",
      "@param {DCollapsibleCategory} this - no description",
      "@param {Panel} pnl - The panel, containing the contents for the DCollapsibleCategory, mostly an DScrollPanel",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "SetContents",
    "typings": [
      "(this: DCollapsibleCategory, pnl: Panel): void"
    ]
  },
  {
    "comments": [
      "\nSets the time in seconds it takes to expand the DCollapsibleCategory\n",
      "@name DCollapsibleCategory:SetAnimTime",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/SetAnimTime",
      "@param {DCollapsibleCategory} this - no description",
      "@param {number} time - The time in seconds it takes to expand",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "SetAnimTime",
    "typings": [
      "(this: DCollapsibleCategory, time: number): void"
    ]
  },
  {
    "comments": [
      "\nCalled by @DCollapsibleCategory:Toggle.\n",
      "@name DCollapsibleCategory:OnToggle",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/OnToggle",
      "@param {DCollapsibleCategory} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "OnToggle",
    "typings": [
      "(this: DCollapsibleCategory): void"
    ]
  },
  {
    "comments": [
      "@name DCollapsibleCategory:GetStartHeight",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/GetStartHeight",
      "@param {DCollapsibleCategory} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "GetStartHeight",
    "typings": [
      "(this: DCollapsibleCategory): number"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the background should be painted.\n",
      "@name DCollapsibleCategory:GetPaintBackground",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/GetPaintBackground",
      "@param {DCollapsibleCategory} this - no description",
      "@returns {boolean} - If the background is painted or not"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "GetPaintBackground",
    "typings": [
      "(this: DCollapsibleCategory): boolean"
    ]
  },
  {
    "comments": [
      "\nDoesn't actually do anything.\nReturns the number set by @DCollapsibleCategory:SetPadding.\n",
      "@name DCollapsibleCategory:GetPadding",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/GetPadding",
      "@param {DCollapsibleCategory} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "GetPadding",
    "typings": [
      "(this: DCollapsibleCategory): number"
    ]
  },
  {
    "comments": [
      "@name DCollapsibleCategory:GetList",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/GetList",
      "@param {DCollapsibleCategory} this - no description",
      "@returns {Panel} - no description"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "GetList",
    "typings": [
      "(this: DCollapsibleCategory): Panel"
    ]
  },
  {
    "comments": [
      "\nReturns whether the DCollapsibleCategory is expanded or not.\n",
      "@name DCollapsibleCategory:GetExpanded",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/GetExpanded",
      "@param {DCollapsibleCategory} this - no description",
      "@returns {boolean} - If expanded it will return true."
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "GetExpanded",
    "typings": [
      "(this: DCollapsibleCategory): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the expand/collapse animation time set by @DCollapsibleCategory:SetAnimTime.\n",
      "@name DCollapsibleCategory:GetAnimTime",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/GetAnimTime",
      "@param {DCollapsibleCategory} this - no description",
      "@returns {number} - The animation time in seconds"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "GetAnimTime",
    "typings": [
      "(this: DCollapsibleCategory): number"
    ]
  },
  {
    "comments": [
      "\nForces the category to open or collapse\n",
      "@name DCollapsibleCategory:DoExpansion",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/DoExpansion",
      "@param {DCollapsibleCategory} this - no description",
      "@param {boolean} expand - True to open, false to collapse",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "DoExpansion",
    "typings": [
      "(this: DCollapsibleCategory, expand: boolean): void"
    ]
  },
  {
    "comments": [
      "\nInternal function that handles the open/close animations.\n",
      "@name DCollapsibleCategory:AnimSlide",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/AnimSlide",
      "@internal",
      "@param {DCollapsibleCategory} this - no description",
      "@param {table} anim - no description",
      "@param {number} delta - no description",
      "@param {table} data - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "AnimSlide",
    "typings": [
      "(this: DCollapsibleCategory, anim: table, delta: number, data: table): void"
    ]
  },
  {
    "comments": [
      "\nAdds a new text button to the collapsible category, like the tool menu in Spawnmenu.\n",
      "@name DCollapsibleCategory:Add",
      "@wiki https://wiki.garrysmod.com/page/DCollapsibleCategory/Add",
      "@param {DCollapsibleCategory} this - no description",
      "@param {string} name - The name of the button",
      "@returns {DButton} - The @DButton type"
    ],
    "type": "class",
    "context": "DCollapsibleCategory",
    "extends": [
      "Panel"
    ],
    "name": "Add",
    "typings": [
      "(this: DCollapsibleCategory, name: string): DButton"
    ]
  },
  {
    "comments": [
      "\nToggles the checked state of the @DCheckBoxLabel type.\n",
      "@name DCheckBoxLabel:Toggle",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/Toggle",
      "@param {DCheckBoxLabel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "Toggle",
    "typings": [
      "(this: DCheckBoxLabel): void"
    ]
  },
  {
    "comments": [
      "\nSets the checked state of the checkbox, and calls @DCheckBoxLabel:OnChange and the checkbox's @Panel:ConVarChanged methods.\n",
      "@name DCheckBoxLabel:SetValue",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/SetValue",
      "@param {DCheckBoxLabel} this - no description",
      "@param {boolean} checked - Whether the box should be checked or not (1 or 0 can also be used).",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "SetValue",
    "typings": [
      "(this: DCheckBoxLabel, checked: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the text color for the @DCheckBoxLabel type.\n",
      "@name DCheckBoxLabel:SetTextColor",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/SetTextColor",
      "@param {DCheckBoxLabel} this - no description",
      "@param {Color} color - The text color. Uses the @IColor structure.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "SetTextColor",
    "typings": [
      "(this: DCheckBoxLabel, color: Color): void"
    ]
  },
  {
    "comments": [
      "\nSets the indentation of the element on the X axis.\n",
      "@name DCheckBoxLabel:SetIndent",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/SetIndent",
      "@param {DCheckBoxLabel} this - no description",
      "@param {number} ident - How much in pixels to move the content to the right",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "SetIndent",
    "typings": [
      "(this: DCheckBoxLabel, ident: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the font of the text part of the @DCheckBoxLabel type.\n",
      "@name DCheckBoxLabel:SetFont",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/SetFont",
      "@param {DCheckBoxLabel} this - no description",
      "@param {string} font - Font name",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "SetFont",
    "typings": [
      "(this: DCheckBoxLabel, font: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the text of the @DCheckBoxLabel type to be dark colored.\n",
      "@name DCheckBoxLabel:SetDark",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/SetDark",
      "@param {DCheckBoxLabel} this - no description",
      "@param {boolean} darkify - True to be dark, false to be default",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "SetDark",
    "typings": [
      "(this: DCheckBoxLabel, darkify: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the console variable to be set when the checked state of the @DCheckBoxLabel type changes.\n",
      "@name DCheckBoxLabel:SetConVar",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/SetConVar",
      "@param {DCheckBoxLabel} this - no description",
      "@param {string} convar - The name of the convar to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "SetConVar",
    "typings": [
      "(this: DCheckBoxLabel, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the @DCheckBoxLabel type's text to the bright text color defined in the skin.\n",
      "@name DCheckBoxLabel:SetBright",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/SetBright",
      "@param {DCheckBoxLabel} this - no description",
      "@param {boolean} bright - true makes the text bright.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "SetBright",
    "typings": [
      "(this: DCheckBoxLabel, bright: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the checked state of the checkbox. Does not call @DCheckBoxLabel:OnChange or @Panel:ConVarChanged, unlike @DCheckBoxLabel:SetValue.\n",
      "@name DCheckBoxLabel:SetChecked",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/SetChecked",
      "@param {DCheckBoxLabel} this - no description",
      "@param {boolean} checked - Whether the box should be checked or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "SetChecked",
    "typings": [
      "(this: DCheckBoxLabel, checked: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the \"checked\" state is changed.\n",
      "@name DCheckBoxLabel:OnChange",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/OnChange",
      "@param {DCheckBoxLabel} this - no description",
      "@param {boolean} bVal - Whether the checkbox is checked or unchecked.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "OnChange",
    "typings": [
      "(this: DCheckBoxLabel, bVal: boolean): void"
    ]
  },
  {
    "comments": [
      "\nGets the indentation of the element on the X axis.\n",
      "@name DCheckBoxLabel:GetIndent",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/GetIndent",
      "@param {DCheckBoxLabel} this - no description",
      "@returns {number} - How much the content is moved to the right in pixels"
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "GetIndent",
    "typings": [
      "(this: DCheckBoxLabel): number"
    ]
  },
  {
    "comments": [
      "\nGets the checked state of the checkbox. This calls the checkbox's @DCheckBox:GetChecked function.\n",
      "@name DCheckBoxLabel:GetChecked",
      "@wiki https://wiki.garrysmod.com/page/DCheckBoxLabel/GetChecked",
      "@param {DCheckBoxLabel} this - no description",
      "@returns {boolean} - Whether the box is checked or not."
    ],
    "type": "class",
    "context": "DCheckBoxLabel",
    "extends": [
      "DPanel"
    ],
    "name": "GetChecked",
    "typings": [
      "(this: DCheckBoxLabel): boolean"
    ]
  },
  {
    "comments": [
      "\nToggles the checked state of the checkbox, and calls the checkbox's @DCheckBox:OnChange and @Panel:ConVarChanged methods. This is called by @DCheckBox:DoClick.\n",
      "@name DCheckBox:Toggle",
      "@wiki https://wiki.garrysmod.com/page/DCheckBox/Toggle",
      "@param {DCheckBox} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBox",
    "extends": [
      "DButton"
    ],
    "name": "Toggle",
    "typings": [
      "(this: DCheckBox): void"
    ]
  },
  {
    "comments": [
      "\nSets the checked state of the checkbox, and calls the checkbox's @DCheckBox:OnChange and @Panel:ConVarChanged methods.\n",
      "@name DCheckBox:SetValue",
      "@wiki https://wiki.garrysmod.com/page/DCheckBox/SetValue",
      "@param {DCheckBox} this - no description",
      "@param {boolean} checked - Whether the box should be checked or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBox",
    "extends": [
      "DButton"
    ],
    "name": "SetValue",
    "typings": [
      "(this: DCheckBox, checked: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the checked state of the checkbox. Does not call the checkbox's @DCheckBox:OnChange and @Panel:ConVarChanged methods, unlike @DCheckBox:SetValue.\n",
      "@name DCheckBox:SetChecked",
      "@wiki https://wiki.garrysmod.com/page/DCheckBox/SetChecked",
      "@param {DCheckBox} this - no description",
      "@param {boolean} checked - Whether the box should be checked or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBox",
    "extends": [
      "DButton"
    ],
    "name": "SetChecked",
    "typings": [
      "(this: DCheckBox, checked: boolean): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the \"checked\" state is changed.\n",
      "@name DCheckBox:OnChange",
      "@wiki https://wiki.garrysmod.com/page/DCheckBox/OnChange",
      "@param {DCheckBox} this - no description",
      "@param {boolean} bVal - Whether the CheckBox is checked or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCheckBox",
    "extends": [
      "DButton"
    ],
    "name": "OnChange",
    "typings": [
      "(this: DCheckBox, bVal: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the state of the checkbox is being edited. This means whether the user is currently clicking (mouse-down) on the checkbox, and applies to both the left and right mouse buttons.\n",
      "@name DCheckBox:IsEditing",
      "@wiki https://wiki.garrysmod.com/page/DCheckBox/IsEditing",
      "@param {DCheckBox} this - no description",
      "@returns {boolean} - Whether the checkbox is being clicked."
    ],
    "type": "class",
    "context": "DCheckBox",
    "extends": [
      "DButton"
    ],
    "name": "IsEditing",
    "typings": [
      "(this: DCheckBox): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the checked state of the checkbox.\n",
      "@name DCheckBox:GetChecked",
      "@wiki https://wiki.garrysmod.com/page/DCheckBox/GetChecked",
      "@param {DCheckBox} this - no description",
      "@returns {boolean} - Whether the box is checked or not."
    ],
    "type": "class",
    "context": "DCheckBox",
    "extends": [
      "DButton"
    ],
    "name": "GetChecked",
    "typings": [
      "(this: DCheckBox): boolean"
    ]
  },
  {
    "comments": [
      "\nCalls @Panel:UnselectAll on all child elements, if they have it.\n",
      "@name DCategoryList:UnselectAll",
      "@wiki https://wiki.garrysmod.com/page/DCategoryList/UnselectAll",
      "@param {DCategoryList} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCategoryList",
    "extends": [
      "DScrollPanel"
    ],
    "name": "UnselectAll",
    "typings": [
      "(this: DCategoryList): void"
    ]
  },
  {
    "comments": [
      "\nAdds an element to the list.\n",
      "@name DCategoryList:AddItem",
      "@wiki https://wiki.garrysmod.com/page/DCategoryList/AddItem",
      "@param {DCategoryList} this - no description",
      "@param {Panel} element - VGUI element to add to the list.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DCategoryList",
    "extends": [
      "DScrollPanel"
    ],
    "name": "AddItem",
    "typings": [
      "(this: DCategoryList, element: Panel): void"
    ]
  },
  {
    "comments": [
      "\nAdds a @DCollapsibleCategory type to the list.\n",
      "@name DCategoryList:Add",
      "@wiki https://wiki.garrysmod.com/page/DCategoryList/Add",
      "@param {DCategoryList} this - no description",
      "@param {string} categoryName - The name of the category to add.",
      "@returns {DCollapsibleCategory} - The created @DCollapsibleCategory type"
    ],
    "type": "class",
    "context": "DCategoryList",
    "extends": [
      "DScrollPanel"
    ],
    "name": "Add",
    "typings": [
      "(this: DCategoryList, categoryName: string): DCollapsibleCategory"
    ]
  },
  {
    "comments": [
      "@name DButton2:Test",
      "@wiki https://wiki.garrysmod.com/page/DButton2/Test",
      "@param {DButton2} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DButton2",
    "extends": [
      "DLabel"
    ],
    "name": "Test",
    "typings": [
      "(this: DButton2): void"
    ]
  },
  {
    "comments": [
      "\nA hook called from within @DLabel type's @PanelHooks:ApplySchemeSettings to determine the color of the text on display.\n",
      "@name DButton:UpdateColors",
      "@wiki https://wiki.garrysmod.com/page/DButton/UpdateColours",
      "@param {DButton} this - no description",
      "@param {table} skin - A table supposed to contain the color values listed above.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DButton",
    "extends": [
      "DLabel"
    ],
    "name": "UpdateColors",
    "typings": [
      "(this: DButton, skin: table): void"
    ]
  },
  {
    "comments": [
      "\nSets an image to be displayed as the button's background.\nAlso see: @DImageButton type\n",
      "@name DButton:SetImage",
      "@wiki https://wiki.garrysmod.com/page/DButton/SetImage",
      "@param {DButton} this - no description",
      "@param {string} img - The image file to use, relative to * /materials*. If this is nil, the image background is removed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DButton",
    "extends": [
      "DLabel"
    ],
    "name": "SetImage",
    "typings": [
      "(this: DButton, img?: string): void"
    ]
  },
  {
    "comments": [
      "\nDoes absolutely nothing at all. Default value is automatically set to true.\n",
      "@name DButton:SetDrawBorder",
      "@wiki https://wiki.garrysmod.com/page/DButton/SetDrawBorder",
      "@param {DButton} this - no description",
      "@param {boolean} draw - Does nothing.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DButton",
    "extends": [
      "DLabel"
    ],
    "name": "SetDrawBorder",
    "typings": [
      "(this: DButton, draw: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets an image to be displayed as the button's background. Alias of @DButton:SetImage\n",
      "@name DButton:SetIcon",
      "@wiki https://wiki.garrysmod.com/page/DButton/SetIcon",
      "@param {DButton} this - no description",
      "@param {string} img - The image file to use, relative to * /materials*. If this is nil, the image background is removed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DButton",
    "extends": [
      "DLabel"
    ],
    "name": "SetIcon",
    "typings": [
      "(this: DButton, img?: string): void"
    ]
  },
  {
    "comments": [
      "\nSets whether or not the DButton is disabled.\nWhen disabled, the button is *greyed out* and cannot be clicked.\n",
      "@name DButton:SetDisabled",
      "@wiki https://wiki.garrysmod.com/page/DButton/SetDisabled",
      "@param {DButton} this - no description",
      "@param {boolean} disable - if true, Enable the button and if false, Disable the button",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DButton",
    "extends": [
      "DLabel"
    ],
    "name": "SetDisabled",
    "typings": [
      "(this: DButton, disable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets a console command to be called when the button is clicked.\nThis overrides the button's *DoClick* method.\n",
      "@name DButton:SetConsoleCommand",
      "@wiki https://wiki.garrysmod.com/page/DButton/SetConsoleCommand",
      "@param {DButton} this - no description",
      "@param {string} command - The console command to be called.",
      "@param {string} args - The arguments for the command.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DButton",
    "extends": [
      "DLabel"
    ],
    "name": "SetConsoleCommand",
    "typings": [
      "(this: DButton, command: string, args: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns value set by @DButton:SetDrawBorder. See that page for more info.\n",
      "@name DButton:GetDrawBorder",
      "@wiki https://wiki.garrysmod.com/page/DButton/GetDrawBorder",
      "@param {DButton} this - no description",
      "@returns {boolean} - value set by @DButton:SetDrawBorder."
    ],
    "type": "class",
    "context": "DButton",
    "extends": [
      "DLabel"
    ],
    "name": "GetDrawBorder",
    "typings": [
      "(this: DButton): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the DButton is currently depressed (a user is clicking on it).\n",
      "@name DButton:IsDown",
      "@wiki https://wiki.garrysmod.com/page/DButton/IsDown",
      "@param {DButton} this - no description",
      "@returns {boolean} - Whether or not the button is depressed."
    ],
    "type": "class",
    "context": "DButton",
    "extends": [
      "DLabel"
    ],
    "name": "IsDown",
    "typings": [
      "(this: DButton): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the speech bubble position and size along with the dialog point position.\n",
      "@name DBubbleContainer:OpenForPos",
      "@wiki https://wiki.garrysmod.com/page/DBubbleContainer/OpenForPos",
      "@param {DBubbleContainer} this - no description",
      "@param {number} x - The x position of the dialog point. If this is set to a value greater than half of the set width, the entire bubble container will be moved in addition to the dialog point.",
      "@param {number} y - The y position of the bubble container. Has no effect unless set to a value greater than the set height + 64 pixels.",
      "@param {number} w - The width of the bubble container.",
      "@param {number} h - The height of the bubble container.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DBubbleContainer",
    "extends": [
      "DPanel"
    ],
    "name": "OpenForPos",
    "typings": [
      "(this: DBubbleContainer, x: number, y: number, w: number, h: number): void"
    ]
  },
  {
    "comments": [
      "\nUsed to set the text of the DBinder to the current key binding, or *NONE*.\n",
      "@name DBinder:UpdateText",
      "@wiki https://wiki.garrysmod.com/page/DBinder/UpdateText",
      "@internal",
      "@param {DBinder} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DBinder",
    "extends": [
      "DButton"
    ],
    "name": "UpdateText",
    "typings": [
      "(this: DBinder): void"
    ]
  },
  {
    "comments": [
      "\nAlias of @DBinder:SetSelected.\n",
      "@name DBinder:SetValue",
      "@wiki https://wiki.garrysmod.com/page/DBinder/SetValue",
      "@param {DBinder} this - no description",
      "@param {KEY} keyCode - The key code of the key to bind. See @KEY enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DBinder",
    "extends": [
      "DButton"
    ],
    "name": "SetValue",
    "typings": [
      "(this: DBinder, keyCode: KEY): void"
    ]
  },
  {
    "comments": [
      "\nSets the current key bound by the @DBinder type, and updates the button's text as well as the @ConVar type.\n",
      "@name DBinder:SetSelectedNumber",
      "@wiki https://wiki.garrysmod.com/page/DBinder/SetSelectedNumber",
      "@param {DBinder} this - no description",
      "@param {KEY} keyCode - The key code of the key to bind. See @KEY enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DBinder",
    "extends": [
      "DButton"
    ],
    "name": "SetSelectedNumber",
    "typings": [
      "(this: DBinder, keyCode: KEY): void"
    ]
  },
  {
    "comments": [
      "\nCalled when the player selects a new bind.\n",
      "@name DBinder:OnChange",
      "@wiki https://wiki.garrysmod.com/page/DBinder/OnChange",
      "@param {DBinder} this - no description",
      "@param {number} iNum - The new bound key. See @input.GetKeyName.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DBinder",
    "extends": [
      "DButton"
    ],
    "name": "OnChange",
    "typings": [
      "(this: DBinder, iNum: number): void"
    ]
  },
  {
    "comments": [
      "\nGets the code of the key currently bound by the DBinder. Same as @DBinder:GetSelectedNumber.\n",
      "@name DBinder:GetValue",
      "@wiki https://wiki.garrysmod.com/page/DBinder/GetValue",
      "@param {DBinder} this - no description",
      "@returns {KEY} - The key code of the bound key. See @KEY enum."
    ],
    "type": "class",
    "context": "DBinder",
    "extends": [
      "DButton"
    ],
    "name": "GetValue",
    "typings": [
      "(this: DBinder): KEY"
    ]
  },
  {
    "comments": [
      "\nGets the code of the key currently bound by the DBinder. Same as @DBinder:GetValue.\n",
      "@name DBinder:GetSelectedNumber",
      "@wiki https://wiki.garrysmod.com/page/DBinder/GetSelectedNumber",
      "@param {DBinder} this - no description",
      "@returns {KEY} - The key code of the bound key. See @KEY enum."
    ],
    "type": "class",
    "context": "DBinder",
    "extends": [
      "DButton"
    ],
    "name": "GetSelectedNumber",
    "typings": [
      "(this: DBinder): KEY"
    ]
  },
  {
    "comments": [
      "\nSets the alpha value or the alpha bar.\n",
      "@name DAlphaBar:SetValue",
      "@wiki https://wiki.garrysmod.com/page/DAlphaBar/SetValue",
      "@param {DAlphaBar} this - no description",
      "@param {number} alpha - The new alpha value to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DAlphaBar",
    "extends": [
      "DPanel"
    ],
    "name": "SetValue",
    "typings": [
      "(this: DAlphaBar, alpha: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the base color of the alpha bar. This is the color for which the alpha channel is being modified.\n",
      "@name DAlphaBar:SetBarColor",
      "@wiki https://wiki.garrysmod.com/page/DAlphaBar/SetBarColor",
      "@param {DAlphaBar} this - no description",
      "@param {IColor} clr - The new @IColor structure to set. See @Color function.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DAlphaBar",
    "extends": [
      "DPanel"
    ],
    "name": "SetBarColor",
    "typings": [
      "(this: DAlphaBar, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "\nCalled when user changes the desired alpha value with the control.\n",
      "@name DAlphaBar:OnChange",
      "@wiki https://wiki.garrysmod.com/page/DAlphaBar/OnChange",
      "@param {DAlphaBar} this - no description",
      "@param {number} alpha - The new alpha value",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DAlphaBar",
    "extends": [
      "DPanel"
    ],
    "name": "OnChange",
    "typings": [
      "(this: DAlphaBar, alpha: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the alpha value of the alpha bar.\n",
      "@name DAlphaBar:GetValue",
      "@wiki https://wiki.garrysmod.com/page/DAlphaBar/GetValue",
      "@param {DAlphaBar} this - no description",
      "@returns {number} - The current alpha value."
    ],
    "type": "class",
    "context": "DAlphaBar",
    "extends": [
      "DPanel"
    ],
    "name": "GetValue",
    "typings": [
      "(this: DAlphaBar): number"
    ]
  },
  {
    "comments": [
      "\nReturns the base color of the alpha bar. This is the color for which the alpha channel is being modified.\n",
      "@name DAlphaBar:GetBarColor",
      "@wiki https://wiki.garrysmod.com/page/DAlphaBar/GetBarColor",
      "@param {DAlphaBar} this - no description",
      "@returns {table} - The current base color."
    ],
    "type": "class",
    "context": "DAlphaBar",
    "extends": [
      "DPanel"
    ],
    "name": "GetBarColor",
    "typings": [
      "(this: DAlphaBar): table"
    ]
  },
  {
    "comments": [
      "\nEnables mouse and keyboard-based adjustment of the perspective.\nThis is set to *true* automatically each time mouse capture is enabled, and hence doesn't serve as a usable setting, other than to disable this functionality after the @PanelHooks:OnMousePressed event.\n",
      "@name DAdjustableModelPanel:SetFirstPerson",
      "@wiki https://wiki.garrysmod.com/page/DAdjustableModelPanel/SetFirstPerson",
      "@param {DAdjustableModelPanel} this - no description",
      "@param {boolean} enable - Whether to enable/disable first person controls. See @DAdjustableModelPanel:FirstPersonControls.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DAdjustableModelPanel",
    "extends": [
      "DModelPanel"
    ],
    "name": "SetFirstPerson",
    "typings": [
      "(this: DAdjustableModelPanel, enable: boolean): void"
    ]
  },
  {
    "comments": [
      "\nGets whether mouse and keyboard-based adjustment of the perspective has been enabled. See @DAdjustableModelPanel:SetFirstPerson for more information.\n",
      "@name DAdjustableModelPanel:GetFirstPerson",
      "@wiki https://wiki.garrysmod.com/page/DAdjustableModelPanel/GetFirstPerson",
      "@param {DAdjustableModelPanel} this - no description",
      "@returns {boolean} - Whether first person controls are enabled. See @DAdjustableModelPanel:FirstPersonControls."
    ],
    "type": "class",
    "context": "DAdjustableModelPanel",
    "extends": [
      "DModelPanel"
    ],
    "name": "GetFirstPerson",
    "typings": [
      "(this: DAdjustableModelPanel): boolean"
    ]
  },
  {
    "comments": [
      "\nUsed to adjust the perspective in the model panel via the keyboard, when the right mouse button is used.\n",
      "@name DAdjustableModelPanel:FirstPersonControls",
      "@wiki https://wiki.garrysmod.com/page/DAdjustableModelPanel/FirstPersonControls",
      "@internal",
      "@param {DAdjustableModelPanel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DAdjustableModelPanel",
    "extends": [
      "DModelPanel"
    ],
    "name": "FirstPersonControls",
    "typings": [
      "(this: DAdjustableModelPanel): void"
    ]
  },
  {
    "comments": [
      "\nUsed by the panel to perform mouse capture operations when adjusting the model.\n",
      "@name DAdjustableModelPanel:CaptureMouse",
      "@wiki https://wiki.garrysmod.com/page/DAdjustableModelPanel/CaptureMouse",
      "@internal",
      "@param {DAdjustableModelPanel} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "DAdjustableModelPanel",
    "extends": [
      "DModelPanel"
    ],
    "name": "CaptureMouse",
    "typings": [
      "(this: DAdjustableModelPanel): void"
    ]
  },
  {
    "comments": [
      "\nRetrieves console variable as a string.\n",
      "@name cvars.str",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/cvars/String",
      "@param {void} this - no description",
      "@param {string} cvar - Name of console variable",
      "@param {any} def - The value to return if the console variable does not exist",
      "@returns {string} - Retrieved value"
    ],
    "type": "func",
    "context": "cvars",
    "name": "str",
    "typings": [
      "(this: void, cvar: string, def?: any): string"
    ]
  },
  {
    "comments": [
      "\nRemoves a callback for a convar using the the callback's identifier. The identifier should be the third argument specified for @cvars.AddChangeCallback.\n",
      "@name cvars.RemoveChangeCallback",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/cvars/RemoveChangeCallback",
      "@param {void} this - no description",
      "@param {string} name - The name of the convar to remove the callback from.",
      "@param {string} indentifier - The callback's identifier.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cvars",
    "name": "RemoveChangeCallback",
    "typings": [
      "(this: void, name: string, indentifier: string): void"
    ]
  },
  {
    "comments": [
      "\nCalled by the engine when a convar value changes.\n",
      "@name cvars.OnConVarChanged",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/cvars/OnConVarChanged",
      "@internal You are probably looking for @cvars.AddChangeCallback.",
      "@param {void} this - no description",
      "@param {string} name - Convar name",
      "@param {string} oldVal - The old value of the convar",
      "@param {string} newVal - The new value of the convar",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cvars",
    "name": "OnConVarChanged",
    "typings": [
      "(this: void, name: string, oldVal: string, newVal: string): void"
    ]
  },
  {
    "comments": [
      "\nRetrieves console variable as a number.\n",
      "@name cvars.num",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/cvars/Number",
      "@param {void} this - no description",
      "@param {string} cvar - Name of console variable",
      "@param {any} def - The value to return if the console variable does not exist",
      "@returns {number} - Retrieved value"
    ],
    "type": "func",
    "context": "cvars",
    "name": "num",
    "typings": [
      "(this: void, cvar: string, def?: any): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table of the given @ConVar types callbacks.\n",
      "@name cvars.GetConVarCallbacks",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/cvars/GetConVarCallbacks",
      "@param {void} this - no description",
      "@param {string} name - The name of the @ConVar type.",
      "@param {boolean} createIfNotFound - Whether or not to create the internal callback table for given @ConVar type if there isn't one yet.\nThis argument is internal and should not be used.",
      "@returns {table} - A table of the convar's callbacks, or nil if the convar doesn't exist."
    ],
    "type": "func",
    "context": "cvars",
    "name": "GetConVarCallbacks",
    "typings": [
      "(this: void, name: string, createIfNotFound?: boolean): table"
    ]
  },
  {
    "comments": [
      "\nRetrieves console variable as a boolean.\n",
      "@name cvars.Bool",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/cvars/Bool",
      "@param {void} this - no description",
      "@param {string} cvar - Name of console variable",
      "@param {boolean} def - The value to return if the console variable does not exist",
      "@returns {boolean} - Retrieved value"
    ],
    "type": "func",
    "context": "cvars",
    "name": "Bool",
    "typings": [
      "(this: void, cvar: string, def?: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nAdds a callback to be called when the named convar changes.\n",
      "@name cvars.AddChangeCallback",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/cvars/AddChangeCallback",
      "@bug #1440 This does not callback convars in the menu state.",
      "@bug #3503 This does not callback convars on the client with FCVAR_GAMEDLL and convars on the server without FCVAR_GAMEDLL.",
      "@bug #3740 This does not callback convars on the client with FCVAR_REPLICATED.",
      "@param {void} this - no description",
      "@param {string} name - The name of the convar to add the change callback to.",
      "@param {function} callback - The function to be called when the convar changes. The arguments passed are:",
      "@param {string} identifier - If set, you will be able to remove the callback using @cvars.RemoveChangeCallback.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cvars",
    "name": "AddChangeCallback",
    "typings": [
      "(this: void, name: string, callback: cvarsAddChangeCallbackCallback, identifier?: string): void"
    ],
    "types": [
      {
        "comments": [
          "@type cvarsAddChangeCallbackCallback",
          "@param {void} this - no description",
          "@param {string} convar - The name of the convar.",
          "@param {string} oldValue - The old value of the convar.",
          "@param {string} newValue - The new value of the convar."
        ],
        "type": "type",
        "name": "cvarsAddChangeCallbackCallback",
        "typing": "(this: void, convar: string, oldValue: string, newValue: string) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nReturns tick count since joining the server.\n",
      "@name CUserCmd:TickCount",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/TickCount",
      "@note This will always return 0 for bots.",
      "@note Returns 0 clientside during prediction calls. If you are trying to use CUserCmd:Set*() on the client in a movement or command hook, keep doing so till TickCount returns a non-zero number to maintain prediction.",
      "@param {CUserCmd} this - no description",
      "@returns {number} - The amount of ticks passed since joining the server."
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "TickCount",
    "typings": [
      "(this: CUserCmd): number"
    ]
  },
  {
    "comments": [
      "\nSets the direction the client wants to move in.\n",
      "@name CUserCmd:SetViewAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/SetViewAngles",
      "@note The pitch (vertical) angle should be clamped to +/- 89° to prevent the player's view from glitching.",
      "@param {CUserCmd} this - no description",
      "@param {Angle} viewAngle - New view angles.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "SetViewAngles",
    "typings": [
      "(this: CUserCmd, viewAngle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets speed the client wishes to move sidewards with, positive to move right, negative to move left.\nSee also @CUserCmd:SetForwardMove and  @CUserCmd:SetUpMove.\n",
      "@name CUserCmd:SetSideMove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/SetSideMove",
      "@param {CUserCmd} this - no description",
      "@param {number} speed - The new speed to request.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "SetSideMove",
    "typings": [
      "(this: CUserCmd, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets speed the client wishes to move upwards with, negative to move down.\nSee also @CUserCmd:SetSideMove and  @CUserCmd:SetForwardMove.\n",
      "@name CUserCmd:SetUpMove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/SetUpMove",
      "@param {CUserCmd} this - no description",
      "@param {number} speed - The new speed to request.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "SetUpMove",
    "typings": [
      "(this: CUserCmd, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the delta of the angular horizontal mouse movement of the player.\nSee also @CUserCmd:SetMouseY.\n",
      "@name CUserCmd:SetMouseX",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/SetMouseX",
      "@param {CUserCmd} this - no description",
      "@param {number} speed - Angular horizontal move delta.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "SetMouseX",
    "typings": [
      "(this: CUserCmd, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the delta of the angular vertical mouse movement of the player.\nSee also @CUserCmd:SetMouseX.\n",
      "@name CUserCmd:SetMouseY",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/SetMouseY",
      "@param {CUserCmd} this - no description",
      "@param {number} speed - Angular vertical move delta.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "SetMouseY",
    "typings": [
      "(this: CUserCmd, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the scroll delta.\n",
      "@name CUserCmd:SetMouseWheel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/SetMouseWheel",
      "@param {CUserCmd} this - no description",
      "@param {number} speed - The scroll delta.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "SetMouseWheel",
    "typings": [
      "(this: CUserCmd, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the impulse command to be sent to the server.\nFor example, 101 is an impulse that will give the player all Half-Life 2 weapons with sv_cheats set to 1. Impulse 100 will toggle their flashlight.\n",
      "@name CUserCmd:SetImpulse",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/SetImpulse",
      "@param {CUserCmd} this - no description",
      "@param {number} speed - The impulse to send.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "SetImpulse",
    "typings": [
      "(this: CUserCmd, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets speed the client wishes to move forward with, negative if the clients wants to move backwards.\nSee also @CUserCmd:ClearMovement, @CUserCmd:SetSideMove and @CUserCmd:SetUpMove.\n",
      "@name CUserCmd:SetForwardMove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/SetForwardMove",
      "@param {CUserCmd} this - no description",
      "@param {number} speed - The new speed to request. The client will not be able to move faster than their set walk/sprint speed.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "SetForwardMove",
    "typings": [
      "(this: CUserCmd, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the buttons as a bitflag. See also @CUserCmd:GetButtons.\n",
      "@name CUserCmd:SetButtons",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/SetButtons",
      "@note If you are looking to affect player movement, you may need to use @CUserCmd:SetForwardMove instead of setting the keys.",
      "@param {CUserCmd} this - no description",
      "@param {IN} buttons - Bitflag representing which buttons are \"down\", see @IN enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "SetButtons",
    "typings": [
      "(this: CUserCmd, buttons: IN): void"
    ]
  },
  {
    "comments": [
      "\nForces the associated player to select a weapon. This is used internally in the default HL2 weapon selection HUD.\nThis may not work immediately if the current command is in prediction. Use @input.SelectWeapon to switch the weapon from the client when the next available command can do so.\n",
      "@name CUserCmd:SelectWeapon",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/SelectWeapon",
      "@note This is the ideal function to use to create a custom weapon selection HUD, as it allows prediction to run properly for @WeaponHooks:Deploy and @GamemodeHooks:PlayerSwitchWeapon",
      "@param {CUserCmd} this - no description",
      "@param {Weapon} weapon - The weapon entity to select.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "SelectWeapon",
    "typings": [
      "(this: CUserCmd, weapon: Weapon): void"
    ]
  },
  {
    "comments": [
      "\nRemoved a key bit from the current key bitflag.\n",
      "@name CUserCmd:RemoveKey",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/RemoveKey",
      "@param {CUserCmd} this - no description",
      "@param {IN} button - Bitflag to be removed from the key bitflag, see @IN enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "RemoveKey",
    "typings": [
      "(this: CUserCmd, button: IN): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if the specified button(s) is pressed.\n",
      "@name CUserCmd:KeyDown",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/KeyDown",
      "@param {CUserCmd} this - no description",
      "@param {IN} key - Bitflag representing which button to check, see @IN enum.",
      "@returns {boolean} - Is key down or not"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "KeyDown",
    "typings": [
      "(this: CUserCmd, key: IN): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the direction the player is looking in.\n",
      "@name CUserCmd:GetViewAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/GetViewAngles",
      "@param {CUserCmd} this - no description",
      "@returns {Angle} - requestDir"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "GetViewAngles",
    "typings": [
      "(this: CUserCmd): Angle"
    ]
  },
  {
    "comments": [
      "\nThe speed the client wishes to move up with, negative if the clients wants to move down.\n",
      "@name CUserCmd:GetUpMove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/GetUpMove",
      "@param {CUserCmd} this - no description",
      "@returns {number} - requestSpeed"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "GetUpMove",
    "typings": [
      "(this: CUserCmd): number"
    ]
  },
  {
    "comments": [
      "\nThe speed the client wishes to move sideways with, positive if it wants to move right, negative if it wants to move left.\n",
      "@name CUserCmd:GetSideMove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/GetSideMove",
      "@param {CUserCmd} this - no description",
      "@returns {number} - requestSpeed"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "GetSideMove",
    "typings": [
      "(this: CUserCmd): number"
    ]
  },
  {
    "comments": [
      "\nReturns the delta of the angular vertical mouse movement of the player.\n",
      "@name CUserCmd:GetMouseY",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/GetMouseY",
      "@param {CUserCmd} this - no description",
      "@returns {number} - yDelta"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "GetMouseY",
    "typings": [
      "(this: CUserCmd): number"
    ]
  },
  {
    "comments": [
      "\nReturns the delta of the angular horizontal mouse movement of the player.\n",
      "@name CUserCmd:GetMouseX",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/GetMouseX",
      "@param {CUserCmd} this - no description",
      "@returns {number} - xDelta"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "GetMouseX",
    "typings": [
      "(this: CUserCmd): number"
    ]
  },
  {
    "comments": [
      "\nReturns the scroll delta as whole number.\n",
      "@name CUserCmd:GetMouseWheel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/GetMouseWheel",
      "@param {CUserCmd} this - no description",
      "@returns {number} - Scroll delta"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "GetMouseWheel",
    "typings": [
      "(this: CUserCmd): number"
    ]
  },
  {
    "comments": [
      "\nGets the current impulse from the client, usually 0.\n",
      "@name CUserCmd:GetImpulse",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/GetImpulse",
      "@param {CUserCmd} this - no description",
      "@returns {number} - The impulse"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "GetImpulse",
    "typings": [
      "(this: CUserCmd): number"
    ]
  },
  {
    "comments": [
      "\nWhen players are not sending usercommands to the server (often due to lag), their last usercommand will be executed multiple times as a backup. This function returns true if that is happening.\nThis will never return true clientside.\n",
      "@name CUserCmd:IsForced",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/IsForced",
      "@param {CUserCmd} this - no description",
      "@returns {boolean} - isForced"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "IsForced",
    "typings": [
      "(this: CUserCmd): boolean"
    ]
  },
  {
    "comments": [
      "\nThe speed the client wishes to move forward with, negative if the clients wants to move backwards.\n",
      "@name CUserCmd:GetForwardMove",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/GetForwardMove",
      "@param {CUserCmd} this - no description",
      "@returns {number} - The desired speed"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "GetForwardMove",
    "typings": [
      "(this: CUserCmd): number"
    ]
  },
  {
    "comments": [
      "\nReturns a bitflag indicating which buttons are pressed.\n",
      "@name CUserCmd:GetButtons",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/GetButtons",
      "@param {CUserCmd} this - no description",
      "@returns {IN} - Pressed buttons, see @IN enum"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "GetButtons",
    "typings": [
      "(this: CUserCmd): IN"
    ]
  },
  {
    "comments": [
      "\nReturns an increasing number representing the index of the user cmd.\n",
      "@name CUserCmd:CommandNumber",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/CommandNumber",
      "@warning The value returned is occasionally 0 inside @GamemodeHooks:CreateMove and @GamemodeHooks:StartCommand. It is advised to check for a non-zero value if you wish to get the correct number.",
      "@param {CUserCmd} this - no description",
      "@returns {number} - The command number"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "CommandNumber",
    "typings": [
      "(this: CUserCmd): number"
    ]
  },
  {
    "comments": [
      "\nClears the movement from the command.\nSee also @CUserCmd:SetForwardMove, @CUserCmd:SetSideMove and  @CUserCmd:SetUpMove.\n",
      "@name CUserCmd:ClearMovement",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/ClearMovement",
      "@param {CUserCmd} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "ClearMovement",
    "typings": [
      "(this: CUserCmd): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all keys from the command.\n",
      "@name CUserCmd:ClearButtons",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CUserCmd/ClearButtons",
      "@note If you are looking to affect player movement, you may need to use @CUserCmd:ClearMovement instead of clearing the buttons.",
      "@param {CUserCmd} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CUserCmd",
    "name": "ClearButtons",
    "typings": [
      "(this: CUserCmd): void"
    ]
  },
  {
    "comments": [
      "\nSubtracts the specified amount from the damage.\n",
      "@name CTakeDamageInfo:SubtractDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SubtractDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@param {number} damage - Value to subtract.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SubtractDamage",
    "typings": [
      "(this: CTakeDamageInfo, damage: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the origin of the damage.\n",
      "@name CTakeDamageInfo:SetReportedPosition",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetReportedPosition",
      "@param {CTakeDamageInfo} this - no description",
      "@param {Vector} pos - The location of where the damage is originating",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetReportedPosition",
    "typings": [
      "(this: CTakeDamageInfo, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum damage the object can cause.\n",
      "@name CTakeDamageInfo:SetMaxDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetMaxDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@param {number} maxDamage - Maximum damage value.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetMaxDamage",
    "typings": [
      "(this: CTakeDamageInfo, maxDamage: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the damage type.\n",
      "@name CTakeDamageInfo:SetDamageType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetDamageType",
      "@param {CTakeDamageInfo} this - no description",
      "@param {DMG} type - The damage type, see @DMG enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetDamageType",
    "typings": [
      "(this: CTakeDamageInfo, type: DMG): void"
    ]
  },
  {
    "comments": [
      "\nSets the inflictor of the damage for example a weapon.\nFor hitscan/bullet weapons this should the weapon.\nFor projectile ( rockets, etc ) weapons this should be the projectile.\n",
      "@name CTakeDamageInfo:SetInflictor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetInflictor",
      "@param {CTakeDamageInfo} this - no description",
      "@param {Entity} inflictor - The new inflictor.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetInflictor",
    "typings": [
      "(this: CTakeDamageInfo, inflictor: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets the position of where the damage gets applied to.\n",
      "@name CTakeDamageInfo:SetDamagePosition",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetDamagePosition",
      "@param {CTakeDamageInfo} this - no description",
      "@param {Vector} pos - The position where the damage will be applied.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetDamagePosition",
    "typings": [
      "(this: CTakeDamageInfo, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the directional force of the damage.\n",
      "@name CTakeDamageInfo:SetDamageForce",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetDamageForce",
      "@param {CTakeDamageInfo} this - no description",
      "@param {Vector} force - The vector to set the force to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetDamageForce",
    "typings": [
      "(this: CTakeDamageInfo, force: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the custom damage type. This is used by Day of Defeat: Source and Team Fortress 2 for extended damage info, but isn't used in Garry's Mod by default.\n",
      "@name CTakeDamageInfo:SetDamageCustom",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetDamageCustom",
      "@param {CTakeDamageInfo} this - no description",
      "@param {number} DamageType - Any integer - can be based on your own custom enums.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetDamageCustom",
    "typings": [
      "(this: CTakeDamageInfo, DamageType: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the bonus damage. Bonus damage isn't automatically applied, so this will have no outer effect by default.\n",
      "@name CTakeDamageInfo:SetDamageBonus",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetDamageBonus",
      "@param {CTakeDamageInfo} this - no description",
      "@param {number} damage - The extra damage to be added.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetDamageBonus",
    "typings": [
      "(this: CTakeDamageInfo, damage: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the amount of damage.\n",
      "@name CTakeDamageInfo:SetDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@param {number} damage - The value to set the absolute damage to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetDamage",
    "typings": [
      "(this: CTakeDamageInfo, damage: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the attacker ( character who originated the attack ) of the damage, for example a player or an NPC.\n",
      "@name CTakeDamageInfo:SetAttacker",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetAttacker",
      "@param {CTakeDamageInfo} this - no description",
      "@param {Entity} ent - The entity to be set as the attacker.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetAttacker",
    "typings": [
      "(this: CTakeDamageInfo, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nChanges the ammo type used by the weapon that inflicted the damage.\n",
      "@name CTakeDamageInfo:SetAmmoType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/SetAmmoType",
      "@param {CTakeDamageInfo} this - no description",
      "@param {number} ammoType - Ammo type ID",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "SetAmmoType",
    "typings": [
      "(this: CTakeDamageInfo, ammoType: number): void"
    ]
  },
  {
    "comments": [
      "\nScales the damage by the given value.\n",
      "@name CTakeDamageInfo:ScaleDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/ScaleDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@param {number} scale - Value to scale the damage with.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "ScaleDamage",
    "typings": [
      "(this: CTakeDamageInfo, scale: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the damageinfo contains fall damage.\n",
      "@name CTakeDamageInfo:IsFallDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/IsFallDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {boolean} - isFallDmg"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "IsFallDamage",
    "typings": [
      "(this: CTakeDamageInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the damageinfo contains the damage type specified.\n",
      "@name CTakeDamageInfo:IsDamageType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/IsDamageType",
      "@param {CTakeDamageInfo} this - no description",
      "@param {DMG} dmgType - Damage type to test. See @DMG enum.",
      "@returns {boolean} - Whether this damage contains specified damage type or not"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "IsDamageType",
    "typings": [
      "(this: CTakeDamageInfo, dmgType: DMG): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the damageinfo contains explosion damage.\n",
      "@name CTakeDamageInfo:IsExplosionDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/IsExplosionDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {boolean} - isExplDamage"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "IsExplosionDamage",
    "typings": [
      "(this: CTakeDamageInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the damage was caused by a bullet.\n",
      "@name CTakeDamageInfo:IsBulletDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/IsBulletDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {boolean} - isBulletDmg"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "IsBulletDamage",
    "typings": [
      "(this: CTakeDamageInfo): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the initial, unmodified position where the damage occured.\n",
      "@name CTakeDamageInfo:GetReportedPosition",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetReportedPosition",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {Vector} - position"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetReportedPosition",
    "typings": [
      "(this: CTakeDamageInfo): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum damage.\n",
      "@name CTakeDamageInfo:GetMaxDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetMaxDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {number} - maxDmg"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetMaxDamage",
    "typings": [
      "(this: CTakeDamageInfo): number"
    ]
  },
  {
    "comments": [
      "\nReturns the inflictor of the damage. This is not necessarily a weapon.\nFor hitscan weapons this is the weapon.\nFor projectile weapons this is the projectile.\nFor a more reliable method of getting the weapon that damaged an entity, use [GetAttacker](https://wiki.garrysmod.com/page/CTakeDamageInfo/GetAttacker) with [GetActiveWeapon](https://wiki.garrysmod.com/page/Player/GetActiveWeapon).\n",
      "@name CTakeDamageInfo:GetInflictor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetInflictor",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {Entity} - The inflictor"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetInflictor",
    "typings": [
      "(this: CTakeDamageInfo): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the position where the damage was or is going to be applied to.\nCan be set using @CTakeDamageInfo:SetDamagePosition.\n",
      "@name CTakeDamageInfo:GetDamagePosition",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetDamagePosition",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {Vector} - The damage position"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetDamagePosition",
    "typings": [
      "(this: CTakeDamageInfo): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns a bitflag which indicates the damage type(s) of the damage.\nConsider using @CTakeDamageInfo:IsDamageType instead. Value returned by this function can contain multiple damage types.\n",
      "@name CTakeDamageInfo:GetDamageType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetDamageType",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {DMG} - Damage type(s), a combination of @DMG enum"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetDamageType",
    "typings": [
      "(this: CTakeDamageInfo): DMG"
    ]
  },
  {
    "comments": [
      "\nReturns a vector representing the damage force.\nCan be set with @CTakeDamageInfo:SetDamageForce.\n",
      "@name CTakeDamageInfo:GetDamageForce",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetDamageForce",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {Vector} - The damage force"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetDamageForce",
    "typings": [
      "(this: CTakeDamageInfo): Vector"
    ]
  },
  {
    "comments": [
      "\nGets the custom damage type. This is used by Day of Defeat: Source and Team Fortress 2 for extended damage info, but isn't used in Garry's Mod by default.\n",
      "@name CTakeDamageInfo:GetDamageCustom",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetDamageCustom",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {number} - The custom damage type"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetDamageCustom",
    "typings": [
      "(this: CTakeDamageInfo): number"
    ]
  },
  {
    "comments": [
      "\nGets the current bonus damage.\n",
      "@name CTakeDamageInfo:GetDamageBonus",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetDamageBonus",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {number} - Bonus damage"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetDamageBonus",
    "typings": [
      "(this: CTakeDamageInfo): number"
    ]
  },
  {
    "comments": [
      "\nReturns the total damage.\n",
      "@name CTakeDamageInfo:GetDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {number} - damage"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetDamage",
    "typings": [
      "(this: CTakeDamageInfo): number"
    ]
  },
  {
    "comments": [
      "\nReturns the initial unmodified by skill level ( @game.GetSkillLevel ) damage.\n",
      "@name CTakeDamageInfo:GetBaseDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetBaseDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {number} - baseDamage"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetBaseDamage",
    "typings": [
      "(this: CTakeDamageInfo): number"
    ]
  },
  {
    "comments": [
      "\nReturns the attacker ( character who originated the attack ), for example a player or an NPC that shot the weapon.\n",
      "@name CTakeDamageInfo:GetAttacker",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetAttacker",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {Entity} - The attacker"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetAttacker",
    "typings": [
      "(this: CTakeDamageInfo): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the ammo type used by the weapon that inflicted the damage.\n",
      "@name CTakeDamageInfo:GetAmmoType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/GetAmmoType",
      "@param {CTakeDamageInfo} this - no description",
      "@returns {number} - Ammo type ID"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "GetAmmoType",
    "typings": [
      "(this: CTakeDamageInfo): number"
    ]
  },
  {
    "comments": [
      "\nIncreases the damage by damageIncrease.\n",
      "@name CTakeDamageInfo:AddDamage",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CTakeDamageInfo/AddDamage",
      "@param {CTakeDamageInfo} this - no description",
      "@param {number} damageIncrease - The damage to add.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CTakeDamageInfo",
    "name": "AddDamage",
    "typings": [
      "(this: CTakeDamageInfo, damageIncrease: number): void"
    ]
  },
  {
    "comments": [
      "\nStops the sound from being played.\n",
      "@name CSoundPatch:Stop",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/Stop",
      "@bug #3260 This will not work if the entity attached to this sound patch (specified by @CreateSound function) is invalid.",
      "@param {CSoundPatch} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "Stop",
    "typings": [
      "(this: CSoundPatch): void"
    ]
  },
  {
    "comments": [
      "\nSets the DSP (Digital Signal Processor) effect for the sound. Similar to @Player:SetDSP but for individual sounds.\n",
      "@name CSoundPatch:SetDSP",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/SetDSP",
      "@bug #4086 This will only apply if the sound is not playing.",
      "@param {CSoundPatch} this - no description",
      "@param {number} dsp - The DSP effect to set.\nPick from the [list of DSP's](https://developer.valvesoftware.com/wiki/Dsp_presets)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "SetDSP",
    "typings": [
      "(this: CSoundPatch, dsp: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the sound level in decibel.\n",
      "@name CSoundPatch:SetSoundLevel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/SetSoundLevel",
      "@param {CSoundPatch} this - no description",
      "@param {SNDLVL} level - The sound level in decibel. See @SNDLVL enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "SetSoundLevel",
    "typings": [
      "(this: CSoundPatch, level: SNDLVL): void"
    ]
  },
  {
    "comments": [
      "\nSame as @CSoundPatch:Play but with 2 extra arguments allowing to set volume and pitch directly.\n",
      "@name CSoundPatch:PlayEx",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/PlayEx",
      "@param {CSoundPatch} this - no description",
      "@param {number} volume - The volume ranges from 0 to 1.",
      "@param {number} pitch - The pitch can range from 0-255.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "PlayEx",
    "typings": [
      "(this: CSoundPatch, volume: number, pitch: number): void"
    ]
  },
  {
    "comments": [
      "\nStarts to play the sound.\n",
      "@name CSoundPatch:Play",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/Play",
      "@param {CSoundPatch} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "Play",
    "typings": [
      "(this: CSoundPatch): void"
    ]
  },
  {
    "comments": [
      "\nReturns whenever the sound is being played.\n",
      "@name CSoundPatch:IsPlaying",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/IsPlaying",
      "@param {CSoundPatch} this - no description",
      "@returns {boolean} - Is playing or not"
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "IsPlaying",
    "typings": [
      "(this: CSoundPatch): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the current volume.\n",
      "@name CSoundPatch:GetVolume",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/GetVolume",
      "@param {CSoundPatch} this - no description",
      "@returns {number} - The current volume, ranging from 0 to 1."
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "GetVolume",
    "typings": [
      "(this: CSoundPatch): number"
    ]
  },
  {
    "comments": [
      "\nReturns the current sound level.\n",
      "@name CSoundPatch:GetSoundLevel",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/GetSoundLevel",
      "@param {CSoundPatch} this - no description",
      "@returns {SNDLVL} - The current sound level, see @SNDLVL enum."
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "GetSoundLevel",
    "typings": [
      "(this: CSoundPatch): SNDLVL"
    ]
  },
  {
    "comments": [
      "\nReturns the current pitch.\n",
      "@name CSoundPatch:GetPitch",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/GetPitch",
      "@param {CSoundPatch} this - no description",
      "@returns {number} - The current pitch, can range from 0-255."
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "GetPitch",
    "typings": [
      "(this: CSoundPatch): number"
    ]
  },
  {
    "comments": [
      "\nReturns the DSP ( Digital Signal Processor ) effect for the sound.\n",
      "@name CSoundPatch:GetDSP",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/GetDSP",
      "@param {CSoundPatch} this - no description",
      "@returns {number} - The DSP effects of the sound\nList of DSP's are Pick from the [here](https://developer.valvesoftware.com/wiki/Dsp_presets)."
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "GetDSP",
    "typings": [
      "(this: CSoundPatch): number"
    ]
  },
  {
    "comments": [
      "\nFades out the volume of the sound from the current volume to 0 in the given amount of seconds.\n",
      "@name CSoundPatch:FadeOut",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/FadeOut",
      "@param {CSoundPatch} this - no description",
      "@param {number} seconds - Fade time.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "FadeOut",
    "typings": [
      "(this: CSoundPatch, seconds: number): void"
    ]
  },
  {
    "comments": [
      "\nAdjusts the volume of the sound played.\nAppears to only work while the sound is being played.\n",
      "@name CSoundPatch:ChangeVolume",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/ChangeVolume",
      "@param {CSoundPatch} this - no description",
      "@param {number} volume - The volume ranges from 0 to 1.",
      "@param {number} deltaTime - Time to fade the volume from previous to new value from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "ChangeVolume",
    "typings": [
      "(this: CSoundPatch, volume: number, deltaTime?: number): void"
    ]
  },
  {
    "comments": [
      "\nAdjust the pitch, alias the speed at which the sound is being played.\nThis invokes the @GamemodeHooks:EntityEmitSound.\n",
      "@name CSoundPatch:ChangePitch",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CSoundPatch/ChangePitch",
      "@param {CSoundPatch} this - no description",
      "@param {number} pitch - The pitch can range from 0-255.",
      "@param {number} deltaTime - The time to fade from previous to the new pitch.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CSoundPatch",
    "name": "ChangePitch",
    "typings": [
      "(this: CSoundPatch, pitch: number, deltaTime?: number): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the clientside entity\n",
      "@name CSEnt:Remove",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CSEnt/Remove",
      "@param {CSEnt} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CSEnt",
    "name": "Remove",
    "typings": [
      "(this: CSEnt): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all players that are not on the given team from the filter.\n",
      "@name CRecipientFilter:RemoveRecipientsNotOnTeam",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/RemoveRecipientsNotOnTeam",
      "@param {CRecipientFilter} this - no description",
      "@param {number} teamid - Team index.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "RemoveRecipientsNotOnTeam",
    "typings": [
      "(this: CRecipientFilter, teamid: number): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all players that are on the given team from the filter.\n",
      "@name CRecipientFilter:RemoveRecipientsByTeam",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/RemoveRecipientsByTeam",
      "@param {CRecipientFilter} this - no description",
      "@param {number} teamid - Team index to remove players from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "RemoveRecipientsByTeam",
    "typings": [
      "(this: CRecipientFilter, teamid: number): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all players that can see this PVS from the recipient filter.\n",
      "@name CRecipientFilter:RemovePVS",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/RemovePVS",
      "@param {CRecipientFilter} this - no description",
      "@param {Vector} pos - Position that players may be able to see.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "RemovePVS",
    "typings": [
      "(this: CRecipientFilter, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the player from the recipient filter.\n",
      "@name CRecipientFilter:RemovePlayer",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/RemovePlayer",
      "@param {CRecipientFilter} this - no description",
      "@param {Player} Player - The player that should be in the recipient filter if you call this function.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "RemovePlayer",
    "typings": [
      "(this: CRecipientFilter, Player: Player): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all players from the filter that are in Potentially Audible Set for given position.\n",
      "@name CRecipientFilter:RemovePAS",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/RemovePAS",
      "@param {CRecipientFilter} this - no description",
      "@param {Vector} position - The position to test",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "RemovePAS",
    "typings": [
      "(this: CRecipientFilter, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nRemoves all players from the recipient filter.\n",
      "@name CRecipientFilter:RemoveAllPlayers",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/RemoveAllPlayers",
      "@param {CRecipientFilter} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "RemoveAllPlayers",
    "typings": [
      "(this: CRecipientFilter): void"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all valid players currently in the recipient filter.\n",
      "@name CRecipientFilter:GetPlayers",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/GetPlayers",
      "@param {CRecipientFilter} this - no description",
      "@returns {table} - A table of all valid players currently in the recipient filter."
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "GetPlayers",
    "typings": [
      "(this: CRecipientFilter): table"
    ]
  },
  {
    "comments": [
      "\nReturns the number of valid players in the recipient filter.\n",
      "@name CRecipientFilter:GetCount",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/GetCount",
      "@param {CRecipientFilter} this - no description",
      "@returns {number} - Number of valid players in the recipient filter."
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "GetCount",
    "typings": [
      "(this: CRecipientFilter): number"
    ]
  },
  {
    "comments": [
      "\nAdds all players that are on the given team to the filter.\n",
      "@name CRecipientFilter:AddRecipientsByTeam",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/AddRecipientsByTeam",
      "@param {CRecipientFilter} this - no description",
      "@param {number} teamid - Team index to add players from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "AddRecipientsByTeam",
    "typings": [
      "(this: CRecipientFilter, teamid: number): void"
    ]
  },
  {
    "comments": [
      "\nAdds all players that are in the same PVS as this position.\n",
      "@name CRecipientFilter:AddPVS",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/AddPVS",
      "@param {CRecipientFilter} this - no description",
      "@param {Vector} Position - PVS position.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "AddPVS",
    "typings": [
      "(this: CRecipientFilter, Position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nAdds a player to the recipient filter\n",
      "@name CRecipientFilter:AddPlayer",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/AddPlayer",
      "@param {CRecipientFilter} this - no description",
      "@param {Player} Player - Player to add to the recipient filter.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "AddPlayer",
    "typings": [
      "(this: CRecipientFilter, Player: Player): void"
    ]
  },
  {
    "comments": [
      "\nAdds all players that are in the same PAS as this position.\n",
      "@name CRecipientFilter:AddPAS",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/AddPAS",
      "@param {CRecipientFilter} this - no description",
      "@param {Vector} pos - PAS position that players may be able to see.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "AddPAS",
    "typings": [
      "(this: CRecipientFilter, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nAdds all players to the recipient filter.\n",
      "@name CRecipientFilter:AddAllPlayers",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CRecipientFilter/AddAllPlayers",
      "@param {CRecipientFilter} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CRecipientFilter",
    "name": "AddAllPlayers",
    "typings": [
      "(this: CRecipientFilter): void"
    ]
  },
  {
    "comments": [
      "\nReturns a function which calling is equivalent with calling @coroutine.resume with the coroutine and all extra parameters.\n",
      "@name coroutine.wrap",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/coroutine/wrap",
      "@param {void} this - no description",
      "@param {function} coroutine - Coroutine to resume.",
      "@returns {function} - func"
    ],
    "type": "func",
    "context": "coroutine",
    "name": "wrap",
    "typings": [
      "(this: void, coroutine: UnknownFunc): UnknownFunc"
    ]
  },
  {
    "comments": [
      "\nPauses the active coroutine and passes all additional variables to the call of @coroutine.resume that resumed the coroutine last time, and returns all additional variables that were passed to the previous call of resume.\n",
      "@name coroutine.yield",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/coroutine/yield",
      "@param {void} this - no description",
      "@param {any[]} ...returnValue - Arguments to be returned by the last call of @coroutine.resume",
      "@returns {any[]} - Arguments that were set previously by @coroutine.resume"
    ],
    "type": "func",
    "context": "coroutine",
    "name": "yield",
    "typings": [
      "(this: void, ...returnValue: any[]): any[]"
    ]
  },
  {
    "comments": [
      "\nYields the coroutine for the given duration before continuing.\nThis only works inside a coroutine.\nThis function uses @CurTime function instead of @RealTime function.\n",
      "@name coroutine.wait",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/coroutine/wait",
      "@param {void} this - no description",
      "@param {number} duration - The number of seconds to wait",
      "@returns {void}"
    ],
    "type": "func",
    "context": "coroutine",
    "name": "wait",
    "typings": [
      "(this: void, duration: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the status of the coroutine passed to it, the possible statuses are \"suspended\", \"running\", and \"dead\".\n",
      "@name coroutine.status",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/coroutine/status",
      "@param {void} this - no description",
      "@param {thread} coroutine - Coroutine to check the status of.",
      "@returns {string} - status"
    ],
    "type": "func",
    "context": "coroutine",
    "name": "status",
    "typings": [
      "(this: void, coroutine: thread): string"
    ]
  },
  {
    "comments": [
      "\nReturns the active coroutine or nil if we are not within a coroutine.\n",
      "@name coroutine.running",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/coroutine/running",
      "@param {void} this - no description",
      "@returns {thread} - coroutine"
    ],
    "type": "func",
    "context": "coroutine",
    "name": "running",
    "typings": [
      "(this: void): thread"
    ]
  },
  {
    "comments": [
      "\nResumes the given coroutine and passes the given vararg to either the function arguments or the @coroutine.yield that is inside that function and returns whatever yield is called with the next time or by the final return in the function.\n",
      "@name coroutine.resume",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/coroutine/resume",
      "@param {void} this - no description",
      "@param {thread} coroutine - Coroutine to resume.",
      "@param {any[]} ...args - Arguments to be returned by @coroutine.yield.",
      "@returns {boolean} - If the executed thread code had no errors occur within it.",
      "@returns {any[]} - If an error occured, this will be a string containing the error message. Otherwise, this will be arguments that were yielded.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "coroutine",
    "name": "resume",
    "typings": [
      "(this: void, coroutine: thread, ...args: any[]): [boolean, any[]]"
    ]
  },
  {
    "comments": [
      "\nCreates a coroutine of the given function.\n",
      "@name coroutine.create",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/coroutine/create",
      "@param {void} this - no description",
      "@param {function} func - The function for the coroutine to use",
      "@returns {thread} - coroutine"
    ],
    "type": "func",
    "context": "coroutine",
    "name": "create",
    "typings": [
      "(this: void, func: UnknownFunc): thread"
    ]
  },
  {
    "comments": [
      "\nSets the value of a cookie, which is saved automatically by the @sql library.\nThese are stored in the *.db files - cl.db for clients, mn.db for menu state and sv.db for servers.\n[Category:Menu](https://wiki.garrysmod.com/page/Category:Menu)\n",
      "@name cookie.Set",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/cookie/Set",
      "@param {void} this - no description",
      "@param {string} key - The name of the cookie that you want to set.",
      "@param {string} value - Value to store in the cookie.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cookie",
    "name": "Set",
    "typings": [
      "(this: void, key: string, value: string): void"
    ]
  },
  {
    "comments": [
      "\nGets the value of a cookie on the client as a string.\n",
      "@name cookie.GetString",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/cookie/GetString",
      "@param {void} this - no description",
      "@param {string} name - The name of the cookie that you want to get.",
      "@param {any} def - Value to return if the cookie does not exist.",
      "@returns {string} - The cookie value"
    ],
    "type": "func",
    "context": "cookie",
    "name": "GetString",
    "typings": [
      "(this: void, name: string, def?: any): string"
    ]
  },
  {
    "comments": [
      "\nGets the value of a cookie on the client as a number.\n",
      "@name cookie.GetNumber",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/cookie/GetNumber",
      "@param {void} this - no description",
      "@param {string} name - The name of the cookie that you want to get.",
      "@param {any} def - Value to return if the cookie does not exist.",
      "@returns {number} - The cookie value"
    ],
    "type": "func",
    "context": "cookie",
    "name": "GetNumber",
    "typings": [
      "(this: void, name: string, def?: any): number"
    ]
  },
  {
    "comments": [
      "\nSets a ConVar's value to the input string. This can only be ran on ConVars created from within Lua.\n",
      "@name ConVar:SetString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/SetString",
      "@param {ConVar} this - no description",
      "@param {string} value - Value to set the ConVar to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ConVar",
    "name": "SetString",
    "typings": [
      "(this: ConVar, value: string): void"
    ]
  },
  {
    "comments": [
      "\nDeletes a cookie on the client.\n",
      "@name cookie.Delete",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/cookie/Delete",
      "@param {void} this - no description",
      "@param {string} name - The name of the cookie that you want to delete.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cookie",
    "name": "Delete",
    "typings": [
      "(this: void, name: string): void"
    ]
  },
  {
    "comments": [
      "\nSets a ConVar's value to the input number after converting it to an integer. This can only be ran on ConVars created from within Lua.\n",
      "@name ConVar:SetInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/SetInt",
      "@param {ConVar} this - no description",
      "@param {number} value - Value to set the ConVar to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ConVar",
    "name": "SetInt",
    "typings": [
      "(this: ConVar, value: number): void"
    ]
  },
  {
    "comments": [
      "\nSets a ConVar's value to to the input number. This can only be ran on ConVars created from within Lua.\n",
      "@name ConVar:SetFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/SetFloat",
      "@param {ConVar} this - no description",
      "@param {number} value - Value to set the ConVar to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ConVar",
    "name": "SetFloat",
    "typings": [
      "(this: ConVar, value: number): void"
    ]
  },
  {
    "comments": [
      "\nSets a ConVar's value to 1 or 0 based on the input boolean. This can only be ran on ConVars created from within Lua.\n",
      "@name ConVar:SetBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/SetBool",
      "@param {ConVar} this - no description",
      "@param {boolean} value - Value to set the ConVar to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ConVar",
    "name": "SetBool",
    "typings": [
      "(this: ConVar, value: boolean): void"
    ]
  },
  {
    "comments": [
      "\nReturns the current @ConVar type value as a string.\n",
      "@name ConVar:GetString",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/GetString",
      "@param {ConVar} this - no description",
      "@returns {string} - The current console variable value as a string."
    ],
    "type": "class",
    "context": "ConVar",
    "name": "GetString",
    "typings": [
      "(this: ConVar): string"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the @ConVar type.\n",
      "@name ConVar:GetName",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/GetName",
      "@param {ConVar} this - no description",
      "@returns {string} - The name of the console variable."
    ],
    "type": "class",
    "context": "ConVar",
    "name": "GetName",
    "typings": [
      "(this: ConVar): string"
    ]
  },
  {
    "comments": [
      "\nAttempts to convert the @ConVar type value to a integer.\n",
      "@name ConVar:GetInt",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/GetInt",
      "@param {ConVar} this - no description",
      "@returns {number} - The integer value of the console variable.\nIf it fails to convert to an integer, it will return 0.\nAll float/decimal values will be rounded down. ( With @math.floor )"
    ],
    "type": "class",
    "context": "ConVar",
    "name": "GetInt",
    "typings": [
      "(this: ConVar): number"
    ]
  },
  {
    "comments": [
      "\nReturns the help text assigned to that convar.\n",
      "@name ConVar:GetHelpText",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/GetHelpText",
      "@param {ConVar} this - no description",
      "@returns {string} - The help text"
    ],
    "type": "class",
    "context": "ConVar",
    "name": "GetHelpText",
    "typings": [
      "(this: ConVar): string"
    ]
  },
  {
    "comments": [
      "\nAttempts to convert the @ConVar type value to a float\n",
      "@name ConVar:GetFloat",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/GetFloat",
      "@param {ConVar} this - no description",
      "@returns {number} - The float value of the console variable.\nIf the value cannot be converted to a float, it will return 0."
    ],
    "type": "class",
    "context": "ConVar",
    "name": "GetFloat",
    "typings": [
      "(this: ConVar): number"
    ]
  },
  {
    "comments": [
      "\nReturns the default value of the @ConVar type\n",
      "@name ConVar:GetDefault",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/GetDefault",
      "@param {ConVar} this - no description",
      "@returns {string} - The default value of the console variable."
    ],
    "type": "class",
    "context": "ConVar",
    "name": "GetDefault",
    "typings": [
      "(this: ConVar): string"
    ]
  },
  {
    "comments": [
      "\nTries to convert the current string value of a @ConVar type to a boolean.\n",
      "@name ConVar:GetBool",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/ConVar/GetBool",
      "@param {ConVar} this - no description",
      "@returns {boolean} - The boolean value of the console variable. If the variable is numeric and not 0, the result will be true. Otherwise the result will be false."
    ],
    "type": "class",
    "context": "ConVar",
    "name": "GetBool",
    "typings": [
      "(this: ConVar): boolean"
    ]
  },
  {
    "comments": [
      "\nSet the name label text.\n",
      "@name ControlPresets:SetLabel",
      "@wiki https://wiki.garrysmod.com/page/ControlPresets/SetLabel",
      "@param {ControlPresets} this - no description",
      "@param {string} name - The text to put in the label",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ControlPresets",
    "extends": [
      "Panel"
    ],
    "name": "SetLabel",
    "typings": [
      "(this: ControlPresets, name: string): void"
    ]
  },
  {
    "comments": [
      "\nGet a list of all Console Variables being managed by this panel.\n",
      "@name ControlPresets:GetConVars",
      "@wiki https://wiki.garrysmod.com/page/ControlPresets/GetConVars",
      "@param {ControlPresets} this - no description",
      "@returns {table} - numbered table of convars"
    ],
    "type": "class",
    "context": "ControlPresets",
    "extends": [
      "Panel"
    ],
    "name": "GetConVars",
    "typings": [
      "(this: ControlPresets): table"
    ]
  },
  {
    "comments": [
      "\nAdds a convar to be managed by this control.\n",
      "@name ControlPresets:AddConVar",
      "@wiki https://wiki.garrysmod.com/page/ControlPresets/AddConVar",
      "@param {ControlPresets} this - no description",
      "@param {string} convar - The convar to add.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ControlPresets",
    "extends": [
      "Panel"
    ],
    "name": "AddConVar",
    "typings": [
      "(this: ControlPresets, convar: string): void"
    ]
  },
  {
    "comments": [
      "\nCreates a @MatSelect type panel and adds it as an [item](https://wiki.garrysmod.com/page/ControlPanel/AddPanel).\n",
      "@name ControlPanel:MatSelect",
      "@wiki https://wiki.garrysmod.com/page/ControlPanel/MatSelect",
      "@param {ControlPanel} this - no description",
      "@param {string} convar - Calls @MatSelect type:[SetConVar](https://wiki.garrysmod.com/page/ContextBase/SetConVar) with this value.",
      "@param {table} options - If specified, calls @MatSelect:AddMaterial(key, value) for each table entry. If the table key is a number, the function will instead be called with the value as both arguments.",
      "@param {boolean} autostretch - If specified, calls @MatSelect:SetAutoHeight with this value.",
      "@param {number} width - If specified, calls @MatSelect:SetItemWidth with this value.",
      "@param {number} height - If specified, calls @MatSelect:SetItemHeight with this value.",
      "@returns {MatSelect} - The created MatSelect panel."
    ],
    "type": "class",
    "context": "ControlPanel",
    "extends": [
      "DForm"
    ],
    "name": "MatSelect",
    "typings": [
      "(this: ControlPanel, convar: string, options?: table, autostretch?: boolean, width?: number, height?: number): MatSelect"
    ]
  },
  {
    "comments": [
      "\nReturns this control panel.\n",
      "@name ControlPanel:GetEmbeddedPanel",
      "@wiki https://wiki.garrysmod.com/page/ControlPanel/GetEmbeddedPanel",
      "@param {ControlPanel} this - no description",
      "@returns {ControlPanel} - The same control panel the function is being called on."
    ],
    "type": "class",
    "context": "ControlPanel",
    "extends": [
      "DForm"
    ],
    "name": "GetEmbeddedPanel",
    "typings": [
      "(this: ControlPanel): ControlPanel"
    ]
  },
  {
    "comments": [
      "\nReturns (or creates if not exists) a controlpanel.\n",
      "@name controlpanel.Get",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/controlpanel/Get",
      "@param {void} this - no description",
      "@param {string} name - The name of the panel.",
      "@returns {Panel} - ControlPanel"
    ],
    "type": "func",
    "context": "controlpanel",
    "name": "Get",
    "typings": [
      "(this: void, name: string): Panel"
    ]
  },
  {
    "comments": [
      "\nCalls the given function with this panel as the only argument. Used by the spawnmenu to populate the control panel.\n",
      "@name ControlPanel:FillViaFunction",
      "@wiki https://wiki.garrysmod.com/page/ControlPanel/FillViaFunction",
      "@param {ControlPanel} this - no description",
      "@param {ControlPanel} func - A function that takes one argument:\n* @ControlPanel type panelToPopulate",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ControlPanel",
    "extends": [
      "DForm"
    ],
    "name": "FillViaFunction",
    "typings": [
      "(this: ControlPanel, func: ControlPanel): void"
    ]
  },
  {
    "comments": [
      "\nSets control values of the control panel.\n",
      "@name ControlPanel:ControlValues",
      "@wiki https://wiki.garrysmod.com/page/ControlPanel/ControlValues",
      "@param {ControlPanel} this - no description",
      "@param {IControlPanelControlValuesData} data - A two-membered table:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ControlPanel",
    "extends": [
      "DForm"
    ],
    "name": "ControlValues",
    "typings": [
      "(this: ControlPanel, data: IControlPanelControlValuesData): void"
    ],
    "types": [
      {
        "comments": [
          "closed - {boolean}: Sets if the control panel should be unexpanded."
        ],
        "type": "interface",
        "name": "closed",
        "typing": "boolean",
        "context": "IControlPanelControlValuesData"
      },
      {
        "comments": [
          "label - {string}: The text to display inside the control's label."
        ],
        "type": "interface",
        "name": "label",
        "typing": "string",
        "context": "IControlPanelControlValuesData"
      }
    ]
  },
  {
    "comments": [
      "\nClears ALL the control panels ( for tools )\n",
      "@name controlpanel.Clear",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/controlpanel/Clear",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "controlpanel",
    "name": "Clear",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds an item by calling @DForm:AddItem.\n",
      "@name ControlPanel:AddPanel",
      "@wiki https://wiki.garrysmod.com/page/ControlPanel/AddPanel",
      "@param {ControlPanel} this - no description",
      "@param {Panel} panel - Panel to add as an item to the control panel.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ControlPanel",
    "extends": [
      "DForm"
    ],
    "name": "AddPanel",
    "typings": [
      "(this: ControlPanel, panel: Panel): void"
    ]
  },
  {
    "comments": [
      "\nAdds a control to the control panel.\n",
      "@name ControlPanel:AddControl",
      "@wiki https://wiki.garrysmod.com/page/ControlPanel/AddControl",
      "@param {ControlPanel} this - no description",
      "@param {string} type - The control type to add. The complete list is:\n* header\n* textbox\n* label\n* checkbox/toggle\n* slider\n* propselect\n* matselect\n* ropematerial\n* button\n* numpad\n* color\n* combobox\n* listbox\n* materialgallery",
      "@param {DListView[]} controlinfo - Each control takes their own table structure. You may search \"AddControl\" on GitHub for examples.\nHere is a full list of each type and the table members it requires:\n*header\n**description\n*textbox:\n**label (def: \"Untitled\")\n**command\n*label:\n**text\n*checkbox, toggle (same thing):\n**label (def: \"Untitled\")\n**command\n**help (boolean, if true assumes label is a language string (\"#tool.toolname.stuff\") and adds \".help\" at the end)\n*slider:\n**type (optional string, if equals \"float\" then 2 digits after the decimal will be used, otherwise 0)\n**label (def: \"Untitled\")\n**command\n**min (def: 0)\n**max (def: 100)\n*help (boolean, see above)\n*propselect:\n**(data goes directly to PropSelect's :ControlValues(data))\n*matselect:\n**(data goes directly to MatSelect's :ControlValues(data))\n*ropematerial:\n**convar (notice: NOT called command this time!)\n*button:\n**label / text (if label is missing will use text. Def: \"No Label\")\n**command\n*numpad:\n**command\n**command2\n**label\n**label2\n*color:\n**label\n**red (convar)\n**green (convar)\n**blue (convar)\n**alpha (convar)\n*combobox:\n**menubutton (if doesn't equal \"1\", becomes a listbox)\n**folder\n**options (optional, ha)\n**cvars (optional)\n*listbox:\n**height (if set, becomes @DListView type, otherwise is @CtrlListBox type)\n**label (def: \"unknown\")\n**options (optional)\n*materialgallery:\n**width (def: 32)\n**height (def: 32)\n**rows (def: 4)\n**convar\n**options",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ControlPanel",
    "extends": [
      "DForm"
    ],
    "name": "AddControl",
    "typings": [
      "(this: ControlPanel, type: string, controlinfo?: DListView[]): void"
    ]
  },
  {
    "comments": [
      "\nYou should override this function and use it to check whether your convar value changed.\n",
      "@name ContextBase:TestForChanges",
      "@wiki https://wiki.garrysmod.com/page/ContextBase/TestForChanges",
      "@param {ContextBase} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContextBase",
    "extends": [
      "Panel"
    ],
    "name": "TestForChanges",
    "typings": [
      "(this: ContextBase): void"
    ]
  },
  {
    "comments": [
      "\nSets the @ConVar type for the panel to change/handle.\n",
      "@name ContextBase:SetConVar",
      "@wiki https://wiki.garrysmod.com/page/ContextBase/SetConVar",
      "@param {ContextBase} this - no description",
      "@param {string} cvar - The @ConVar type for the panel to change.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContextBase",
    "extends": [
      "Panel"
    ],
    "name": "SetConVar",
    "typings": [
      "(this: ContextBase, cvar: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the @ConVar type for the panel to change/handle, set by @ContextBase:SetConVar\n",
      "@name ContextBase:ConVar",
      "@wiki https://wiki.garrysmod.com/page/ContextBase/ConVar",
      "@param {ContextBase} this - no description",
      "@returns {string} - The @ConVar type for the panel to change."
    ],
    "type": "class",
    "context": "ContextBase",
    "extends": [
      "Panel"
    ],
    "name": "ConVar",
    "typings": [
      "(this: ContextBase): string"
    ]
  },
  {
    "comments": [
      "\nCalled by spawnmenu functions (when creating a context menu) to fill this control with data.\n",
      "@name ContextBase:ControlValues",
      "@wiki https://wiki.garrysmod.com/page/ContextBase/ControlValues",
      "@param {ContextBase} this - no description",
      "@param {IContextBaseControlValuesContextData} contextData - A two-membered table:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContextBase",
    "extends": [
      "Panel"
    ],
    "name": "ControlValues",
    "typings": [
      "(this: ContextBase, contextData: IContextBaseControlValuesContextData): void"
    ],
    "types": [
      {
        "comments": [
          "convar - {string}: The console variable to use. Calls @ContextBase:SetConVar."
        ],
        "type": "interface",
        "name": "convar",
        "typing": "string",
        "context": "IContextBaseControlValuesContextData"
      },
      {
        "comments": [
          "label - {string}: The text to display inside the control's label."
        ],
        "type": "interface",
        "name": "label",
        "typing": "string",
        "context": "IContextBaseControlValuesContextData"
      }
    ]
  },
  {
    "comments": [
      "\nSets the internal \"name\" for the content icon, usually a class name for an entity.\n",
      "@name ContentIcon:SetSpawnName",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/SetSpawnName",
      "@param {ContentIcon} this - no description",
      "@param {string} name - Internal \"name\" to be used when user left clicks the icon.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "SetSpawnName",
    "typings": [
      "(this: ContentIcon, name: string): void"
    ]
  },
  {
    "comments": [
      "\nSets a table of weapon classes for the content icon with \"NPC\" content type to be randomly chosen from when user tries to spawn the NPC.\n",
      "@name ContentIcon:SetNPCWeapon",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/SetNPCWeapon",
      "@param {ContentIcon} this - no description",
      "@param {table} weapons - A table of weapon classes to be chosen from when user tries to spawn the NPC.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "SetNPCWeapon",
    "typings": [
      "(this: ContentIcon, weapons: table): void"
    ]
  },
  {
    "comments": [
      "\nSets the tool tip and the \"nice\" name to be displayed by the content icon.\n",
      "@name ContentIcon:SetName",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/SetName",
      "@param {ContentIcon} this - no description",
      "@param {string} name - \"Nice\" name to display.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "SetName",
    "typings": [
      "(this: ContentIcon, name: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the material to be displayed as the content icon.\n",
      "@name ContentIcon:SetMaterial",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/SetMaterial",
      "@param {ContentIcon} this - no description",
      "@param {string} path - Path to the icon to use.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "SetMaterial",
    "typings": [
      "(this: ContentIcon, path: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the content type used to save and restore the content icon in a spawnlist.\n",
      "@name ContentIcon:SetContentType",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/SetContentType",
      "@param {ContentIcon} this - no description",
      "@param {string} type - The content type, for example \"entity\" or \"weapon\"",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "SetContentType",
    "typings": [
      "(this: ContentIcon, type: string): void"
    ]
  },
  {
    "comments": [
      "\nSets the color for the content icon. Currently is not used by the content icon panel.\n",
      "@name ContentIcon:SetColor",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/SetColor",
      "@param {ContentIcon} this - no description",
      "@param {IColor} clr - The color to set. See @IColor structure",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "SetColor",
    "typings": [
      "(this: ContentIcon, clr: IColor): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the content item is admin only. This makes the icon to display a admin icon in the top left corner of the icon.\n",
      "@name ContentIcon:SetAdminOnly",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/SetAdminOnly",
      "@param {ContentIcon} this - no description",
      "@param {boolean} adminOnly - Whether this content should be admin only or not",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "SetAdminOnly",
    "typings": [
      "(this: ContentIcon, adminOnly: boolean): void"
    ]
  },
  {
    "comments": [
      "\nA hook for override, by default does nothing. Called when user right clicks on the content icon, you are supposed to open a @DermaMenu function here with additional options.\n",
      "@name ContentIcon:OpenMenu",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/OpenMenu",
      "@param {ContentIcon} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "OpenMenu",
    "typings": [
      "(this: ContentIcon): void"
    ]
  },
  {
    "comments": [
      "\nReturns the internal \"name\" for the content icon, usually a class name for an entity.\n",
      "@name ContentIcon:GetSpawnName",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/GetSpawnName",
      "@param {ContentIcon} this - no description",
      "@returns {string} - Internal \"name\" to be used when user left clicks the icon."
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "GetSpawnName",
    "typings": [
      "(this: ContentIcon): string"
    ]
  },
  {
    "comments": [
      "\nReturns a table of weapon classes for the content icon with \"NPC\" content type to be randomly chosen from when user tries to spawn the NPC.\n",
      "@name ContentIcon:GetNPCWeapon",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/GetNPCWeapon",
      "@param {ContentIcon} this - no description",
      "@returns {table} - A table of weapon classes to be chosen from when user tries to spawn the NPC."
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "GetNPCWeapon",
    "typings": [
      "(this: ContentIcon): table"
    ]
  },
  {
    "comments": [
      "\nReturns the content type used to save and restore the content icon in a spawnlist.\n",
      "@name ContentIcon:GetContentType",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/GetContentType",
      "@param {ContentIcon} this - no description",
      "@returns {string} - The content type, for example \"entity\" or \"weapon\"."
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "GetContentType",
    "typings": [
      "(this: ContentIcon): string"
    ]
  },
  {
    "comments": [
      "\nReturns the color set by @ContentIcon:SetColor\n",
      "@name ContentIcon:GetColor",
      "@wiki https://wiki.garrysmod.com/page/ContentIcon/GetColor",
      "@param {ContentIcon} this - no description",
      "@returns {IColor} - See @IColor structure"
    ],
    "type": "class",
    "context": "ContentIcon",
    "extends": [
      "DButton"
    ],
    "name": "GetColor",
    "typings": [
      "(this: ContentIcon): IColor"
    ]
  },
  {
    "comments": [
      "\nCreates a magnet.\n",
      "@name construct.Magnet",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/construct/Magnet",
      "@param {void} this - no description",
      "@param {Player} ply - Player that will have the numpad control over the magnet",
      "@param {Vector} pos - The position of the magnet",
      "@param {Angle} ang - The angles of the magnet",
      "@param {string} model - The model of the maget",
      "@param {string} material - Material of the magnet ( texture )",
      "@param {KEY} key - The key to toggle the magnet, see @KEY enum",
      "@param {number} maxObjects - Maximum amount of objects the magnet can hold",
      "@param {number} strength - Strength of the magnet",
      "@param {number} nopull - If > 0, disallows the magnet to pull objects towards it",
      "@param {number} allowrot - If > 0, allows rotation of the objects attached",
      "@param {number} startOn - If > 0, enabled from spawn",
      "@param {number} toggle - If != 0, pressing the key toggles the magnet, otherwise you'll have to hold the key to keep it enabled",
      "@param {Vector} vel - Velocity to set on spawn",
      "@param {Angle} aVel - Angular velocity to set on spawn",
      "@param {boolean} frozen - Freeze the magnet on start",
      "@returns {Entity} - The magnet"
    ],
    "type": "func",
    "context": "construct",
    "name": "Magnet",
    "typings": [
      "(this: void, ply: Player, pos: Vector, ang: Angle, model: string, material: string, key: KEY, maxObjects: number, strength: number, nopull?: number, allowrot?: number, startOn?: number, toggle: number, vel?: Vector, aVel?: Angle, frozen?: boolean): Entity"
    ]
  },
  {
    "comments": [
      "\nSets props physical properties.\n",
      "@name construct.SetPhysProp",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/construct/SetPhysProp",
      "@param {void} this - no description",
      "@param {Player} ply - The player. This variable is not used and can be left out.",
      "@param {Entity} ent - The entity to apply properties to",
      "@param {number} physObjID - You can use this or the argument below. This will be used in case you don't provide argument below.",
      "@param {PhysObj} physObj - The physics object to apply the properties to",
      "@param {PhysProperties} data - The table containing properties to apply. See @PhysProperties structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "construct",
    "name": "SetPhysProp",
    "typings": [
      "(this: void, ply: Player, ent: Entity, physObjID: number, physObj: PhysObj, data: PhysProperties): void"
    ]
  },
  {
    "comments": [
      "\nCreates a Winch constraint.\n",
      "@name constraint.Winch",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Winch",
      "@param {void} this - no description",
      "@param {Player} pl - The player that will be used to call @numpad.OnDown and @numpad.OnUp.",
      "@param {Entity} Ent1 - First entity.",
      "@param {Entity} Ent2 - Second entity.",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls),",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls).",
      "@param {Vector} LPos1 - no description",
      "@param {Vector} LPos2 - no description",
      "@param {number} width - The width of the rope.",
      "@param {KEY} fwd_bind - The key binding for \"forward\", corresponding to an @KEY enum",
      "@param {KEY} bwd_bind - The key binding for \"backwards\", corresponding to an @KEY enum",
      "@param {number} fwd_speed - Forward speed.",
      "@param {number} bwd_speed - Backwards speed.",
      "@param {string} material - The material of the rope.",
      "@param {boolean} toggle - Whether the winch should be on toggle.",
      "@returns {Entity} - Constraint. Can return nil. Will return false if the constraint could not be created.",
      "@returns {Entity} - rope. Will return nil if the constraint could not be created.",
      "@returns {Entity} - controller. Can return nil.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "constraint",
    "name": "Winch",
    "typings": [
      "(this: void, pl: Player, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number, LPos1: Vector, LPos2: Vector, width: number, fwd_bind: KEY, bwd_bind: KEY, fwd_speed: number, bwd_speed: number, material: string, toggle: boolean): [Entity, Entity, Entity]"
    ]
  },
  {
    "comments": [
      "\nCreates a weld constraint\n",
      "@name constraint.Weld",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Weld",
      "@param {void} this - no description",
      "@param {Entity} ent1 - The first entity",
      "@param {Entity} ent2 - The second entity",
      "@param {number} bone1 - The bonenumber of the first entity (0 for monoboned entities)\nPhysObj number for ragdolls, see: @EntityFuncs:TranslateBoneToPhysBone.",
      "@param {number} bone2 - The bonenumber of the second entity",
      "@param {number} forcelimit - The amount of force appliable to the constraint before it will break (0 is never)",
      "@param {boolean} nocollide - Should ent1 be nocollided to ent2 via this constraint",
      "@param {boolean} deleteent1onbreak - If true, when ent2 is removed, ent1 will also be removed",
      "@returns {Entity} - constraint"
    ],
    "type": "func",
    "context": "constraint",
    "name": "Weld",
    "typings": [
      "(this: void, ent1: Entity, ent2: Entity, bone1: number, bone2: number, forcelimit: number, nocollide: boolean, deleteent1onbreak: boolean): Entity"
    ]
  },
  {
    "comments": [
      "\nCreates a slider constraint.\n",
      "@name constraint.Slider",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Slider",
      "@param {void} this - no description",
      "@param {Entity} Ent1 - First entity.",
      "@param {Entity} Ent2 - Second entity.",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls),",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls).",
      "@param {Vector} LPos1 - no description",
      "@param {Vector} LPos2 - no description",
      "@param {number} width - The width of the rope.",
      "@param {string} material - The material of the rope.",
      "@returns {Entity} - Constraint. Will return false if the constraint could not be created.",
      "@returns {Entity} - rope. Will return nil if the constraint could not be created.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "constraint",
    "name": "Slider",
    "typings": [
      "(this: void, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number, LPos1: Vector, LPos2: Vector, width: number, material: string): [Entity, Entity]"
    ]
  },
  {
    "comments": [
      "\nCreates a rope constraint - with rope!\n",
      "@name constraint.Rope",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Rope",
      "@param {void} this - no description",
      "@param {Entity} Ent1 - First entity",
      "@param {Entity} Ent2 - Second entity",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls)",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls)",
      "@param {Vector} LPos1 - Position of first end of the rope. Local to Ent1.",
      "@param {Vector} LPos2 - Position of second end of the rope. Local to Ent2.",
      "@param {number} length - Length of the rope.",
      "@param {number} addlength - Amount to add to the length of the rope. Works as it does in the Rope tool.",
      "@param {number} forcelimit - Amount of force until it breaks (0 = unbreakable).",
      "@param {number} width - Width of the rope.",
      "@param {string} material - Material of the rope.",
      "@param {boolean} rigid - Whether the constraint is rigid.",
      "@returns {Entity} - Constraint. Will be a keyframe_rope if you roping to the same bone on the same entity. Will return false if the constraint could not be created.",
      "@returns {Entity} - rope. Will return nil if \"Constraint\" is a keyframe_rope or if the constraint could not be created.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "constraint",
    "name": "Rope",
    "typings": [
      "(this: void, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number, LPos1: Vector, LPos2: Vector, length: number, addlength: number, forcelimit: number, width: number, material: string, rigid: boolean): [Entity, Entity]"
    ]
  },
  {
    "comments": [
      "\nAttempts to remove all constraints of a specified type associated with an entity\n",
      "@name constraint.RemoveConstraints",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/RemoveConstraints",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to check",
      "@param {string} type - The constraint type to remove (eg. \"Weld\", \"Elastic\", \"NoCollide\")",
      "@returns {boolean} - Whether we removed any constraints or not",
      "@returns {number} - The amount of constraints removed",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "constraint",
    "name": "RemoveConstraints",
    "typings": [
      "(this: void, ent: Entity, type: string): [boolean, number]"
    ]
  },
  {
    "comments": [
      "\nAttempts to remove all constraints associated with an entity\n",
      "@name constraint.RemoveAll",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/RemoveAll",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to remove constraints from",
      "@returns {boolean} - Whether any constraints were removed",
      "@returns {number} - Number of constraints removed",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "constraint",
    "name": "RemoveAll",
    "typings": [
      "(this: void, ent: Entity): [boolean, number]"
    ]
  },
  {
    "comments": [
      "\nCreates a pulley constraint.\n",
      "@name constraint.Pulley",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Pulley",
      "@param {void} this - no description",
      "@param {Entity} Ent1 - no description",
      "@param {Entity} Ent4 - no description",
      "@param {number} Bone1 - no description",
      "@param {number} Bone4 - no description",
      "@param {Vector} LPos1 - no description",
      "@param {Vector} LPos4 - no description",
      "@param {Vector} WPos2 - no description",
      "@param {Vector} WPos3 - no description",
      "@param {number} forcelimit - Amount of force until it breaks (0 = unbreakable)",
      "@param {boolean} rigid - Whether the constraint is rigid.",
      "@param {number} width - Width of the rope.",
      "@param {string} material - Material of the rope.",
      "@returns {Entity} - Constraint. Will return false if the constraint could not be created."
    ],
    "type": "func",
    "context": "constraint",
    "name": "Pulley",
    "typings": [
      "(this: void, Ent1: Entity, Ent4: Entity, Bone1: number, Bone4: number, LPos1: Vector, LPos4: Vector, WPos2: Vector, WPos3: Vector, forcelimit: number, rigid: boolean, width: number, material: string): Entity"
    ]
  },
  {
    "comments": [
      "\nCreates an no-collide \"constraint\". Disables collision between two entities.\n",
      "@name constraint.NoCollide",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/NoCollide",
      "@note Does not work with players.",
      "@param {void} this - no description",
      "@param {Entity} Ent1 - First entity.",
      "@param {Entity} Ent2 - Second entity.",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls).",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls).",
      "@returns {Entity} - Constraint. Will return false if the constraint could not be created."
    ],
    "type": "func",
    "context": "constraint",
    "name": "NoCollide",
    "typings": [
      "(this: void, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number): Entity"
    ]
  },
  {
    "comments": [
      "\nCreates a muscle constraint.\n",
      "@name constraint.Muscle",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Muscle",
      "@param {void} this - no description",
      "@param {Player} pl - The player that will be used to call @numpad.OnDown.",
      "@param {Entity} Ent1 - First entity.",
      "@param {Entity} Ent2 - Second entity.",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls)",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls)",
      "@param {Vector} LPos1 - no description",
      "@param {Vector} LPos2 - no description",
      "@param {number} Length1 - no description",
      "@param {number} Length2 - no description",
      "@param {number} width - Width of the rope.",
      "@param {KEY} key - The key binding, corresponding to an @KEY enum",
      "@param {number} fixed - Whether the constraint is fixed.",
      "@param {number} period - no description",
      "@param {number} amplitude - no description",
      "@param {boolean} starton - no description",
      "@param {string} material - Material of the rope.",
      "@returns {Entity} - Constraint. Will return false if the constraint could not be created.",
      "@returns {Entity} - rope. Will return nil if the constraint could not be created.",
      "@returns {Entity} - controller. Will return nil if the constraint could not be created.",
      "@returns {Entity} - slider. Will return nil if the fixed argument is not 1 or if the constraint could not be created.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "constraint",
    "name": "Muscle",
    "typings": [
      "(this: void, pl: Player, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number, LPos1: Vector, LPos2: Vector, Length1: number, Length2: number, width: number, key: KEY, fixed: number, period: number, amplitude: number, starton: boolean, material: string): [Entity, Entity, Entity, Entity]"
    ]
  },
  {
    "comments": [
      "\nCreates a motor constraint.\n",
      "@name constraint.Motor",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Motor",
      "@param {void} this - no description",
      "@param {Entity} Ent1 - First entity.",
      "@param {Entity} Ent2 - Second entity.",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls)",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls)",
      "@param {Vector} LPos1 - no description",
      "@param {Vector} LPos2 - no description",
      "@param {number} friction - no description",
      "@param {number} torque - no description",
      "@param {number} forcetime - no description",
      "@param {number} nocollide - Whether the entities should be no-collided.",
      "@param {number} toggle - Whether the constraint is on toggle.",
      "@param {Player} pl - The player that will be used to call @numpad.OnDown and @numpad.OnUp.",
      "@param {number} forcelimit - Amount of force until it breaks (0 = unbreakable)",
      "@param {KEY} numpadkey_fwd - The key binding for \"forward\", corresponding to an @KEY enum",
      "@param {KEY} numpadkey_bwd - The key binding for \"backwards\", corresponding to an @KEY enum",
      "@param {number} direction - no description",
      "@param {Vector} LocalAxis - no description",
      "@returns {Entity} - Constraint. Will return false if the constraint could not be created.",
      "@returns {Entity} - axis. Will return nil if the constraint could not be created.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "constraint",
    "name": "Motor",
    "typings": [
      "(this: void, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number, LPos1: Vector, LPos2: Vector, friction: number, torque: number, forcetime: number, nocollide: number, toggle: number, pl: Player, forcelimit: number, numpadkey_fwd: KEY, numpadkey_bwd: KEY, direction: number, LocalAxis: Vector): [Entity, Entity]"
    ]
  },
  {
    "comments": [
      "\nCreates a keep upright constraint.\n",
      "@name constraint.Keepupright",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Keepupright",
      "@note This function only works on prop_physics or prop_ragdoll.",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to keep upright",
      "@param {Angle} ang - The angle defined as \"upright\"",
      "@param {number} bone - The bone of the entity to constrain (0 for boneless)",
      "@param {number} angularLimit - Basically, the strength of the constraint",
      "@returns {Entity} - The created constraint, if any or false if the constraint failed to set"
    ],
    "type": "func",
    "context": "constraint",
    "name": "Keepupright",
    "typings": [
      "(this: void, ent: Entity, ang: Angle, bone: number, angularLimit: number): Entity"
    ]
  },
  {
    "comments": [
      "\nCreates a Hydraulic constraint.\n",
      "@name constraint.Hydraulic",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Hydraulic",
      "@param {void} this - no description",
      "@param {Player} pl - The player that will be used to call @numpad.OnDown.",
      "@param {Entity} Ent1 - First entity.",
      "@param {Entity} Ent2 - Second entity.",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls),",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls).",
      "@param {Vector} LPos1 - no description",
      "@param {Vector} LPos2 - no description",
      "@param {number} Length1 - no description",
      "@param {number} Length2 - no description",
      "@param {number} width - The width of the rope.",
      "@param {KEY} key - The key binding, corresponding to an @KEY enum",
      "@param {number} fixed - Whether the hydraulic is fixed.",
      "@param {number} speed - no description",
      "@param {string} material - The material of the rope.",
      "@returns {Entity} - Constraint. Will return false if the constraint could not be created.",
      "@returns {Entity} - rope. Will return nil if the constraint could not be created.",
      "@returns {Entity} - controller. Can return nil depending on how the constraint was created. Will return nil if the constraint could not be created.",
      "@returns {Entity} - slider. Can return nil depending on how the constraint was created. Will return nil if the constraint could not be created.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "constraint",
    "name": "Hydraulic",
    "typings": [
      "(this: void, pl: Player, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number, LPos1: Vector, LPos2: Vector, Length1: number, Length2: number, width: number, key: KEY, fixed: number, speed: number, material: string): [Entity, Entity, Entity, Entity]"
    ]
  },
  {
    "comments": [
      "\nReturns true if the entity has constraints attached to it\n",
      "@name constraint.HasConstraints",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/HasConstraints",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to check",
      "@returns {boolean} - Whether the entity has any constraints or not."
    ],
    "type": "func",
    "context": "constraint",
    "name": "HasConstraints",
    "typings": [
      "(this: void, ent: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all constraints directly connected to the entity\n",
      "@name constraint.GetTable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/GetTable",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to check",
      "@returns {table} - A list of all constraints connected to the entity."
    ],
    "type": "func",
    "context": "constraint",
    "name": "GetTable",
    "typings": [
      "(this: void, ent: Entity): table"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all entities recursively constrained to an entitiy.\n",
      "@name constraint.GetAllConstrainedEntities",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/GetAllConstrainedEntities",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to check",
      "@param {table} ResultTable - Table used to return result. Optional.",
      "@returns {table} - A table containing all of the constrained entities. This includes all entities constrained to entities constrained to the supplied entity, etc."
    ],
    "type": "func",
    "context": "constraint",
    "name": "GetAllConstrainedEntities",
    "typings": [
      "(this: void, ent: Entity, ResultTable?: table): table"
    ]
  },
  {
    "comments": [
      "\nMake this entity forget any constraints it knows about. Note that this will not actually remove the constraints.\n",
      "@name constraint.ForgetConstraints",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/ForgetConstraints",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity that will forget its constraints.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "constraint",
    "name": "ForgetConstraints",
    "typings": [
      "(this: void, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all constraints of a specific type directly connected to the entity\n",
      "@name constraint.FindConstraints",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/FindConstraints",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to check",
      "@param {string} type - The type of constraint (eg. \"Weld\", \"Elastic\", \"NoCollide\")",
      "@returns {table} - All the constraints of this entity."
    ],
    "type": "func",
    "context": "constraint",
    "name": "FindConstraints",
    "typings": [
      "(this: void, ent: Entity, type: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns the other entity involved in the first constraint of a specific type directly connected to the entity\n",
      "@name constraint.FindConstraintEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/FindConstraintEntity",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to check",
      "@param {string} type - The type of constraint (eg. \"Weld\", \"Elastic\", \"NoCollide\")",
      "@returns {Entity} - The other entity."
    ],
    "type": "func",
    "context": "constraint",
    "name": "FindConstraintEntity",
    "typings": [
      "(this: void, ent: Entity, type: string): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the first constraint of a specific type directly connected to the entity found\n",
      "@name constraint.FindConstraint",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/FindConstraint",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to check",
      "@param {string} type - The type of constraint (eg. \"Weld\", \"Elastic\", \"NoCollide\")",
      "@returns {table} - The constraint table, set with @constraint.AddConstraintTable"
    ],
    "type": "func",
    "context": "constraint",
    "name": "FindConstraint",
    "typings": [
      "(this: void, ent: Entity, type: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns the constraint of a specified type between two entities, if it exists\n",
      "@name constraint.Find",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Find",
      "@param {void} this - no description",
      "@param {Entity} ent1 - The first entity to check",
      "@param {Entity} ent2 - The second entity to check",
      "@param {string} type - The constraint type to look for (eg. \"Weld\", \"Elastic\", \"NoCollide\")",
      "@param {number} bone1 - The bone number for the first entity (0 for monoboned entities)",
      "@param {number} bone2 - The bone number for the second entity",
      "@returns {Entity} - constraint"
    ],
    "type": "func",
    "context": "constraint",
    "name": "Find",
    "typings": [
      "(this: void, ent1: Entity, ent2: Entity, type: string, bone1: number, bone2: number): Entity"
    ]
  },
  {
    "comments": [
      "\nCreates an elastic constraint.\n",
      "@name constraint.Elastic",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Elastic",
      "@param {void} this - no description",
      "@param {Entity} Ent1 - First entity.",
      "@param {Entity} Ent2 - Second entity",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls)",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls)",
      "@param {Vector} LPos1 - Position of first end of the rope. Local to Ent1.",
      "@param {Vector} LPos2 - Position of second end of the rope. Local to Ent2.",
      "@param {number} constant - no description",
      "@param {number} damping - no description",
      "@param {number} rdamping - no description",
      "@param {string} material - The material of the rope.",
      "@param {number} width - Width of rope.",
      "@param {boolean} stretchonly - no description",
      "@returns {Entity} - Constraint. Will return false if the constraint could not be created.",
      "@returns {Entity} - rope.  Will return nil if the constraint could not be created.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "constraint",
    "name": "Elastic",
    "typings": [
      "(this: void, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number, LPos1: Vector, LPos2: Vector, constant: number, damping: number, rdamping: number, material: string, width: number, stretchonly: boolean): [Entity, Entity]"
    ]
  },
  {
    "comments": [
      "\nCreates an invisible, non-moveable anchor point in the world to which things can be attached.\n",
      "@name constraint.CreateStaticAnchorPoint",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/CreateStaticAnchorPoint",
      "@param {void} this - no description",
      "@param {Vector} pos - The position to spawn the anchor at",
      "@returns {Entity} - anchor",
      "@returns {PhysObj} - physicsObject,",
      "@returns {number} - bone",
      "@returns {Vector} - LPos",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "constraint",
    "name": "CreateStaticAnchorPoint",
    "typings": [
      "(this: void, pos: Vector): [Entity, PhysObj, number, Vector]"
    ]
  },
  {
    "comments": [
      "\nCreates a rope without any constraint\n",
      "@name constraint.CreateKeyframeRope",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/CreateKeyframeRope",
      "@param {void} this - no description",
      "@param {Vector} pos - no description",
      "@param {number} width - no description",
      "@param {string} material - no description",
      "@param {Entity} Constraint - no description",
      "@param {Entity} Ent1 - no description",
      "@param {Vector} LPos1 - no description",
      "@param {number} Bone1 - no description",
      "@param {Entity} Ent2 - no description",
      "@param {Vector} LPos2 - no description",
      "@param {number} Bone2 - no description",
      "@param {table} kv - no description",
      "@returns {Entity} - rope"
    ],
    "type": "func",
    "context": "constraint",
    "name": "CreateKeyframeRope",
    "typings": [
      "(this: void, pos: Vector, width: number, material: string, Constraint: Entity, Ent1: Entity, LPos1: Vector, Bone1: number, Ent2: Entity, LPos2: Vector, Bone2: number, kv: table): Entity"
    ]
  },
  {
    "comments": [
      "\nBasic checks to make sure that the specified entity and bone are valid. Returns false if we should not be constraining the entity.\n",
      "@name constraint.CanConstrain",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/CanConstrain",
      "@param {void} this - no description",
      "@param {Entity} ent - The entity to check",
      "@param {number} bone - The bone of the entity to check (use 0 for mono boned ents)",
      "@returns {boolean} - shouldConstrain"
    ],
    "type": "func",
    "context": "constraint",
    "name": "CanConstrain",
    "typings": [
      "(this: void, ent: Entity, bone: number): boolean"
    ]
  },
  {
    "comments": [
      "\nCreates a ballsocket joint.\n",
      "@name constraint.Ballsocket",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Ballsocket",
      "@param {void} this - no description",
      "@param {Entity} Ent1 - First entity",
      "@param {Entity} Ent2 - Second entity",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls)",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls)",
      "@param {Vector} LocalPos - Centerposition of the joint, relative to the **second** entity.",
      "@param {number} forcelimit - Amount of force until it breaks (0 = unbreakable)",
      "@param {number} torquelimit - Amount of torque (rotation speed) until it breaks (0 = unbreakable)",
      "@param {number} nocollide - Whether the entities should be nocollided",
      "@returns {Entity} - Constraint. Will return false if the constraint could not be created."
    ],
    "type": "func",
    "context": "constraint",
    "name": "Ballsocket",
    "typings": [
      "(this: void, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number, LocalPos: Vector, forcelimit: number, torquelimit: number, nocollide: number): Entity"
    ]
  },
  {
    "comments": [
      "\nCreates an axis constraint.\n",
      "@name constraint.Axis",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/Axis",
      "@param {void} this - no description",
      "@param {Entity} Ent1 - First entity.",
      "@param {Entity} Ent2 - Second entity.",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls)",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls)",
      "@param {Vector} LPos1 - Position on the first entity, in its local space coordinates.",
      "@param {Vector} LPos2 - Position on the second entity, in its local space coordinates.",
      "@param {number} forcelimit - Amount of force until it breaks (0 = unbreakable)",
      "@param {number} torquelimit - Amount of torque (rotational force) until it breaks (0 = unbreakable)",
      "@param {number} friction - Constraint friction.",
      "@param {number} nocollide - Whether the entities should be no-collided.",
      "@param {Vector} LocalAxis - If you include the LocalAxis then LPos2 will not be used in the final constraint. However, LPos2 is still a required argument.",
      "@param {boolean} DontAddTable - Whether or not to add the constraint info on the entity table. See @constraint.AddConstraintTable.",
      "@returns {Entity} - Constraint. Will return false if the constraint could not be created."
    ],
    "type": "func",
    "context": "constraint",
    "name": "Axis",
    "typings": [
      "(this: void, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number, LPos1: Vector, LPos2: Vector, forcelimit: number, torquelimit: number, friction: number, nocollide: number, LocalAxis: Vector, DontAddTable: boolean): Entity"
    ]
  },
  {
    "comments": [
      "\nCreates an advanced ballsocket (ragdoll) constraint.\nUses a https://developer.valvesoftware.com/wiki/Phys_ragdollconstraint\n",
      "@name constraint.AdvBallsocket",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/AdvBallsocket",
      "@param {void} this - no description",
      "@param {Entity} Ent1 - First entity.",
      "@param {Entity} Ent2 - Second entity.",
      "@param {number} Bone1 - Bone of first entity (0 for non-ragdolls)",
      "@param {number} Bone2 - Bone of second entity (0 for non-ragdolls)",
      "@param {Vector} LPos1 - Position on the first entity, in its local space coordinates.",
      "@param {Vector} LPos2 - Position on the second entity, in its local space coordinates.",
      "@param {number} forcelimit - Amount of force until it breaks (0 = unbreakable)",
      "@param {number} torquelimit - Amount of torque (rotation speed) until it breaks (0 = unbreakable)",
      "@param {number} xmin - Minimum angle in rotations around the X axis local to the constraint.",
      "@param {number} ymin - Minimum angle in rotations around the Y axis local to the constraint.",
      "@param {number} zmin - Minimum angle in rotations around the Z axis local to the constraint.",
      "@param {number} xmax - Maximum angle in rotations around the X axis local to the constraint.",
      "@param {number} ymax - Maximum angle in rotations around the Y axis local to the constraint.",
      "@param {number} zmax - Maximum angle in rotations around the Z axis local to the constraint.",
      "@param {number} xfric - Rotational friction in the X axis local to the constraint.",
      "@param {number} yfric - Rotational friction in the Y axis local to the constraint.",
      "@param {number} zfric - Rotational friction in the Z axis local to the constraint.",
      "@param {number} onlyrotation - Only limit rotation, free movement.",
      "@param {number} nocollide - Whether the entities should be no-collided.",
      "@returns {Entity} - A phys_ragdollconstraint entity. Will return false if the constraint could not be created."
    ],
    "type": "func",
    "context": "constraint",
    "name": "AdvBallsocket",
    "typings": [
      "(this: void, Ent1: Entity, Ent2: Entity, Bone1: number, Bone2: number, LPos1: Vector, LPos2: Vector, forcelimit: number, torquelimit: number, xmin: number, ymin: number, zmin: number, xmax: number, ymax: number, zmax: number, xfric: number, yfric: number, zfric: number, onlyrotation: number, nocollide: number): Entity"
    ]
  },
  {
    "comments": [
      "\nStores info about the constraints on the entity's table. The only difference between this and @constraint.AddConstraintTable is that the constraint does not get deleted when the entity is removed.\n",
      "@name constraint.AddConstraintTableNoDelete",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/AddConstraintTableNoDelete",
      "@param {void} this - no description",
      "@param {Entity} ent1 - The entity to store the information on.",
      "@param {Entity} constrt - The constraint to store in the entity's table.",
      "@param {Entity} ent2 - Optional. If different from *ent1*, the info will also be stored in the table for this entity.",
      "@param {Entity} ent3 - Optional. Same as *ent2*.",
      "@param {Entity} ent4 - Optional. Same as *ent2*.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "constraint",
    "name": "AddConstraintTableNoDelete",
    "typings": [
      "(this: void, ent1: Entity, constrt: Entity, ent2?: Entity, ent3?: Entity, ent4?: Entity): void"
    ]
  },
  {
    "comments": [
      "\nStores information about constraints in an entity's table.\n",
      "@name constraint.AddConstraintTable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/constraint/AddConstraintTable",
      "@param {void} this - no description",
      "@param {Entity} ent1 - The entity to store the information on.",
      "@param {Entity} constrt - The constraint to store in the entity's table.",
      "@param {Entity} ent2 - Optional. If different from *ent1*, the info will also be stored in the table for this entity.",
      "@param {Entity} ent3 - Optional. Same as *ent2*.",
      "@param {Entity} ent4 - Optional. Same as *ent2*.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "constraint",
    "name": "AddConstraintTable",
    "typings": [
      "(this: void, ent1: Entity, constrt: Entity, ent2?: Entity, ent3?: Entity, ent4?: Entity): void"
    ]
  },
  {
    "comments": [
      "\nUsed by the engine to run a console command's callback function. This will only be called for commands that were added with @AddConsoleCommand function, which @concommand.Add calls internally. An error is sent to the player's chat if no callback is found.\nThis will still be called for concommands removed with @concommand.Remove but will return false.\n",
      "@name concommand.Run",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/concommand/Run",
      "@internal You might be looking for @RunConsoleCommand function or @Player:ConCommand.",
      "@param {void} this - no description",
      "@param {Player} ply - Player to run concommand on",
      "@param {string} cmd - Command name",
      "@param {any} args - Command arguments.\nCan be table or string",
      "@param {string} argumentString - string of all arguments sent to the command",
      "@returns {boolean} - *true* if the console command with the given name exists, and *false* if it doesn't."
    ],
    "type": "func",
    "context": "concommand",
    "name": "Run",
    "typings": [
      "(this: void, ply: Player, cmd: string, args: any, argumentString: string): boolean"
    ]
  },
  {
    "comments": [
      "\nRemoves a console command.\n",
      "@name concommand.Remove",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/concommand/Remove",
      "@bug #1183 This will not always remove the command from auto-complete.",
      "@bug #1183 @concommand.Add will fail if the concommand was previously removed with this function in a different realm (creating a command on the client that was removed from the server and vice-versa).",
      "@param {void} this - no description",
      "@param {string} name - The name of the command to be removed.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "concommand",
    "name": "Remove",
    "typings": [
      "(this: void, name: string): void"
    ]
  },
  {
    "comments": [
      "\nReturns the tables of all console command callbacks, and autocomplete functions, that were added to the game with @concommand.Add.\n",
      "@name concommand.GetTable",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/concommand/GetTable",
      "@param {void} this - no description",
      "@returns {table} - Table of command callback functions.",
      "@returns {table} - Table of command autocomplete functions.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "concommand",
    "name": "GetTable",
    "typings": [
      "(this: void): [table, table]"
    ]
  },
  {
    "comments": [
      "\nUsed by the engine to call the autocomplete function for a console command, and retrieve returned options.\n",
      "@name concommand.AutoComplete",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/concommand/AutoComplete",
      "@internal",
      "@param {void} this - no description",
      "@param {string} command - Name of command",
      "@param {string} arguments - Arguments given to the command",
      "@returns {table} - Possibilities for auto-completion. This is the return value of the auto-complete callback."
    ],
    "type": "func",
    "context": "concommand",
    "name": "AutoComplete",
    "typings": [
      "(this: void, command: string, arguments: string): table"
    ]
  },
  {
    "comments": [
      "\nReturns the red, green, blue, and alpha of the color.\n",
      "@name ColorFuncs:Unpack",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Color/Unpack",
      "@param {ColorFuncs} this - no description",
      "@returns {number} - Red",
      "@returns {number} - Green",
      "@returns {number} - Blue",
      "@returns {number} - Alpha",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "ColorFuncs",
    "name": "Unpack",
    "typings": [
      "(this: ColorFuncs): [number, number, number, number]"
    ]
  },
  {
    "comments": [
      "\nCreates a console command that runs a function in lua with optional autocompletion function and help text.\n",
      "@name concommand.Add",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/concommand/Add",
      "@bug #1183 This will fail if the concommand was previously removed with @concommand.Remove in a different realm (creating a command on the client that was removed from the server and vice-versa).",
      "@param {void} this - no description",
      "@param {string} name - The command name to be used in console.\nThis cannot be a name of existing console command or console variable. It will silently fail if it is.",
      "@param {function} callback - The function to run when the concommand is executed. Arguments passed are:",
      "@param {function} autoComplete - The function to call which should return a table of options for autocompletion. ([Autocompletion Tutorial](https://wiki.garrysmod.com/page/Autocomplete%20Tutorial))\nThis only properly works on the client since it is **not** networked. Arguments passed are:",
      "@param {string} helpText - The text to display should a user run 'help cmdName'.",
      "@param {FCVAR} flags - Concommand modifier flags. See @FCVAR enum.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "concommand",
    "name": "Add",
    "typings": [
      "(this: void, name: string, callback: concommandAddCallback, autoComplete?: concommandAddAutoComplete, helpText?: string, flags?: FCVAR): void"
    ],
    "types": [
      {
        "comments": [
          "@type concommandAddCallback",
          "@param {void} this - no description",
          "@param {Player} ply - The player that ran the concommand. NULL entity if command was entered with the dedicated server console.",
          "@param {string} cmd - The concommand string (if one callback is used for several concommands).",
          "@param {string[]} args - A table of all string arguments.",
          "@param {string} argStr - The arguments as a string."
        ],
        "type": "type",
        "name": "concommandAddCallback",
        "typing": "(this: void, ply: Player, cmd: string, args: string[], argStr: string) => unknown"
      },
      {
        "comments": [
          "@type concommandAddAutoComplete",
          "@param {void} this - no description",
          "@param {string} cmd - The concommand this autocompletion is for.",
          "@param {string} args - The arguments typed so far."
        ],
        "type": "type",
        "name": "concommandAddAutoComplete",
        "typing": "(this: void, cmd?: string, args?: string) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nTranslates the @IColor structure into a @Vector type, losing the alpha channel.\nThis will also range the values from 0 - 255 to 0 - 1\nr / 255 -> x\ng / 255 -> y\nb / 255 -> z\nThis is the opposite of @VectorFuncs:ToColor\n",
      "@name ColorFuncs:ToVector",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Color/ToVector",
      "@param {ColorFuncs} this - no description",
      "@returns {Vector} - The created @Vector type"
    ],
    "type": "class",
    "context": "ColorFuncs",
    "name": "ToVector",
    "typings": [
      "(this: ColorFuncs): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the color as a table with four elements.\n",
      "@name ColorFuncs:ToTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Color/ToTable",
      "@param {ColorFuncs} this - no description",
      "@returns {table} - The table with elements 1 = r, 2 = g, 3 = b, 4 = a."
    ],
    "type": "class",
    "context": "ColorFuncs",
    "name": "ToTable",
    "typings": [
      "(this: ColorFuncs): table"
    ]
  },
  {
    "comments": [
      "\nConverts a @IColor structure into HSV color space. This calls @ColorToHSV function internally.\n",
      "@name ColorFuncs:ToHSV",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Color/ToHSV",
      "@param {ColorFuncs} this - no description",
      "@returns {number} - The hue in degrees [0, 360).",
      "@returns {number} - The saturation in range [0, 1].",
      "@returns {number} - The value in range [0, 1].",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "ColorFuncs",
    "name": "ToHSV",
    "typings": [
      "(this: ColorFuncs): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nConverts a @IColor structure into HSL color space. This calls @ColorToHSL function internally.\n",
      "@name ColorFuncs:ToHSL",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/Color/ToHSL",
      "@param {ColorFuncs} this - no description",
      "@returns {number} - The hue in degrees [0, 360).",
      "@returns {number} - The saturation in the range [0, 1].",
      "@returns {number} - The lightness in the range [0, 1].",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "ColorFuncs",
    "name": "ToHSL",
    "typings": [
      "(this: ColorFuncs): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nSets the red, green, blue, and alpha of the color.\n",
      "@name ColorFuncs:SetUnpacked",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Color/SetUnpacked",
      "@param {ColorFuncs} this - no description",
      "@param {number} r - The red component",
      "@param {number} g - The green component",
      "@param {number} b - The blue component",
      "@param {number} a - The alpha component",
      "@returns {void}"
    ],
    "type": "class",
    "context": "ColorFuncs",
    "name": "SetUnpacked",
    "typings": [
      "(this: ColorFuncs, r: number, g: number, b: number, a: number): void"
    ]
  },
  {
    "comments": [
      "\nStops particle emission and destroys all particles instantly. Also detaches the particle effect from the entity it was attached to.\nConsider using @CNewParticleEffect:StopEmission( false, true ) instead, which has same effect, but doesn't require owner entity, and does't detach the particle system from its entity.\n",
      "@name CNewParticleEffect:StopEmissionAndDestroyImmediately",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/StopEmissionAndDestroyImmediately",
      "@note This function will work identically to @CNewParticleEffect:StopEmission( false, true ) if  @CNewParticleEffect:GetOwner entity is not valid.",
      "@param {CNewParticleEffect} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "StopEmissionAndDestroyImmediately",
    "typings": [
      "(this: CNewParticleEffect): void"
    ]
  },
  {
    "comments": [
      "\nStops the particle emission.\n",
      "@name CNewParticleEffect:StopEmission",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/StopEmission",
      "@param {CNewParticleEffect} this - no description",
      "@param {boolean} infiniteOnly - no description",
      "@param {boolean} removeAllParticles - no description",
      "@param {boolean} wakeOnStop - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "StopEmission",
    "typings": [
      "(this: CNewParticleEffect, infiniteOnly?: boolean, removeAllParticles?: boolean, wakeOnStop?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nStarts the particle emission.\n",
      "@name CNewParticleEffect:StartEmission",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/StartEmission",
      "@param {CNewParticleEffect} this - no description",
      "@param {boolean} infiniteOnly - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "StartEmission",
    "typings": [
      "(this: CNewParticleEffect, infiniteOnly?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the sort origin for given particle system. This is used as a helper to determine which particles are in front of which.\n",
      "@name CNewParticleEffect:SetSortOrigin",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/SetSortOrigin",
      "@param {CNewParticleEffect} this - no description",
      "@param {Vector} origin - The new sort origin.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "SetSortOrigin",
    "typings": [
      "(this: CNewParticleEffect, origin: Vector): void"
    ]
  },
  {
    "comments": [
      "\nForces the particle system to stop automatically rendering.\nUsed in conjunction with @CNewParticleEffect:Render.\n",
      "@name CNewParticleEffect:SetShouldDraw",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/SetShouldDraw",
      "@param {CNewParticleEffect} this - no description",
      "@param {boolean} should - Whether to automatically draw the particle effect or not.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "SetShouldDraw",
    "typings": [
      "(this: CNewParticleEffect, should: boolean): void"
    ]
  },
  {
    "comments": [
      "@name CNewParticleEffect:SetIsViewModelEffect",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/SetIsViewModelEffect",
      "@param {CNewParticleEffect} this - no description",
      "@param {boolean} isViewModel - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "SetIsViewModelEffect",
    "typings": [
      "(this: CNewParticleEffect, isViewModel: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the upward direction for given control point.\n",
      "@name CNewParticleEffect:SetControlPointUpVector",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/SetControlPointUpVector",
      "@param {CNewParticleEffect} this - no description",
      "@param {number} cpID - The control point ID, 0 to 63.",
      "@param {Vector} upward - The upward direction for given control point",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "SetControlPointUpVector",
    "typings": [
      "(this: CNewParticleEffect, cpID: number, upward: Vector): void"
    ]
  },
  {
    "comments": [
      "\nEssentially makes child control point follow the parent control point.\n",
      "@name CNewParticleEffect:SetControlPointParent",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/SetControlPointParent",
      "@param {CNewParticleEffect} this - no description",
      "@param {number} child - The child control point ID, 0 to 63.",
      "@param {number} parent - The parent control point ID, 0 to 63.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "SetControlPointParent",
    "typings": [
      "(this: CNewParticleEffect, child: number, parent: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the right direction for given control point.\n",
      "@name CNewParticleEffect:SetControlPointRightVector",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/SetControlPointRightVector",
      "@param {CNewParticleEffect} this - no description",
      "@param {number} cpID - The control point ID, 0 to 63.",
      "@param {Vector} right - The right direction for given control point.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "SetControlPointRightVector",
    "typings": [
      "(this: CNewParticleEffect, cpID: number, right: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the orientation for given control point.\n",
      "@name CNewParticleEffect:SetControlPointOrientation",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/SetControlPointOrientation",
      "@param {CNewParticleEffect} this - no description",
      "@param {number} cpID - The control point ID, 0 to 63.",
      "@param {Vector} forward - The forward direction for given control point",
      "@param {Vector} right - The right direction for given control point",
      "@param {Vector} up - The up direction for given control point",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "SetControlPointOrientation",
    "typings": [
      "(this: CNewParticleEffect, cpID: number, forward: Vector, right: Vector, up: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the forward direction for given control point.\n",
      "@name CNewParticleEffect:SetControlPointForwardVector",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/SetControlPointForwardVector",
      "@param {CNewParticleEffect} this - no description",
      "@param {number} cpID - The control point ID, 0 to 63.",
      "@param {Vector} forward - The forward direction for given control point",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "SetControlPointForwardVector",
    "typings": [
      "(this: CNewParticleEffect, cpID: number, forward: Vector): void"
    ]
  },
  {
    "comments": [
      "\nEssentially makes child control point follow the parent entity.\n",
      "@name CNewParticleEffect:SetControlPointEntity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/SetControlPointEntity",
      "@param {CNewParticleEffect} this - no description",
      "@param {number} child - The child control point ID, 0 to 63.",
      "@param {Entity} parent - The parent entity to follow.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "SetControlPointEntity",
    "typings": [
      "(this: CNewParticleEffect, child: number, parent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets a value for given control point.\n",
      "@name CNewParticleEffect:SetControlPoint",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/SetControlPoint",
      "@param {CNewParticleEffect} this - no description",
      "@param {number} cpID - The control point ID, 0 to 63.",
      "@param {Vector} value - The value to set for given control point.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "SetControlPoint",
    "typings": [
      "(this: CNewParticleEffect, cpID: number, value: Vector): void"
    ]
  },
  {
    "comments": [
      "\nForces the particle system to restart emitting particles.\n",
      "@name CNewParticleEffect:Restart",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/Restart",
      "@param {CNewParticleEffect} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "Restart",
    "typings": [
      "(this: CNewParticleEffect): void"
    ]
  },
  {
    "comments": [
      "\nForces the particle system to render using current rendering context.\nCan be used to render the particle system in vgui panels, etc.\nUsed in conjunction with @CNewParticleEffect:SetShouldDraw.\n",
      "@name CNewParticleEffect:Render",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/Render",
      "@param {CNewParticleEffect} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "Render",
    "typings": [
      "(this: CNewParticleEffect): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the particle system is valid or not.\n",
      "@name CNewParticleEffect:IsValid",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/IsValid",
      "@param {CNewParticleEffect} this - no description",
      "@returns {boolean} - Whether the particle system is valid or not."
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "IsValid",
    "typings": [
      "(this: CNewParticleEffect): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the particle system is intended to be used on a view model?\n",
      "@name CNewParticleEffect:IsViewModelEffect",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/IsViewModelEffect",
      "@param {CNewParticleEffect} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "IsViewModelEffect",
    "typings": [
      "(this: CNewParticleEffect): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the particle system has finished emitting particles or not.\n",
      "@name CNewParticleEffect:IsFinished",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/IsFinished",
      "@param {CNewParticleEffect} this - no description",
      "@returns {boolean} - Whether the particle system has finished emitting particles or not."
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "IsFinished",
    "typings": [
      "(this: CNewParticleEffect): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the owner of the particle system, the entity the particle system is attached to.\n",
      "@name CNewParticleEffect:GetOwner",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/GetOwner",
      "@param {CNewParticleEffect} this - no description",
      "@returns {Entity} - The owner of the particle system."
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "GetOwner",
    "typings": [
      "(this: CNewParticleEffect): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the highest control point number for given particle system.\n",
      "@name CNewParticleEffect:GetHighestControlPoint",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/GetHighestControlPoint",
      "@param {CNewParticleEffect} this - no description",
      "@returns {boolean} - The highest control point number for given particle system, 0 to 63."
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "GetHighestControlPoint",
    "typings": [
      "(this: CNewParticleEffect): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the name of the particle effect this system is set to emit.\n",
      "@name CNewParticleEffect:GetEffectName",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/GetEffectName",
      "@param {CNewParticleEffect} this - no description",
      "@returns {string} - The name of the particle effect."
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "GetEffectName",
    "typings": [
      "(this: CNewParticleEffect): string"
    ]
  },
  {
    "comments": [
      "@name CNewParticleEffect:GetAutoUpdateBBox",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/GetAutoUpdateBBox",
      "@param {CNewParticleEffect} this - no description",
      "@returns {boolean} - no description"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "GetAutoUpdateBBox",
    "typings": [
      "(this: CNewParticleEffect): boolean"
    ]
  },
  {
    "comments": [
      "\nAdds a control point to the particle system.\n",
      "@name CNewParticleEffect:AddControlPoint",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CNewParticleEffect/AddControlPoint",
      "@note This function will not work if the @CNewParticleEffect:GetOwner entity is not valid",
      "@param {CNewParticleEffect} this - no description",
      "@param {number} cpID - The control point ID, 0 to 63.",
      "@param {Entity} ent - The entity to attach the control point to.",
      "@param {PATTACH} partAttachment - See @PATTACH enum.",
      "@param {number} entAttachment - The attachment ID on the entity to attach the particle system to",
      "@param {Vector} offset - The offset from the @EntityFuncs:GetPos of the entity we are attaching this CP to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNewParticleEffect",
    "name": "AddControlPoint",
    "typings": [
      "(this: CNewParticleEffect, cpID: number, ent: Entity, partAttachment: PATTACH, entAttachment?: number, offset?: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the top right area of the @CNavLadder type.\n",
      "@name CNavLadder:SetTopRightArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/SetTopRightArea",
      "@param {CNavLadder} this - no description",
      "@param {CNavArea} area - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "SetTopRightArea",
    "typings": [
      "(this: CNavLadder, area: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nSets the top left area of the @CNavLadder type.\n",
      "@name CNavLadder:SetTopLeftArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/SetTopLeftArea",
      "@param {CNavLadder} this - no description",
      "@param {CNavArea} area - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "SetTopLeftArea",
    "typings": [
      "(this: CNavLadder, area: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nSets the top forward area of the @CNavLadder type.\n",
      "@name CNavLadder:SetTopForwardArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/SetTopForwardArea",
      "@param {CNavLadder} this - no description",
      "@param {CNavArea} area - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "SetTopForwardArea",
    "typings": [
      "(this: CNavLadder, area: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nSets the top behind area of the @CNavLadder type.\n",
      "@name CNavLadder:SetTopBehindArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/SetTopBehindArea",
      "@param {CNavLadder} this - no description",
      "@param {CNavArea} area - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "SetTopBehindArea",
    "typings": [
      "(this: CNavLadder, area: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the given nav ladder.\n",
      "@name CNavLadder:Remove",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/Remove",
      "@param {CNavLadder} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "Remove",
    "typings": [
      "(this: CNavLadder): void"
    ]
  },
  {
    "comments": [
      "\nSets the bottom area of the @CNavLadder type.\n",
      "@name CNavLadder:SetBottomArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/SetBottomArea",
      "@param {CNavLadder} this - no description",
      "@param {CNavArea} area - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "SetBottomArea",
    "typings": [
      "(this: CNavLadder, area: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether this @CNavLadder type is valid or not.\n",
      "@name CNavLadder:IsValid",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/IsValid",
      "@param {CNavLadder} this - no description",
      "@returns {boolean} - Whether this @CNavLadder type is valid or not."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "IsValid",
    "typings": [
      "(this: CNavLadder): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this @CNavLadder type has an outgoing ( one or two way ) connection **to** given @CNavArea type in given direction.\n",
      "@name CNavLadder:IsConnectedAtSide",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/IsConnectedAtSide",
      "@param {CNavLadder} this - no description",
      "@param {CNavArea} navArea - The @CNavArea type to test against.",
      "@param {NavDir} navDirType - The direction, in which to look for the connection. See @NavDir enum",
      "@returns {boolean} - Whether this @CNavLadder type has an outgoing ( one or two way ) connection **to** given @CNavArea type in given direction."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "IsConnectedAtSide",
    "typings": [
      "(this: CNavLadder, navArea: CNavArea, navDirType: NavDir): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the width of the ladder in Hammer Units.\n",
      "@name CNavLadder:GetWidth",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetWidth",
      "@param {CNavLadder} this - no description",
      "@returns {number} - The width of the ladder in Hammer Units."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetWidth",
    "typings": [
      "(this: CNavLadder): number"
    ]
  },
  {
    "comments": [
      "\nReturns the top right @CNavArea type of the @CNavLadder type.\n",
      "@name CNavLadder:GetTopRightArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetTopRightArea",
      "@param {CNavLadder} this - no description",
      "@returns {CNavArea | CNavLadder} - The top right @CNavArea type of the @CNavLadder type."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetTopRightArea",
    "typings": [
      "(this: CNavLadder): CNavArea | CNavLadder"
    ]
  },
  {
    "comments": [
      "\nReturns the top left @CNavArea type of the @CNavLadder type.\n",
      "@name CNavLadder:GetTopLeftArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetTopLeftArea",
      "@param {CNavLadder} this - no description",
      "@returns {CNavArea | CNavLadder} - The top left @CNavArea type of the @CNavLadder type."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetTopLeftArea",
    "typings": [
      "(this: CNavLadder): CNavArea | CNavLadder"
    ]
  },
  {
    "comments": [
      "\nReturns the top forward @CNavArea type of the @CNavLadder type.\n",
      "@name CNavLadder:GetTopForwardArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetTopForwardArea",
      "@param {CNavLadder} this - no description",
      "@returns {CNavArea | CNavLadder} - The top forward @CNavArea type of the @CNavLadder type."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetTopForwardArea",
    "typings": [
      "(this: CNavLadder): CNavArea | CNavLadder"
    ]
  },
  {
    "comments": [
      "\nReturns the top behind @CNavArea type of the @CNavLadder type.\n",
      "@name CNavLadder:GetTopBehindArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetTopBehindArea",
      "@param {CNavLadder} this - no description",
      "@returns {CNavArea | CNavLadder} - The top behind @CNavArea type of the @CNavLadder type."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetTopBehindArea",
    "typings": [
      "(this: CNavLadder): CNavArea | CNavLadder"
    ]
  },
  {
    "comments": [
      "\nReturns the topmost position of the ladder.\n",
      "@name CNavLadder:GetTop",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetTop",
      "@param {CNavLadder} this - no description",
      "@returns {Vector} - The topmost position of the ladder."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetTop",
    "typings": [
      "(this: CNavLadder): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the world position based on given height relative to the ladder.\n",
      "@name CNavLadder:GetPosAtHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetPosAtHeight",
      "@param {CNavLadder} this - no description",
      "@param {number} height - The Z position in world space coordinates.",
      "@returns {Vector} - The closest point on the ladder to that height."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetPosAtHeight",
    "typings": [
      "(this: CNavLadder, height: number): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the direction of this @CNavLadder type. ( The direction in which players back will be facing if they are looking directly at the ladder )\n",
      "@name CNavLadder:GetNormal",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetNormal",
      "@param {CNavLadder} this - no description",
      "@returns {CNavLadder} - The direction of this @CNavLadder type."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetNormal",
    "typings": [
      "(this: CNavLadder): CNavLadder"
    ]
  },
  {
    "comments": [
      "\nReturns the length of the ladder.\n",
      "@name CNavLadder:GetLength",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetLength",
      "@param {CNavLadder} this - no description",
      "@returns {number} - The length of the ladder."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetLength",
    "typings": [
      "(this: CNavLadder): number"
    ]
  },
  {
    "comments": [
      "\nReturns this @CNavLadder types unique ID.\n",
      "@name CNavLadder:GetID",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetID",
      "@param {CNavLadder} this - no description",
      "@returns {number} - The unique ID."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetID",
    "typings": [
      "(this: CNavLadder): number"
    ]
  },
  {
    "comments": [
      "\nReturns the bottom area of the @CNavLadder type.\n",
      "@name CNavLadder:GetBottomArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetBottomArea",
      "@param {CNavLadder} this - no description",
      "@returns {CNavArea} - no description"
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetBottomArea",
    "typings": [
      "(this: CNavLadder): CNavArea"
    ]
  },
  {
    "comments": [
      "\nReturns the bottom most position of the ladder.\n",
      "@name CNavLadder:GetBottom",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/GetBottom",
      "@param {CNavLadder} this - no description",
      "@returns {Vector} - The bottom most position of the ladder."
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "GetBottom",
    "typings": [
      "(this: CNavLadder): Vector"
    ]
  },
  {
    "comments": [
      "\nDisconnects this ladder from given area in a single direction.\n",
      "@name CNavLadder:Disconnect",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/Disconnect",
      "@param {CNavLadder} this - no description",
      "@param {CNavArea} area - The @CNavArea type this to disconnect from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "Disconnect",
    "typings": [
      "(this: CNavLadder, area: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nConnects this ladder to a @CNavArea type with a one way connection. ( From this ladder to the target area ).\nSee @CNavArea:ConnectTo for making the connection from area to ladder.\n",
      "@name CNavLadder:ConnectTo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavLadder/ConnectTo",
      "@param {CNavLadder} this - no description",
      "@param {CNavArea} area - The area this ladder leads to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavLadder",
    "name": "ConnectTo",
    "typings": [
      "(this: CNavLadder, area: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nMoves this open list to appropriate position based on its @CNavArea:GetTotalCost compared to the total cost of other areas in the open list.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:UpdateOnOpenList",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/UpdateOnOpenList",
      "@param {CNavArea} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "UpdateOnOpenList",
    "typings": [
      "(this: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nSets the total cost when passing from starting area to the goal area through this node.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:SetTotalCost",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/SetTotalCost",
      "@param {CNavArea} this - no description",
      "@param {number} cost - The total cost of the path to set.\nMust be above or equal 0.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "SetTotalCost",
    "typings": [
      "(this: CNavArea, cost: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the Place of the nav area.\nThere is a limit of 256 Places per nav file.\n",
      "@name CNavArea:SetPlace",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/SetPlace",
      "@param {CNavArea} this - no description",
      "@param {string} place - Set to \"\" to remove place from the nav area.",
      "@returns {boolean} - Returns true of operation succeeded, false otherwise."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "SetPlace",
    "typings": [
      "(this: CNavArea, place: string): boolean"
    ]
  },
  {
    "comments": [
      "\nSets the new parent of this @CNavArea type.\n",
      "@name CNavArea:SetParent",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/SetParent",
      "@param {CNavArea} this - no description",
      "@param {CNavArea} parent - The new parent to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "SetParent",
    "typings": [
      "(this: CNavArea, parent: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nSets the cost from starting area this area when pathfinding.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:SetCostSoFar",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/SetCostSoFar",
      "@param {CNavArea} this - no description",
      "@param {number} cost - The cost so far",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "SetCostSoFar",
    "typings": [
      "(this: CNavArea, cost: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the position of a corner of a nav area.\n",
      "@name CNavArea:SetCorner",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/SetCorner",
      "@param {CNavArea} this - no description",
      "@param {NavCorner} corner - The corner to set, uses @NavCorner enum",
      "@param {Vector} position - The new position to set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "SetCorner",
    "typings": [
      "(this: CNavArea, corner: NavCorner, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the attributes for given CNavArea.\n",
      "@name CNavArea:SetAttributes",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/SetAttributes",
      "@param {CNavArea} this - no description",
      "@param {NAV_MESH} attribs - The attribute bitflag. See @NAV_MESH enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "SetAttributes",
    "typings": [
      "(this: CNavArea, attribs: NAV_MESH): void"
    ]
  },
  {
    "comments": [
      "\nRemoves this node from the Closed List.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:RemoveFromClosedList",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/RemoveFromClosedList",
      "@param {CNavArea} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "RemoveFromClosedList",
    "typings": [
      "(this: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the given nav area.\n",
      "@name CNavArea:Remove",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/Remove",
      "@param {CNavArea} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "Remove",
    "typings": [
      "(this: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nRemoves a CNavArea from the Open List with the lowest cost to traverse to from the starting node, and returns it.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:PopOpenList",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/PopOpenList",
      "@param {CNavArea} this - no description",
      "@returns {CNavArea} - The CNavArea from the Open List with the lowest cost to traverse to from the starting node."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "PopOpenList",
    "typings": [
      "(this: CNavArea): CNavArea"
    ]
  },
  {
    "comments": [
      "\nDrops a corner or all corners of a @CNavArea type to the ground below it.\n",
      "@name CNavArea:PlaceOnGround",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/PlaceOnGround",
      "@param {CNavArea} this - no description",
      "@param {NavCorner} corner - The corner(s) to drop, uses @NavCorner enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "PlaceOnGround",
    "typings": [
      "(this: CNavArea, corner: NavCorner): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether we can be seen from the given position.\n",
      "@name CNavArea:IsVisible",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsVisible",
      "@param {CNavArea} this - no description",
      "@param {Vector} pos - The position to check.",
      "@returns {boolean} - Whether we can be seen or not.",
      "@returns {Vector} - If we can be seen, this is returned with either the center or one of the corners of the Nav Area.",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsVisible",
    "typings": [
      "(this: CNavArea, pos: Vector): [boolean, Vector]"
    ]
  },
  {
    "comments": [
      "\nReturns whether this @CNavArea type is valid or not.\n",
      "@name CNavArea:IsValid",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsValid",
      "@param {CNavArea} this - no description",
      "@returns {boolean} - Whether this @CNavArea type is valid or not."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsValid",
    "typings": [
      "(this: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nWhether this Nav Area is placed underwater.\n",
      "@name CNavArea:IsUnderwater",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsUnderwater",
      "@param {CNavArea} this - no description",
      "@returns {boolean} - Whether we're underwater or not."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsUnderwater",
    "typings": [
      "(this: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if we're shaped like a square.\n",
      "@name CNavArea:IsRoughlySquare",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsRoughlySquare",
      "@param {CNavArea} this - no description",
      "@returns {boolean} - If we're a square or not."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsRoughlySquare",
    "typings": [
      "(this: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if this @CNavArea type is overlapping the given @CNavArea type.\n",
      "@name CNavArea:IsOverlappingArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsOverlappingArea",
      "@param {CNavArea} this - no description",
      "@param {CNavArea} navArea - The @CNavArea type to test against.",
      "@returns {boolean} - True if the given @CNavArea type overlaps this @CNavArea type at any point."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsOverlappingArea",
    "typings": [
      "(this: CNavArea, navArea: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns if this position overlaps the Nav Area within the given tolerance.\n",
      "@name CNavArea:IsOverlapping",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsOverlapping",
      "@param {CNavArea} this - no description",
      "@param {Vector} pos - The overlapping position to test.",
      "@param {number} tolerance - The tolerance of the overlapping, set to 0 for no tolerance.",
      "@returns {boolean} - Whether the given position overlaps the Nav Area or not."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsOverlapping",
    "typings": [
      "(this: CNavArea, pos: Vector, tolerance?: number): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the Open List is empty or not.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:IsOpenListEmpty",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsOpenListEmpty",
      "@param {CNavArea} this - no description",
      "@returns {boolean} - Whether the Open List is empty or not."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsOpenListEmpty",
    "typings": [
      "(this: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this area is in the Open List.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:IsOpen",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsOpen",
      "@param {CNavArea} this - no description",
      "@returns {boolean} - Whether this area is in the Open List."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsOpen",
    "typings": [
      "(this: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this Nav Area is flat within the tolerance of the **nav_coplanar_slope_limit_displacement** and **nav_coplanar_slope_limit** convars.\n",
      "@name CNavArea:IsFlat",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsFlat",
      "@param {CNavArea} this - no description",
      "@returns {boolean} - Whether this CNavArea is mostly flat."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsFlat",
    "typings": [
      "(this: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this Nav Area is in the same plane as the given one.\n",
      "@name CNavArea:IsCoplanar",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsCoplanar",
      "@param {CNavArea} this - no description",
      "@param {CNavArea} navArea - The Nav Area to test.",
      "@returns {boolean} - Whether we're coplanar or not."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsCoplanar",
    "typings": [
      "(this: CNavArea, navArea: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this @CNavArea type has an outgoing ( one or two way ) connection **to** given @CNavArea type in given direction.\nSee @CNavArea:IsConnected for a function that checks all sides.\n",
      "@name CNavArea:IsConnectedAtSide",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsConnectedAtSide",
      "@param {CNavArea} this - no description",
      "@param {CNavArea} navArea - The @CNavArea type to test against.",
      "@param {NavDir} navDirType - The direction, in which to look for the connection. See @NavDir enum",
      "@returns {boolean} - Whether this @CNavArea type has an outgoing ( one or two way ) connection **to** given @CNavArea type in given direction."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsConnectedAtSide",
    "typings": [
      "(this: CNavArea, navArea: CNavArea, navDirType: NavDir): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this @CNavArea type has an outgoing ( one or two way ) connection **to** given @CNavArea type.\nSee @CNavArea:IsConnectedAtSide for a function that only checks for outgoing connections in one direction.\n",
      "@name CNavArea:IsConnected",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsConnected",
      "@param {CNavArea} this - no description",
      "@param {CNavArea} navArea - The @CNavArea type to test against.",
      "@returns {boolean} - Whether this @CNavArea type has an outgoing ( one or two way ) connection **to** given @CNavArea type."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsConnected",
    "typings": [
      "(this: CNavArea, navArea: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the nav area is blocked or not, i.e. whether it can be walked through or not.\n",
      "@name CNavArea:IsBlocked",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsBlocked",
      "@param {CNavArea} this - no description",
      "@param {number} teamID - The team ID to test, -2 = any team.\nOnly 2 actual teams are available, 0 and 1.",
      "@param {boolean} ignoreNavBlockers - Whether to ignore [func_nav_blocker](https://developer.valvesoftware.com/wiki/Func_nav_blocker) entities.",
      "@returns {boolean} - Whether the area is blocked or not"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsBlocked",
    "typings": [
      "(this: CNavArea, teamID?: number, ignoreNavBlockers?: boolean): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this node is in the Closed List.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:IsClosed",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/IsClosed",
      "@param {CNavArea} this - no description",
      "@returns {boolean} - Whether this node is in the Closed List."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "IsClosed",
    "typings": [
      "(this: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if the given @CNavArea type has this attribute flag set.\n",
      "@name CNavArea:HasAttributes",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/HasAttributes",
      "@param {CNavArea} this - no description",
      "@param {NAV_MESH} attribs - Attribute mask to check for, see @NAV_MESH enum",
      "@returns {boolean} - True if the @CNavArea type matches the given mask. False otherwise."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "HasAttributes",
    "typings": [
      "(this: CNavArea, attribs: NAV_MESH): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the elevation of this Nav Area at the given position.\n",
      "@name CNavArea:GetZ",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetZ",
      "@param {CNavArea} this - no description",
      "@param {Vector} pos - The position to get the elevation from, the z value from this position is ignored and only the X and Y values are used to this task.",
      "@returns {number} - The elevation."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetZ",
    "typings": [
      "(this: CNavArea, pos: Vector): number"
    ]
  },
  {
    "comments": [
      "\nReturns the total cost when passing from starting area to the goal area through this node. Set by @CNavArea:SetTotalCost.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:GetTotalCost",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetTotalCost",
      "@param {CNavArea} this - no description",
      "@returns {number} - The total cost"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetTotalCost",
    "typings": [
      "(this: CNavArea): number"
    ]
  },
  {
    "comments": [
      "\nReturns the height of this Nav Area.\n",
      "@name CNavArea:GetSizeY",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetSizeY",
      "@param {CNavArea} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetSizeY",
    "typings": [
      "(this: CNavArea): number"
    ]
  },
  {
    "comments": [
      "\nReturns the width this Nav Area.\n",
      "@name CNavArea:GetSizeX",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetSizeX",
      "@param {CNavArea} this - no description",
      "@returns {number} - no description"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetSizeX",
    "typings": [
      "(this: CNavArea): number"
    ]
  },
  {
    "comments": [
      "\nReturns a random point on the nav area.\n",
      "@name CNavArea:GetRandomPoint",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetRandomPoint",
      "@param {CNavArea} this - no description",
      "@returns {Vector} - The random point on the nav area."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetRandomPoint",
    "typings": [
      "(this: CNavArea): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns a random @CNavArea type that has an outgoing ( one or two way ) connection **from** this @CNavArea type in given direction.\n",
      "@name CNavArea:GetRandomAdjacentAreaAtSide",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetRandomAdjacentAreaAtSide",
      "@param {CNavArea} this - no description",
      "@param {NavDir} navDir - The direction, in which to look for @CNavArea types, see @NavDir enum.",
      "@returns {CNavArea | CNavArea} - The random @CNavArea type that has an outgoing ( one or two way ) connection **from** this @CNavArea type in given direction, if any."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetRandomAdjacentAreaAtSide",
    "typings": [
      "(this: CNavArea, navDir: NavDir): CNavArea | CNavArea"
    ]
  },
  {
    "comments": [
      "\nReturns the Place of the nav area.\n",
      "@name CNavArea:GetPlace",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetPlace",
      "@param {CNavArea} this - no description",
      "@returns {string} - The place of the nav area, or no value if it doesn't have a place set."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetPlace",
    "typings": [
      "(this: CNavArea): string"
    ]
  },
  {
    "comments": [
      "\nReturns how this @CNavArea type is connected to its parent.\n",
      "@name CNavArea:GetParentHow",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetParentHow",
      "@param {CNavArea} this - no description",
      "@returns {NavTraverseType} - See @NavTraverseType enum"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetParentHow",
    "typings": [
      "(this: CNavArea): NavTraverseType"
    ]
  },
  {
    "comments": [
      "\nReturns the parent @CNavArea type\n",
      "@name CNavArea:GetParent",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetParent",
      "@param {CNavArea} this - no description",
      "@returns {CNavArea} - The parent @CNavArea type"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetParent",
    "typings": [
      "(this: CNavArea): CNavArea"
    ]
  },
  {
    "comments": [
      "\nReturns all @CNavLadder types that have a ( one or two way ) connection **from** ( one and two way ) this @CNavArea type in given direction.\nSee @CNavArea:GetLadders for a function that returns @CNavLadder type from/in all sides/directions.\n",
      "@name CNavArea:GetLaddersAtSide",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetLaddersAtSide",
      "@param {CNavArea} this - no description",
      "@param {number} navDir - The direction, in which to look for @CNavLadder types.\n0 = Up ( LadderDirectionType::LADDER_UP )\n1 = Down ( LadderDirectionType::LADDER_DOWN )",
      "@returns {table} - The @CNavLadder types that have a ( one or two way ) connection **from** this @CNavArea type in given direction."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetLaddersAtSide",
    "typings": [
      "(this: CNavArea, navDir: number): table"
    ]
  },
  {
    "comments": [
      "\nReturns all @CNavLadder types that have a ( one or two way ) connection **from** this @CNavArea type.\nSee @CNavArea:GetLaddersAtSide for a function that only returns @CNavLadder types in given direction.\n",
      "@name CNavArea:GetLadders",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetLadders",
      "@param {CNavArea} this - no description",
      "@returns {table} - The @CNavLadder types that have a ( one or two way ) connection **from** this @CNavArea type."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetLadders",
    "typings": [
      "(this: CNavArea): table"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all the @CNavArea types that have a one-way connection **to** this @CNavArea type from given direction.\nIf a @CNavArea type has a two-way connection **to or from** this @CNavArea type then it will not be returned from this function, use @CNavArea:GetAdjacentAreas to get outgoing ( one and two way ) connections.\nSee @CNavArea:GetIncomingConnections for a function that returns one-way incoming connections from  all sides/directions.\n",
      "@name CNavArea:GetIncomingConnectionsAtSide",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetIncomingConnectionsAtSide",
      "@param {CNavArea} this - no description",
      "@param {NavDir} navDir - The direction, from which to look for @CNavArea types, see @NavDir enum.",
      "@returns {CNavArea[]} - A table of all @CNavArea types with one-way connection **to** this @CNavArea type from given direction.Returns an empty table if there are no one-way incoming connections **to** this @CNavArea type from given direction."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetIncomingConnectionsAtSide",
    "typings": [
      "(this: CNavArea, navDir: NavDir): CNavArea[]"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all the @CNavArea types that have a one-way connection **to** this @CNavArea type.\nIf a @CNavArea type has a two-way connection **to or from** this @CNavArea type then it will not be returned from this function, use @CNavArea:GetAdjacentAreas to get outgoing ( one and two way ) connections.\nSee @CNavArea:GetIncomingConnectionsAtSide for a function that returns one-way incoming connections from  only one side/direction.\n",
      "@name CNavArea:GetIncomingConnections",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetIncomingConnections",
      "@param {CNavArea} this - no description",
      "@returns {CNavArea[]} - A table of all @CNavArea types with one-way connection **to** this @CNavArea type.Returns an empty table if there are no one-way incoming connections **to** this @CNavArea type."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetIncomingConnections",
    "typings": [
      "(this: CNavArea): CNavArea[]"
    ]
  },
  {
    "comments": [
      "\nReturns this @CNavArea types unique ID.\n",
      "@name CNavArea:GetID",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetID",
      "@param {CNavArea} this - no description",
      "@returns {number} - The unique ID."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetID",
    "typings": [
      "(this: CNavArea): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table of good hiding spots in this area.\nSee also @CNavArea:GetExposedSpots.\n",
      "@name CNavArea:GetHidingSpots",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetHidingSpots",
      "@param {CNavArea} this - no description",
      "@param {number} type - The type of spots to include.\n* 0 = None (Not recommended)\n* 1 = In Cover/basically a hiding spot, in a corner with good hard cover nearby\n* 2 = good sniper spot, had at least one decent sniping corridor\n* 4 = perfect sniper spot, can see either very far, or a large area, or both\n* 8 = exposed, spot in the open, usually on a ledge or cliff, same as GetExposedSpots\n* Values over 255 and below 0 will be clamped.",
      "@returns {Vector[]} - A table of @Vector types"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetHidingSpots",
    "typings": [
      "(this: CNavArea, type?: number): Vector[]"
    ]
  },
  {
    "comments": [
      "\nReturns size info about the nav area.\n",
      "@name CNavArea:GetExtentInfo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetExtentInfo",
      "@param {CNavArea} this - no description",
      "@returns {ICNavAreaGetExtentInfoReturn} - Returns a table containing the following keys:"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetExtentInfo",
    "typings": [
      "(this: CNavArea): ICNavAreaGetExtentInfoReturn"
    ],
    "types": [
      {
        "comments": [
          "hi - {Vector}: no description"
        ],
        "type": "interface",
        "name": "hi",
        "typing": "Vector",
        "context": "ICNavAreaGetExtentInfoReturn"
      },
      {
        "comments": [
          "lo - {Vector}: no description"
        ],
        "type": "interface",
        "name": "lo",
        "typing": "Vector",
        "context": "ICNavAreaGetExtentInfoReturn"
      },
      {
        "comments": [
          "SizeX - {number}: no description"
        ],
        "type": "interface",
        "name": "SizeX",
        "typing": "number",
        "context": "ICNavAreaGetExtentInfoReturn"
      },
      {
        "comments": [
          "SizeY - {number}: no description"
        ],
        "type": "interface",
        "name": "SizeY",
        "typing": "number",
        "context": "ICNavAreaGetExtentInfoReturn"
      },
      {
        "comments": [
          "SizeZ - {number}: no description"
        ],
        "type": "interface",
        "name": "SizeZ",
        "typing": "number",
        "context": "ICNavAreaGetExtentInfoReturn"
      }
    ]
  },
  {
    "comments": [
      "\nReturns a table of very bad hiding spots in this area.\nSee also @CNavArea:GetHidingSpots.\n",
      "@name CNavArea:GetExposedSpots",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetExposedSpots",
      "@param {CNavArea} this - no description",
      "@returns {Vector[]} - A table of @Vector types"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetExposedSpots",
    "typings": [
      "(this: CNavArea): Vector[]"
    ]
  },
  {
    "comments": [
      "\nReturns the cost from starting area this area when pathfinding. Set by @CNavArea:SetCostSoFar.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:GetCostSoFar",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetCostSoFar",
      "@param {CNavArea} this - no description",
      "@returns {number} - The cost so far."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetCostSoFar",
    "typings": [
      "(this: CNavArea): number"
    ]
  },
  {
    "comments": [
      "\nReturns the vector position of the corner for the given @CNavArea type.\n",
      "@name CNavArea:GetCorner",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetCorner",
      "@param {CNavArea} this - no description",
      "@param {NavCorner} cornerid - The target corner to get the position of, takes @NavCorner enum.",
      "@returns {Vector} - The corner position."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetCorner",
    "typings": [
      "(this: CNavArea, cornerid: NavCorner): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the closest point of this Nav Area from the given position.\n",
      "@name CNavArea:GetClosestPointOnArea",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetClosestPointOnArea",
      "@param {CNavArea} this - no description",
      "@param {Vector} pos - The given position, can be outside of the Nav Area bounds.",
      "@returns {Vector} - The closest position on this Nav Area."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetClosestPointOnArea",
    "typings": [
      "(this: CNavArea, pos: Vector): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the center most vector point for the given @CNavArea type.\n",
      "@name CNavArea:GetCenter",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetCenter",
      "@param {CNavArea} this - no description",
      "@returns {Vector} - The center vector."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetCenter",
    "typings": [
      "(this: CNavArea): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the attribute mask for the given @CNavArea type.\n",
      "@name CNavArea:GetAttributes",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetAttributes",
      "@note A navmesh that was generated with nav_quicksave set to 1 will have all @CNavArea types attribute masks set to 0",
      "@param {CNavArea} this - no description",
      "@returns {boolean} - Attribute mask for this @CNavArea type, see @NAV_MESH enum for the specific flags."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetAttributes",
    "typings": [
      "(this: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of @CNavArea types that have a connection ( one or two way ) **from** this @CNavArea type in given direction.\nSee @CNavArea:GetAdjacentCount for a function that returns @CNavArea type count from/in all sides/directions.\n",
      "@name CNavArea:GetAdjacentCountAtSide",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetAdjacentCountAtSide",
      "@param {CNavArea} this - no description",
      "@param {NavDir} navDir - The direction, in which to look for @CNavArea types, see @NavDir enum.",
      "@returns {number} - The amount of @CNavArea types that have a connection ( one or two way ) **from** this @CNavArea type in given direction."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetAdjacentCountAtSide",
    "typings": [
      "(this: CNavArea, navDir: NavDir): number"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of @CNavArea types that have a connection ( one and two way ) **from** this @CNavArea type.\nSee @CNavArea:GetAdjacentCountAtSide for a function that only returns area count from one side/direction.\n",
      "@name CNavArea:GetAdjacentCount",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetAdjacentCount",
      "@param {CNavArea} this - no description",
      "@returns {number} - The amount of @CNavArea types that have a connection ( one and two way ) **from** this @CNavArea type."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetAdjacentCount",
    "typings": [
      "(this: CNavArea): number"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all the @CNavArea types that have a ( one and two way ) connection **from** this @CNavArea type in given direction.\nIf an area has a one-way incoming connection to this @CNavArea type, then it will **not** be returned from this function, use @CNavArea:GetIncomingConnections to get all incoming connections.\nSee @CNavArea:GetAdjacentAreas for a function that returns all areas from all sides/directions.\n",
      "@name CNavArea:GetAdjacentAreasAtSide",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetAdjacentAreasAtSide",
      "@param {CNavArea} this - no description",
      "@param {NavDir} navDir - The direction, in which to look for @CNavArea types, see @NavDir enum.",
      "@returns {CNavArea[]} - A table of all @CNavArea type that have a ( one and two way ) connection **from** this @CNavArea type in given direction.Returns an empty table if this area has no outgoing connections to any other areas in given direction."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetAdjacentAreasAtSide",
    "typings": [
      "(this: CNavArea, navDir: NavDir): CNavArea[]"
    ]
  },
  {
    "comments": [
      "\nReturns a table of all the @CNavArea types that have a  ( one and two way ) connection **from** this @CNavArea type.\nIf an area has a one-way incoming connection to this @CNavArea type, then it will **not** be returned from this function, use @CNavArea:GetIncomingConnections to get all one-way incoming connections.\nSee @CNavArea:GetAdjacentAreasAtSide for a function that only returns areas from one side/direction.\n",
      "@name CNavArea:GetAdjacentAreas",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/GetAdjacentAreas",
      "@param {CNavArea} this - no description",
      "@returns {CNavArea[]} - A table of all @CNavArea type that have a ( one and two way ) connection **from** this @CNavArea type. Returns an empty table if this area has no outgoing connections to any other areas."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "GetAdjacentAreas",
    "typings": [
      "(this: CNavArea): CNavArea[]"
    ]
  },
  {
    "comments": [
      "\nDraws the hiding spots on debug overlay. This includes sniper/exposed spots too!\n",
      "@name CNavArea:DrawSpots",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/DrawSpots",
      "@param {CNavArea} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "DrawSpots",
    "typings": [
      "(this: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nDraws this navarea on debug overlay.\n",
      "@name CNavArea:Draw",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/Draw",
      "@param {CNavArea} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "Draw",
    "typings": [
      "(this: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nDisconnects this nav area from given area or ladder. (Only disconnects one way)\n",
      "@name CNavArea:Disconnect",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/Disconnect",
      "@param {CNavArea} this - no description",
      "@param {CNavArea | CNavLadder} area - The @CNavArea type or @CNavLadder type this to disconnect from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "Disconnect",
    "typings": [
      "(this: CNavArea, area: CNavArea | CNavLadder): void"
    ]
  },
  {
    "comments": [
      "\nReturns true if this @CNavArea type contains the given vector.\n",
      "@name CNavArea:Contains",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/Contains",
      "@param {CNavArea} this - no description",
      "@param {Vector} pos - The position to test.",
      "@returns {boolean} - True if the vector was inside and false otherwise."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "Contains",
    "typings": [
      "(this: CNavArea, pos: Vector): boolean"
    ]
  },
  {
    "comments": [
      "\nConnects this @CNavArea type to another @CNavArea type or @CNavLadder type with a one way connection. ( From this area to the target )\nSee @CNavLadder:ConnectTo for making the connection from ladder to area.\n",
      "@name CNavArea:ConnectTo",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/ConnectTo",
      "@param {CNavArea} this - no description",
      "@param {CNavArea | CNavLadder} area - The @CNavArea type or @CNavLadder type this area leads to.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "ConnectTo",
    "typings": [
      "(this: CNavArea, area: CNavArea | CNavLadder): void"
    ]
  },
  {
    "comments": [
      "\nReturns the height difference on the Z axis of the two @CNavArea types. This is calculated from the center most point on both @CNavArea types.\n",
      "@name CNavArea:ComputeGroundHeightChange",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/ComputeGroundHeightChange",
      "@param {CNavArea} this - no description",
      "@param {CNavArea} navArea - The nav area to test against.",
      "@returns {number} - The ground height change."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "ComputeGroundHeightChange",
    "typings": [
      "(this: CNavArea, navArea: CNavArea): number"
    ]
  },
  {
    "comments": [
      "\nReturns the @NavDir enum direction that the given vector faces on this @CNavArea type.\n",
      "@name CNavArea:ComputeDirection",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/ComputeDirection",
      "@param {CNavArea} this - no description",
      "@param {Vector} pos - The position to compute direction towards.",
      "@returns {NavDir} - The direction the vector is in relation to this @CNavArea type. See @NavDir enum."
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "ComputeDirection",
    "typings": [
      "(this: CNavArea, pos: Vector): NavDir"
    ]
  },
  {
    "comments": [
      "\nReturns the height difference between the edges of two connected navareas.\n",
      "@name CNavArea:ComputeAdjacentConnectionHeightChange",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/ComputeAdjacentConnectionHeightChange",
      "@param {CNavArea} this - no description",
      "@param {CNavArea} navarea - no description",
      "@returns {number} - The height change"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "ComputeAdjacentConnectionHeightChange",
    "typings": [
      "(this: CNavArea, navarea: CNavArea): number"
    ]
  },
  {
    "comments": [
      "\nClears the open and closed lists for a new search.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:ClearSearchLists",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/ClearSearchLists",
      "@param {CNavArea} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "ClearSearchLists",
    "typings": [
      "(this: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nAdds this @CNavArea type to the Open List.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:AddToOpenList",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/AddToOpenList",
      "@param {CNavArea} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "AddToOpenList",
    "typings": [
      "(this: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nAdds this @CNavArea type to the closed list, a list of areas that have been checked by A* pathfinding algorithm.\nUsed in pathfinding via the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\nMore information can be found on the [Simple Pathfinding](https://wiki.garrysmod.com/page/Simple%20Pathfinding) page.\n",
      "@name CNavArea:AddToClosedList",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/AddToClosedList",
      "@param {CNavArea} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "AddToClosedList",
    "typings": [
      "(this: CNavArea): void"
    ]
  },
  {
    "comments": [
      "\nAdds a hiding spot onto this nav area.\nThere's a limit of 255 hiding spots per area.\n",
      "@name CNavArea:AddHidingSpot",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CNavArea/AddHidingSpot",
      "@param {CNavArea} this - no description",
      "@param {Vector} pos - The position on the nav area",
      "@param {number} flags - Flags describing what kind of hiding spot this is.\n* 0 = None (Not recommended)\n* 1 = In Cover/basically a hiding spot, in a corner with good hard cover nearby\n* 2 = good sniper spot, had at least one decent sniping corridor\n* 4 = perfect sniper spot, can see either very far, or a large area, or both\n* 8 = exposed, spot in the open, usually on a ledge or cliff\nValues over 255 will be clamped.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CNavArea",
    "name": "AddHidingSpot",
    "typings": [
      "(this: CNavArea, pos: Vector, flags?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the player's velocity\n",
      "@name CMoveData:SetVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetVelocity",
      "@param {CMoveData} this - no description",
      "@param {Vector} velocity - The velocity to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetVelocity",
    "typings": [
      "(this: CMoveData, velocity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets vertical speed of the player. ( Z axis of @CMoveData:SetVelocity )\n",
      "@name CMoveData:SetUpSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetUpSpeed",
      "@param {CMoveData} this - no description",
      "@param {number} speed - Vertical speed to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetUpSpeed",
    "typings": [
      "(this: CMoveData, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets players strafe speed.\n",
      "@name CMoveData:SetSideSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetSideSpeed",
      "@param {CMoveData} this - no description",
      "@param {number} speed - Strafe speed",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetSideSpeed",
    "typings": [
      "(this: CMoveData, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the players position.\n",
      "@name CMoveData:SetOrigin",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetOrigin",
      "@param {CMoveData} this - no description",
      "@param {Vector} pos - The position",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetOrigin",
    "typings": [
      "(this: CMoveData, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the 'old' pressed buttons on the move data. These buttons are used to work out which buttons have been released, which have just been pressed and which are being held down.\n",
      "@name CMoveData:SetOldButtons",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetOldButtons",
      "@param {CMoveData} this - no description",
      "@param {IN} buttons - A number representing which buttons were down, see @IN enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetOldButtons",
    "typings": [
      "(this: CMoveData, buttons: IN): void"
    ]
  },
  {
    "comments": [
      "\nSets old aim angles. ( ? ) Doesn't seem to be doing anything.\n",
      "@name CMoveData:SetOldAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetOldAngles",
      "@param {CMoveData} this - no description",
      "@param {Angle} aimAng - The old angles",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetOldAngles",
    "typings": [
      "(this: CMoveData, aimAng: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the serverside move angles, making the movement keys act as if player was facing that direction.\n",
      "@name CMoveData:SetMoveAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetMoveAngles",
      "@bug #1181 This does nothing clientside.",
      "@param {CMoveData} this - no description",
      "@param {Angle} dir - The aim direction.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetMoveAngles",
    "typings": [
      "(this: CMoveData, dir: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum speed of the player. This must match with @CMoveData:SetMaxClientSpeed both, on server and client.\nDoesn't seem to be doing anything on it's own, use @CMoveData:SetMaxClientSpeed instead.\n",
      "@name CMoveData:SetMaxSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetMaxSpeed",
      "@param {CMoveData} this - no description",
      "@param {number} maxSpeed - The new maximum speed",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetMaxSpeed",
    "typings": [
      "(this: CMoveData, maxSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the maximum player speed. Player won't be able to run or sprint faster then this value.\nThis also automatically sets @CMoveData:SetMaxSpeed when used in the @GamemodeHooks:SetupMove hook. You must set it manually in the @GamemodeHooks:Move hook.\nThis must be called on both client and server to avoid prediction errors.\nThis will **not** reduce speed in air.\n",
      "@name CMoveData:SetMaxClientSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetMaxClientSpeed",
      "@note Setting this to 0 will not make the player stationary. It won't do anything.",
      "@param {CMoveData} this - no description",
      "@param {number} maxSpeed - The new maximum speed",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetMaxClientSpeed",
    "typings": [
      "(this: CMoveData, maxSpeed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the impulse command. This isn't actually utilised in the engine anywhere.\n",
      "@name CMoveData:SetImpulseCommand",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetImpulseCommand",
      "@param {CMoveData} this - no description",
      "@param {number} impulse - The impulse to set",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetImpulseCommand",
    "typings": [
      "(this: CMoveData, impulse: number): void"
    ]
  },
  {
    "comments": [
      "\nSets players forward speed.\n",
      "@name CMoveData:SetForwardSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetForwardSpeed",
      "@param {CMoveData} this - no description",
      "@param {number} speed - New forward speed",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetForwardSpeed",
    "typings": [
      "(this: CMoveData, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the radius that constrains the players movement.\nIt is unknown what this function does as changing its values doesn't affect player movement.\n",
      "@name CMoveData:SetConstraintRadius",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetConstraintRadius",
      "@param {CMoveData} this - no description",
      "@param {number} radius - The new constraint radius",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetConstraintRadius",
    "typings": [
      "(this: CMoveData, radius: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the pressed buttons on the move data\n",
      "@name CMoveData:SetButtons",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetButtons",
      "@param {CMoveData} this - no description",
      "@param {IN} buttons - A number representing which buttons are down, see @IN enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetButtons",
    "typings": [
      "(this: CMoveData, buttons: IN): void"
    ]
  },
  {
    "comments": [
      "\nSets absolute move angles.( ? ) Doesn't seem to do anything.\n",
      "@name CMoveData:SetAbsMoveAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetAbsMoveAngles",
      "@param {CMoveData} this - no description",
      "@param {Angle} ang - New absolute move angles",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetAbsMoveAngles",
    "typings": [
      "(this: CMoveData, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets angles.\n",
      "@name CMoveData:SetAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/SetAngles",
      "@bug #2382 This function does nothing.",
      "@param {CMoveData} this - no description",
      "@param {Angle} ang - The angles.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "SetAngles",
    "typings": [
      "(this: CMoveData, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether the key was down or not.\nUnlike @CMoveData:KeyDown, it will return false if @CMoveData:KeyPressed is true and it will return true if @CMoveData:KeyReleased is true.\n",
      "@name CMoveData:KeyWasDown",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/KeyWasDown",
      "@param {CMoveData} this - no description",
      "@param {IN} key - The key to test, seee @IN enum",
      "@returns {boolean} - Was the key down or not"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "KeyWasDown",
    "typings": [
      "(this: CMoveData, key: IN): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the key was released\n",
      "@name CMoveData:KeyReleased",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/KeyReleased",
      "@param {CMoveData} this - no description",
      "@param {IN} key - A key to test, see @IN enum",
      "@returns {boolean} - Was the key released or not."
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "KeyReleased",
    "typings": [
      "(this: CMoveData, key: IN): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the key was pressed. If you want to check if the key is held down, try @CMoveData:KeyDown\n",
      "@name CMoveData:KeyPressed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/KeyPressed",
      "@param {CMoveData} this - no description",
      "@param {IN} key - The key to test, see @IN enum",
      "@returns {boolean} - Was the key pressed or not."
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "KeyPressed",
    "typings": [
      "(this: CMoveData, key: IN): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the key is down or not\n",
      "@name CMoveData:KeyDown",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/KeyDown",
      "@param {CMoveData} this - no description",
      "@param {IN} key - The key to test, see @IN enum",
      "@returns {boolean} - Is the key down or not"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "KeyDown",
    "typings": [
      "(this: CMoveData, key: IN): boolean"
    ]
  },
  {
    "comments": [
      "\nGets the players velocity.\n",
      "@name CMoveData:GetVelocity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetVelocity",
      "@bug #3413 This will return Vector(0,0,0) sometimes when walking on props.",
      "@param {CMoveData} this - no description",
      "@returns {Vector} - The players velocity"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetVelocity",
    "typings": [
      "(this: CMoveData): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the vertical speed of the player. ( Z axis of @CMoveData:GetVelocity )\n",
      "@name CMoveData:GetUpSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetUpSpeed",
      "@param {CMoveData} this - no description",
      "@returns {number} - Vertical speed"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetUpSpeed",
    "typings": [
      "(this: CMoveData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the strafe speed of the player.\n",
      "@name CMoveData:GetSideSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetSideSpeed",
      "@param {CMoveData} this - no description",
      "@returns {number} - speed"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetSideSpeed",
    "typings": [
      "(this: CMoveData): number"
    ]
  },
  {
    "comments": [
      "\nGets the player's position.\n",
      "@name CMoveData:GetOrigin",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetOrigin",
      "@param {CMoveData} this - no description",
      "@returns {Vector} - The player's position."
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetOrigin",
    "typings": [
      "(this: CMoveData): Vector"
    ]
  },
  {
    "comments": [
      "\nGet which buttons were down last frame\n",
      "@name CMoveData:GetOldButtons",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetOldButtons",
      "@param {CMoveData} this - no description",
      "@returns {IN} - An integer representing which buttons were down, see @IN enum"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetOldButtons",
    "typings": [
      "(this: CMoveData): IN"
    ]
  },
  {
    "comments": [
      "\nGets the aim angle. Only works clientside, server returns same as @CMoveData:GetAngles.\n",
      "@name CMoveData:GetOldAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetOldAngles",
      "@param {CMoveData} this - no description",
      "@returns {Angle} - The aim angle"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetOldAngles",
    "typings": [
      "(this: CMoveData): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the angle the player is moving at. For more info, see @CMoveData:SetMoveAngles.\n",
      "@name CMoveData:GetMoveAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetMoveAngles",
      "@param {CMoveData} this - no description",
      "@returns {Angle} - The move direction"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetMoveAngles",
    "typings": [
      "(this: CMoveData): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum speed of the player.\n",
      "@name CMoveData:GetMaxSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetMaxSpeed",
      "@param {CMoveData} this - no description",
      "@returns {number} - The maximum speed"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetMaxSpeed",
    "typings": [
      "(this: CMoveData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the maximum client speed of the player\n",
      "@name CMoveData:GetMaxClientSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetMaxClientSpeed",
      "@param {CMoveData} this - no description",
      "@returns {number} - The maximum client speed"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetMaxClientSpeed",
    "typings": [
      "(this: CMoveData): number"
    ]
  },
  {
    "comments": [
      "\nGets the number passed to \"impulse\" console command\n",
      "@name CMoveData:GetImpulseCommand",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetImpulseCommand",
      "@param {CMoveData} this - no description",
      "@returns {number} - The impulse"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetImpulseCommand",
    "typings": [
      "(this: CMoveData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the players forward speed.\n",
      "@name CMoveData:GetForwardSpeed",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetForwardSpeed",
      "@param {CMoveData} this - no description",
      "@returns {number} - speed"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetForwardSpeed",
    "typings": [
      "(this: CMoveData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the radius that constrains the players movement.\n",
      "@name CMoveData:GetConstraintRadius",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetConstraintRadius",
      "@param {CMoveData} this - no description",
      "@returns {number} - The constraint radius"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetConstraintRadius",
    "typings": [
      "(this: CMoveData): number"
    ]
  },
  {
    "comments": [
      "\nGets the aim angle. On client is the same as @EntityFuncs:GetAngles.\n",
      "@name CMoveData:GetAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetAngles",
      "@param {CMoveData} this - no description",
      "@returns {Angle} - Aiming angle"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetAngles",
    "typings": [
      "(this: CMoveData): Angle"
    ]
  },
  {
    "comments": [
      "\nGets the aim angle. Seems to be same as @CMoveData:GetAngles.\n",
      "@name CMoveData:GetAbsMoveAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetAbsMoveAngles",
      "@param {CMoveData} this - no description",
      "@returns {Angle} - Aiming angle"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetAbsMoveAngles",
    "typings": [
      "(this: CMoveData): Angle"
    ]
  },
  {
    "comments": [
      "\nAdds keys to the move data, as if player pressed them.\n",
      "@name CMoveData:AddKey",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/AddKey",
      "@param {CMoveData} this - no description",
      "@param {IN} keys - Keys to add, see @IN enum",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "AddKey",
    "typings": [
      "(this: CMoveData, keys: IN): void"
    ]
  },
  {
    "comments": [
      "\nScales the velocity based on the particle speed.\n",
      "@name CLuaParticle:SetVelocityScale",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetVelocityScale",
      "@param {CLuaParticle} this - no description",
      "@param {boolean} doScale - Use velocity scaling.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetVelocityScale",
    "typings": [
      "(this: CLuaParticle, doScale?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the velocity of the particle.\n",
      "@name CLuaParticle:SetVelocity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetVelocity",
      "@param {CLuaParticle} this - no description",
      "@param {Vector} vel - The new velocity of the particle.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetVelocity",
    "typings": [
      "(this: CLuaParticle, vel: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the think function of the particle.\n",
      "@name CLuaParticle:SetThinkFunction",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetThinkFunction",
      "@param {CLuaParticle} this - no description",
      "@param {function} thinkFunc - Think function. It has only one argument:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetThinkFunction",
    "typings": [
      "(this: CLuaParticle, thinkFunc: CLuaParticleSetThinkFunctionFunc): void"
    ],
    "types": [
      {
        "comments": [
          "@type CLuaParticleSetThinkFunctionFunc",
          "@param {void} this - no description",
          "@param {CLuaParticle} particle - The particle the think hook is set on"
        ],
        "type": "type",
        "name": "CLuaParticleSetThinkFunctionFunc",
        "typing": "(this: void, particle: CLuaParticle) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nSets the initial size value of the particle.\n",
      "@name CLuaParticle:SetStartSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetStartSize",
      "@param {CLuaParticle} this - no description",
      "@param {number} startSize - Initial size.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetStartSize",
    "typings": [
      "(this: CLuaParticle, startSize: number): void"
    ]
  },
  {
    "comments": [
      "\nGets which buttons are down\n",
      "@name CMoveData:GetButtons",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CMoveData/GetButtons",
      "@param {CMoveData} this - no description",
      "@returns {IN} - An integer representing which buttons are down, see @IN enum"
    ],
    "type": "class",
    "context": "CMoveData",
    "name": "GetButtons",
    "typings": [
      "(this: CMoveData): IN"
    ]
  },
  {
    "comments": [
      "\nSets the initial alpha value of the particle.\n",
      "@name CLuaParticle:SetStartAlpha",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetStartAlpha",
      "@param {CLuaParticle} this - no description",
      "@param {number} startAlpha - Initial alpha.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetStartAlpha",
    "typings": [
      "(this: CLuaParticle, startAlpha: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the initial length value of the particle.\n",
      "@name CLuaParticle:SetStartLength",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetStartLength",
      "@param {CLuaParticle} this - no description",
      "@param {number} startLength - Initial length.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetStartLength",
    "typings": [
      "(this: CLuaParticle, startLength: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the rotation speed of the particle in radians. This should only be used for 2D particles.\n",
      "@name CLuaParticle:SetRollDelta",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetRollDelta",
      "@param {CLuaParticle} this - no description",
      "@param {number} rollDelta - The new rotation speed of the particle in radians.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetRollDelta",
    "typings": [
      "(this: CLuaParticle, rollDelta: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the roll of the particle in radians. This should only be used for 2D particles.\n",
      "@name CLuaParticle:SetRoll",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetRoll",
      "@param {CLuaParticle} this - no description",
      "@param {number} roll - The new rotation of the particle in radians.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetRoll",
    "typings": [
      "(this: CLuaParticle, roll: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the absolute position of the particle.\n",
      "@name CLuaParticle:SetPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetPos",
      "@param {CLuaParticle} this - no description",
      "@param {Vector} pos - The new particle position.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetPos",
    "typings": [
      "(this: CLuaParticle, pos: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets when the particles think function should be called next, this uses the synchronized server time returned by @CurTime function.\n",
      "@name CLuaParticle:SetNextThink",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetNextThink",
      "@param {CLuaParticle} this - no description",
      "@param {number} nextThink - Next think time.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetNextThink",
    "typings": [
      "(this: CLuaParticle, nextThink: number): void"
    ]
  },
  {
    "comments": [
      "\nSets whether the particle should be lighted.\n",
      "@name CLuaParticle:SetLighting",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetLighting",
      "@param {CLuaParticle} this - no description",
      "@param {boolean} useLighting - Whether the particle should be lighted.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetLighting",
    "typings": [
      "(this: CLuaParticle, useLighting: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the 'life time' of the particle, how long the particle existed since its creation.\nThis value should always be between 0 and @CLuaParticle:GetDieTime.\nIt changes automatically as time goes.\nIf the life time of the particle will be more than @CLuaParticle:GetDieTime, it will be removed.\n",
      "@name CLuaParticle:SetLifeTime",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetLifeTime",
      "@param {CLuaParticle} this - no description",
      "@param {number} lifeTime - The new life time of the particle.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetLifeTime",
    "typings": [
      "(this: CLuaParticle, lifeTime: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the directional gravity aka. acceleration of the particle.\n",
      "@name CLuaParticle:SetGravity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetGravity",
      "@param {CLuaParticle} this - no description",
      "@param {Vector} gravity - The directional gravity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetGravity",
    "typings": [
      "(this: CLuaParticle, gravity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the size of the particle that it will reach when it dies.\n",
      "@name CLuaParticle:SetEndSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetEndSize",
      "@param {CLuaParticle} this - no description",
      "@param {number} endSize - The new size of the particle that it will reach when it dies.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetEndSize",
    "typings": [
      "(this: CLuaParticle, endSize: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the length of the particle that it will reach when it dies.\n",
      "@name CLuaParticle:SetEndLength",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetEndLength",
      "@param {CLuaParticle} this - no description",
      "@param {number} endLength - The new length of the particle that it will reach when it dies.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetEndLength",
    "typings": [
      "(this: CLuaParticle, endLength: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the alpha value of the particle that it will reach when it dies.\n",
      "@name CLuaParticle:SetEndAlpha",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetEndAlpha",
      "@param {CLuaParticle} this - no description",
      "@param {number} endAlpha - The new alpha value of the particle that it will reach when it dies.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetEndAlpha",
    "typings": [
      "(this: CLuaParticle, endAlpha: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the time where the particle will be removed.\n",
      "@name CLuaParticle:SetDieTime",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetDieTime",
      "@param {CLuaParticle} this - no description",
      "@param {number} dieTime - The new die time.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetDieTime",
    "typings": [
      "(this: CLuaParticle, dieTime: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the particle.\n",
      "@name CLuaParticle:SetColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetColor",
      "@param {CLuaParticle} this - no description",
      "@param {number} r - The red component.",
      "@param {number} g - The green component.",
      "@param {number} b - The blue component.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetColor",
    "typings": [
      "(this: CLuaParticle, r: number, g: number, b: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the function that gets called whenever the particle collides with the world.\n",
      "@name CLuaParticle:SetCollideCallback",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetCollideCallback",
      "@param {CLuaParticle} this - no description",
      "@param {function} collideFunc - Collide callback, the arguments are:",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetCollideCallback",
    "typings": [
      "(this: CLuaParticle, collideFunc: CLuaParticleSetCollideCallbackFunc): void"
    ],
    "types": [
      {
        "comments": [
          "@type CLuaParticleSetCollideCallbackFunc",
          "@param {void} this - no description",
          "@param {CLuaParticle} particle - The particle itself",
          "@param {Vector} hitPos - Position of the collision",
          "@param {Vector} hitNormal - Direction of the collision, perpendicular to the hit surface"
        ],
        "type": "type",
        "name": "CLuaParticleSetCollideCallbackFunc",
        "typing": "(this: void, particle: CLuaParticle, hitPos: Vector, hitNormal: Vector) => unknown"
      }
    ]
  },
  {
    "comments": [
      "\nSets the whether the particle should collide with the world or not.\n",
      "@name CLuaParticle:SetCollide",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetCollide",
      "@param {CLuaParticle} this - no description",
      "@param {boolean} shouldCollide - Whether the particle should collide with the world or not",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetCollide",
    "typings": [
      "(this: CLuaParticle, shouldCollide: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSets the 'bounciness' of the the particle.\n",
      "@name CLuaParticle:SetBounce",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetBounce",
      "@param {CLuaParticle} this - no description",
      "@param {number} bounce - New 'bounciness' of the particle\n2 means it will gain 100% of its previous velocity,\n1 means it will not lose velocity,\n0.5 means it will lose half of its velocity with each bounce.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetBounce",
    "typings": [
      "(this: CLuaParticle, bounce: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the angular velocity of the the particle.\n",
      "@name CLuaParticle:SetAngleVelocity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetAngleVelocity",
      "@param {CLuaParticle} this - no description",
      "@param {Angle} angVel - New angular velocity.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetAngleVelocity",
    "typings": [
      "(this: CLuaParticle, angVel: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the angles of the particle.\n",
      "@name CLuaParticle:SetAngles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetAngles",
      "@param {CLuaParticle} this - no description",
      "@param {Angle} ang - New angle.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetAngles",
    "typings": [
      "(this: CLuaParticle, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nSets the air resistance of the the particle.\n",
      "@name CLuaParticle:SetAirResistance",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/SetAirResistance",
      "@param {CLuaParticle} this - no description",
      "@param {number} airResistance - New air resistance.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "SetAirResistance",
    "typings": [
      "(this: CLuaParticle, airResistance: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the current velocity of the particle.\n",
      "@name CLuaParticle:GetVelocity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetVelocity",
      "@param {CLuaParticle} this - no description",
      "@returns {Vector} - The current velocity of the particle."
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetVelocity",
    "typings": [
      "(this: CLuaParticle): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the size which the particle has when it's created.\n",
      "@name CLuaParticle:GetStartSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetStartSize",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The size which the particle has when it's created."
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetStartSize",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the length which the particle has when it's created.\n",
      "@name CLuaParticle:GetStartLength",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetStartLength",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The length which the particle has when it's created."
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetStartLength",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the alpha value which the particle has when it's created.\n",
      "@name CLuaParticle:GetStartAlpha",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetStartAlpha",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The alpha value which the particle has when it's created."
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetStartAlpha",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the current rotation speed of the particle in radians, this should only be used for 2D particles.\n",
      "@name CLuaParticle:GetRollDelta",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetRollDelta",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The current rotation speed of the particle in radians"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetRollDelta",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the current rotation of the particle in radians, this should only be used for 2D particles.\n",
      "@name CLuaParticle:GetRoll",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetRoll",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The current rotation of the particle in radians"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetRoll",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the absolute position of the particle.\n",
      "@name CLuaParticle:GetPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetPos",
      "@param {CLuaParticle} this - no description",
      "@returns {Vector} - The absolute position of the particle."
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetPos",
    "typings": [
      "(this: CLuaParticle): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the 'life time' of the particle, how long the particle existed since its creation.\nThis value will always be between 0 and @CLuaParticle:GetDieTime.\nIt changes automatically as time goes.\nIt can be manipulated using @CLuaParticle:SetLifeTime.\nIf the life time of the particle will be more than @CLuaParticle:GetDieTime, it will be removed.\n",
      "@name CLuaParticle:GetLifeTime",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetLifeTime",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - How long the particle existed, in seconds."
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetLifeTime",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the gravity of the particle.\n",
      "@name CLuaParticle:GetGravity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetGravity",
      "@param {CLuaParticle} this - no description",
      "@returns {Vector} - The gravity of the particle."
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetGravity",
    "typings": [
      "(this: CLuaParticle): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the size that the particle will reach on its death.\n",
      "@name CLuaParticle:GetEndSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetEndSize",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The size the particle will reach"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetEndSize",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the alpha value that the particle will reach on its death.\n",
      "@name CLuaParticle:GetEndAlpha",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetEndAlpha",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The alpha value the particle will fade to"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetEndAlpha",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the color of the particle.\n",
      "@name CLuaParticle:GetColor",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetColor",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - Red part of the color",
      "@returns {number} - Green part of the color",
      "@returns {number} - Blue part of the color",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetColor",
    "typings": [
      "(this: CLuaParticle): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of time in seconds after which the particle will be destroyed.\n",
      "@name CLuaParticle:GetDieTime",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetDieTime",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The amount of time in seconds after which the particle will be destroyed"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetDieTime",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the length that the particle will reach on its death.\n",
      "@name CLuaParticle:GetEndLength",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetEndLength",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The length the particle will reach"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetEndLength",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the 'bounciness' of the particle.\n",
      "@name CLuaParticle:GetBounce",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetBounce",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The 'bounciness' of the particle\n2 means it will gain 100% of its previous velocity,\n1 means it will not lose velocity,\n0.5 means it will lose half of its velocity with each bounce."
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetBounce",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nReturns the angular velocity of the particle\n",
      "@name CLuaParticle:GetAngleVelocity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetAngleVelocity",
      "@param {CLuaParticle} this - no description",
      "@returns {Angle} - The angular velocity of the particle"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetAngleVelocity",
    "typings": [
      "(this: CLuaParticle): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the current orientation of the particle.\n",
      "@name CLuaParticle:GetAngles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetAngles",
      "@param {CLuaParticle} this - no description",
      "@returns {Angle} - The angles of the particle"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetAngles",
    "typings": [
      "(this: CLuaParticle): Angle"
    ]
  },
  {
    "comments": [
      "\nReturns the air resistance of the particle.\n",
      "@name CLuaParticle:GetAirResistance",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaParticle/GetAirResistance",
      "@param {CLuaParticle} this - no description",
      "@returns {number} - The air resistance of the particle"
    ],
    "type": "class",
    "context": "CLuaParticle",
    "name": "GetAirResistance",
    "typings": [
      "(this: CLuaParticle): number"
    ]
  },
  {
    "comments": [
      "\nSets the current movement velocity\n",
      "@name CLuaLocomotion:SetVelocity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/SetVelocity",
      "@param {CLuaLocomotion} this - no description",
      "@param {Vector} velocity - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "SetVelocity",
    "typings": [
      "(this: CLuaLocomotion, velocity: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the max height the bot can step up\n",
      "@name CLuaLocomotion:SetStepHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/SetStepHeight",
      "@param {CLuaLocomotion} this - no description",
      "@param {number} height - Height (default is 18)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "SetStepHeight",
    "typings": [
      "(this: CLuaLocomotion, height: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the max rate at which the NextBot can visually rotate. This will not affect moving or pathing.\n",
      "@name CLuaLocomotion:SetMaxYawRate",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/SetMaxYawRate",
      "@param {CLuaLocomotion} this - no description",
      "@param {number} yawRate - Desired new maximum yaw rate",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "SetMaxYawRate",
    "typings": [
      "(this: CLuaLocomotion, yawRate: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the height of the bot's jump\n",
      "@name CLuaLocomotion:SetJumpHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/SetJumpHeight",
      "@param {CLuaLocomotion} this - no description",
      "@param {number} height - Height (default is 58)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "SetJumpHeight",
    "typings": [
      "(this: CLuaLocomotion, height: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the locomotion's gravity.\n",
      "@name CLuaLocomotion:SetGravity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/SetGravity",
      "@note With values 0 or below, or even lower positive values, the nextbot will start to drift sideways, use @CLuaLocomotion:SetVelocity to counteract this.",
      "@param {CLuaLocomotion} this - no description",
      "@param {number} gravity - New gravity to set. Default is 1000.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "SetGravity",
    "typings": [
      "(this: CLuaLocomotion, gravity: number): void"
    ]
  },
  {
    "comments": [
      "\nSets movement speed.\n",
      "@name CLuaLocomotion:SetDesiredSpeed",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/SetDesiredSpeed",
      "@param {CLuaLocomotion} this - no description",
      "@param {number} speed - The new desired speed",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "SetDesiredSpeed",
    "typings": [
      "(this: CLuaLocomotion, speed: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the deceleration speed.\n",
      "@name CLuaLocomotion:SetDeceleration",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/SetDeceleration",
      "@param {CLuaLocomotion} this - no description",
      "@param {number} deceleration - New deceleration speed (default is 400)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "SetDeceleration",
    "typings": [
      "(this: CLuaLocomotion, deceleration: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the height the bot is scared to fall from.\n",
      "@name CLuaLocomotion:SetDeathDropHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/SetDeathDropHeight",
      "@param {CLuaLocomotion} this - no description",
      "@param {number} height - Height (default is 200)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "SetDeathDropHeight",
    "typings": [
      "(this: CLuaLocomotion, height: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the acceleration speed\n",
      "@name CLuaLocomotion:SetAcceleration",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/SetAcceleration",
      "@param {CLuaLocomotion} this - no description",
      "@param {number} speed - Speed acceleration (default is 400)",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "SetAcceleration",
    "typings": [
      "(this: CLuaLocomotion, speed: number): void"
    ]
  },
  {
    "comments": [
      "@name CLuaLocomotion:JumpAcrossGap",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/JumpAcrossGap",
      "@param {CLuaLocomotion} this - no description",
      "@param {Vector} landingGoal - no description",
      "@param {Vector} landingForward - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "JumpAcrossGap",
    "typings": [
      "(this: CLuaLocomotion, landingGoal: Vector, landingForward: Vector): void"
    ]
  },
  {
    "comments": [
      "\nMakes the bot jump\n",
      "@name CLuaLocomotion:Jump",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/Jump",
      "@param {CLuaLocomotion} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "Jump",
    "typings": [
      "(this: CLuaLocomotion): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether or not the target in question is on a ladder or not.\n",
      "@name CLuaLocomotion:IsUsingLadder",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/IsUsingLadder",
      "@param {CLuaLocomotion} this - no description",
      "@returns {boolean} - If the target is on a ladder or not."
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "IsUsingLadder",
    "typings": [
      "(this: CLuaLocomotion): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if we're stuck\n",
      "@name CLuaLocomotion:IsStuck",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/IsStuck",
      "@param {CLuaLocomotion} this - no description",
      "@returns {boolean} - Whether we're stuck or not"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "IsStuck",
    "typings": [
      "(this: CLuaLocomotion): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether the nextbot this locomotion is attached to is on ground or not.\n",
      "@name CLuaLocomotion:IsOnGround",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/IsOnGround",
      "@param {CLuaLocomotion} this - no description",
      "@returns {boolean} - Whether the nextbot is on ground or not."
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "IsOnGround",
    "typings": [
      "(this: CLuaLocomotion): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true of the locomotion engine is jumping or climbing\n",
      "@name CLuaLocomotion:IsClimbingOrJumping",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/IsClimbingOrJumping",
      "@param {CLuaLocomotion} this - no description",
      "@returns {boolean} - Whether we're climbing or jumping or not"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "IsClimbingOrJumping",
    "typings": [
      "(this: CLuaLocomotion): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns true if we're trying to move.\n",
      "@name CLuaLocomotion:IsAttemptingToMove",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/IsAttemptingToMove",
      "@param {CLuaLocomotion} this - no description",
      "@returns {boolean} - Whether we're trying to move or not."
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "IsAttemptingToMove",
    "typings": [
      "(this: CLuaLocomotion): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this @CLuaLocomotion type can reach and/or traverse/move in given @CNavArea type.\n",
      "@name CLuaLocomotion:IsAreaTraversable",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/IsAreaTraversable",
      "@param {CLuaLocomotion} this - no description",
      "@param {CNavArea} area - The area to test",
      "@returns {boolean} - Whether this @CLuaLocomotion type can traverse given @CNavArea type."
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "IsAreaTraversable",
    "typings": [
      "(this: CLuaLocomotion, area: CNavArea): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the current movement velocity as a vector\n",
      "@name CLuaLocomotion:GetVelocity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetVelocity",
      "@param {CLuaLocomotion} this - no description",
      "@returns {Vector} - Current velocity"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetVelocity",
    "typings": [
      "(this: CLuaLocomotion): Vector"
    ]
  },
  {
    "comments": [
      "\nGets the max height the bot can step up\n",
      "@name CLuaLocomotion:GetStepHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetStepHeight",
      "@param {CLuaLocomotion} this - no description",
      "@returns {number} - Current step height"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetStepHeight",
    "typings": [
      "(this: CLuaLocomotion): number"
    ]
  },
  {
    "comments": [
      "\nReturns the @NextBot type this locomotion is associated with.\n",
      "@name CLuaLocomotion:GetNextBot",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetNextBot",
      "@param {CLuaLocomotion} this - no description",
      "@returns {NextBot} - The nextbot"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetNextBot",
    "typings": [
      "(this: CLuaLocomotion): NextBot"
    ]
  },
  {
    "comments": [
      "\nReturns the max rate at which the NextBot can visually rotate.\n",
      "@name CLuaLocomotion:GetMaxYawRate",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetMaxYawRate",
      "@param {CLuaLocomotion} this - no description",
      "@returns {number} - Maximum yaw rate"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetMaxYawRate",
    "typings": [
      "(this: CLuaLocomotion): number"
    ]
  },
  {
    "comments": [
      "\nReturns maximum jump height of this @CLuaLocomotion type.\n",
      "@name CLuaLocomotion:GetMaxJumpHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetMaxJumpHeight",
      "@param {CLuaLocomotion} this - no description",
      "@returns {number} - The maximum jump height."
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetMaxJumpHeight",
    "typings": [
      "(this: CLuaLocomotion): number"
    ]
  },
  {
    "comments": [
      "\nGets the height of the bot's jump\n",
      "@name CLuaLocomotion:GetJumpHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetJumpHeight",
      "@param {CLuaLocomotion} this - no description",
      "@returns {number} - Current jump height"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetJumpHeight",
    "typings": [
      "(this: CLuaLocomotion): number"
    ]
  },
  {
    "comments": [
      "\nReturn unit vector in XY plane describing our direction of motion - even if we are currently not moving\n",
      "@name CLuaLocomotion:GetGroundMotionVector",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetGroundMotionVector",
      "@param {CLuaLocomotion} this - no description",
      "@returns {Vector} - A vector representing the X and Y movement"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetGroundMotionVector",
    "typings": [
      "(this: CLuaLocomotion): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the locomotion's gravity.\n",
      "@name CLuaLocomotion:GetGravity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetGravity",
      "@param {CLuaLocomotion} this - no description",
      "@returns {number} - The gravity."
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetGravity",
    "typings": [
      "(this: CLuaLocomotion): number"
    ]
  },
  {
    "comments": [
      "\nGets the deceleration speed\n",
      "@name CLuaLocomotion:GetDeceleration",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetDeceleration",
      "@param {CLuaLocomotion} this - no description",
      "@returns {number} - Current deceleration speed"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetDeceleration",
    "typings": [
      "(this: CLuaLocomotion): number"
    ]
  },
  {
    "comments": [
      "\nGets the height the bot is scared to fall from\n",
      "@name CLuaLocomotion:GetDeathDropHeight",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetDeathDropHeight",
      "@param {CLuaLocomotion} this - no description",
      "@returns {number} - Current death drop height"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetDeathDropHeight",
    "typings": [
      "(this: CLuaLocomotion): number"
    ]
  },
  {
    "comments": [
      "\nReturns the current acceleration as a vector\n",
      "@name CLuaLocomotion:GetCurrentAcceleration",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetCurrentAcceleration",
      "@param {CLuaLocomotion} this - no description",
      "@returns {Vector} - Current acceleration"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetCurrentAcceleration",
    "typings": [
      "(this: CLuaLocomotion): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the acceleration speed\n",
      "@name CLuaLocomotion:GetAcceleration",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/GetAcceleration",
      "@param {CLuaLocomotion} this - no description",
      "@returns {number} - Current acceleration speed"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "GetAcceleration",
    "typings": [
      "(this: CLuaLocomotion): number"
    ]
  },
  {
    "comments": [
      "\nSets the direction we want to face\n",
      "@name CLuaLocomotion:FaceTowards",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/FaceTowards",
      "@param {CLuaLocomotion} this - no description",
      "@param {Vector} goal - The vector we want to face",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "FaceTowards",
    "typings": [
      "(this: CLuaLocomotion, goal: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the location we want to get to\n",
      "@name CLuaLocomotion:Approach",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/Approach",
      "@param {CLuaLocomotion} this - no description",
      "@param {Vector} goal - The vector we want to get to",
      "@param {number} goalweight - If unsure then set this to 1",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "Approach",
    "typings": [
      "(this: CLuaLocomotion, goal: Vector, goalweight: number): void"
    ]
  },
  {
    "comments": [
      "\nRemoves the stuck status from the bot\n",
      "@name CLuaLocomotion:ClearStuck",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CLuaLocomotion/ClearStuck",
      "@param {CLuaLocomotion} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaLocomotion",
    "name": "ClearStuck",
    "typings": [
      "(this: CLuaLocomotion): void"
    ]
  },
  {
    "comments": [
      "\nSets the position of the particle emitter.\n",
      "@name CLuaEmitter:SetPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/SetPos",
      "@param {CLuaEmitter} this - no description",
      "@param {Vector} position - New position.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "SetPos",
    "typings": [
      "(this: CLuaEmitter, position: Vector): void"
    ]
  },
  {
    "comments": [
      "\nThe function name has not much in common with its actual function, it applies a radius to every particles that affects the building of the bounding box, as it, usually is constructed by the particle that has the lowest x, y and z and the highest x, y and z, this function just adds/subtracts the radius and inflates the bounding box.\n",
      "@name CLuaEmitter:SetParticleCullRadius",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/SetParticleCullRadius",
      "@param {CLuaEmitter} this - no description",
      "@param {number} radius - Particle radius.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "SetParticleCullRadius",
    "typings": [
      "(this: CLuaEmitter, radius: number): void"
    ]
  },
  {
    "comments": [
      "\nPrevents all particles of the emitter from automatically drawing.\n",
      "@name CLuaEmitter:SetNoDraw",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/SetNoDraw",
      "@param {CLuaEmitter} this - no description",
      "@param {boolean} noDraw - Whether we should draw the particles ( false ) or not ( true )",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "SetNoDraw",
    "typings": [
      "(this: CLuaEmitter, noDraw: boolean): void"
    ]
  },
  {
    "comments": [
      "\nThis function sets the the distance between the render camera and the emitter at which the particles should start fading and at which distance fade ends ( alpha becomes 0 ).\n",
      "@name CLuaEmitter:SetNearClip",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/SetNearClip",
      "@param {CLuaEmitter} this - no description",
      "@param {number} distanceMin - Min distance where the alpha becomes 0.",
      "@param {number} distanceMax - Max distance where the alpha starts fading.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "SetNearClip",
    "typings": [
      "(this: CLuaEmitter, distanceMin: number, distanceMax: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the bounding box for this emitter.\nUsually the bounding box is automatically determined by the particles, but this function overrides it.\n",
      "@name CLuaEmitter:SetBBox",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/SetBBox",
      "@param {CLuaEmitter} this - no description",
      "@param {Vector} mins - The minimum position of the box",
      "@param {Vector} maxs - The maximum position of the box",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "SetBBox",
    "typings": [
      "(this: CLuaEmitter, mins: Vector, maxs: Vector): void"
    ]
  },
  {
    "comments": [
      "\nReturns whether this @CLuaEmitter type is valid or not.\n",
      "@name CLuaEmitter:IsValid",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/IsValid",
      "@param {CLuaEmitter} this - no description",
      "@returns {boolean} - Whether this @CLuaEmitter type is valid or not."
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "IsValid",
    "typings": [
      "(this: CLuaEmitter): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns whether this emitter is 3D or not. This is set when creating the emitter with @ParticleEmitter function.\n",
      "@name CLuaEmitter:Is3D",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/Is3D",
      "@param {CLuaEmitter} this - no description",
      "@returns {boolean} - Whether this emitter is 3D or not."
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "Is3D",
    "typings": [
      "(this: CLuaEmitter): boolean"
    ]
  },
  {
    "comments": [
      "\nReturns the position of this emitter. This is set when creating the emitter with @ParticleEmitter function.\n",
      "@name CLuaEmitter:GetPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/GetPos",
      "@param {CLuaEmitter} this - no description",
      "@returns {Vector} - Position of this particle emitter."
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "GetPos",
    "typings": [
      "(this: CLuaEmitter): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of active particles of this emitter.\n",
      "@name CLuaEmitter:GetNumActiveParticles",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/GetNumActiveParticles",
      "@param {CLuaEmitter} this - no description",
      "@returns {number} - The amount of active particles of this emitter"
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "GetNumActiveParticles",
    "typings": [
      "(this: CLuaEmitter): number"
    ]
  },
  {
    "comments": [
      "\nRemoves the emitter and all its particles.\n",
      "@name CLuaEmitter:Finish",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/Finish",
      "@param {CLuaEmitter} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "Finish",
    "typings": [
      "(this: CLuaEmitter): void"
    ]
  },
  {
    "comments": [
      "\nManually renders all particles the emitter has created.\n",
      "@name CLuaEmitter:Draw",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/Draw",
      "@param {CLuaEmitter} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "Draw",
    "typings": [
      "(this: CLuaEmitter): void"
    ]
  },
  {
    "comments": [
      "\nCreates a new @CLuaParticle type with the given material and position.\n",
      "@name CLuaEmitter:Add",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/CLuaEmitter/Add",
      "@param {CLuaEmitter} this - no description",
      "@param {string} material - The particles material. Can also be an @IMaterial type.",
      "@param {Vector} position - The position to spawn the particle on.",
      "@returns {CLuaParticle} - The created particle, if any."
    ],
    "type": "class",
    "context": "CLuaEmitter",
    "name": "Add",
    "typings": [
      "(this: CLuaEmitter, material: string, position: Vector): CLuaParticle"
    ]
  },
  {
    "comments": [
      "\nRepopulates the clients cleanup menu\n",
      "@name cleanup.UpdateUI",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cleanup/UpdateUI",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cleanup",
    "name": "UpdateUI",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReplaces one entity in the cleanup module with another\n",
      "@name cleanup.ReplaceEntity",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/cleanup/ReplaceEntity",
      "@param {void} this - no description",
      "@param {Entity} from - Old entity",
      "@param {Entity} to - New entity",
      "@returns {boolean} - Whether any action was taken."
    ],
    "type": "func",
    "context": "cleanup",
    "name": "ReplaceEntity",
    "typings": [
      "(this: void, from: Entity, to: Entity): boolean"
    ]
  },
  {
    "comments": [
      "\nRegisters a new cleanup type.\n",
      "@name cleanup.Register",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/cleanup/Register",
      "@param {void} this - no description",
      "@param {string} type - Name of type.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cleanup",
    "name": "Register",
    "typings": [
      "(this: void, type: string): void"
    ]
  },
  {
    "comments": [
      "\nGets the table of cleanup types.\n",
      "@name cleanup.GetTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/cleanup/GetTable",
      "@param {void} this - no description",
      "@returns {table} - cleanup_types"
    ],
    "type": "func",
    "context": "cleanup",
    "name": "GetTable",
    "typings": [
      "(this: void): table"
    ]
  },
  {
    "comments": [
      "\nGets the cleanup list.\n",
      "@name cleanup.GetList",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/cleanup/GetList",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cleanup",
    "name": "GetList",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nCalled by the *gmod_cleanup* console command. Allows players to cleanup their own props.\n",
      "@name cleanup.CC_Cleanup",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/cleanup/CC Cleanup",
      "@internal",
      "@param {void} this - no description",
      "@param {Player} pl - The player that called the console command.",
      "@param {string} command - The console command that called this function.",
      "@param {table} args - First and only arg is the cleanup type.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cleanup",
    "name": "CC_Cleanup",
    "typings": [
      "(this: void, pl: Player, command: string, args: table): void"
    ]
  },
  {
    "comments": [
      "\nAdds an entity to a player's cleanup list.\n",
      "@name cleanup.Add",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/cleanup/Add",
      "@param {void} this - no description",
      "@param {Player} pl - Who's cleanup list to add the entity to.",
      "@param {string} type - The type of cleanup.",
      "@param {Entity} ent - The entity to add to the player's cleanup list.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cleanup",
    "name": "Add",
    "typings": [
      "(this: void, pl: Player, type: string, ent: Entity): void"
    ]
  },
  {
    "comments": [
      "\nCalled by the *gmod_admin_cleanup* console command. Allows admins to clean up the server.\n",
      "@name cleanup.CC_AdminCleanup",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/cleanup/CC AdminCleanup",
      "@internal",
      "@param {void} this - no description",
      "@param {Player} pl - The player that called the console command.",
      "@param {string} command - The console command that called this function.",
      "@param {table} args - First and only arg is the cleanup type.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cleanup",
    "name": "CC_AdminCleanup",
    "typings": [
      "(this: void, pl: Player, command: string, args: table): void"
    ]
  },
  {
    "comments": [
      "\nPlays the chat \"tick\" sound.\n",
      "@name chat.PlaySound",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/chat/PlaySound",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "chat",
    "name": "PlaySound",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nOpens the chat window.\n",
      "@name chat.Open",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/chat/Open",
      "@param {void} this - no description",
      "@param {number} mode - If equals 1, opens public chat, otherwise opens team chat",
      "@returns {void}"
    ],
    "type": "func",
    "context": "chat",
    "name": "Open",
    "typings": [
      "(this: void, mode: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the chatbox size.\n",
      "@name chat.GetChatBoxSize",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/chat/GetChatBoxSize",
      "@param {void} this - no description",
      "@returns {number} - The width of the chatbox.",
      "@returns {number} - The height of the chatbox.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "chat",
    "name": "GetChatBoxSize",
    "typings": [
      "(this: void): [number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the chatbox position.\n",
      "@name chat.GetChatBoxPos",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/chat/GetChatBoxPos",
      "@param {void} this - no description",
      "@returns {number} - The X coordinate of the chatbox's position.",
      "@returns {number} - The Y coordinate of the chatbox's position.",
      "@tupleReturn"
    ],
    "type": "func",
    "context": "chat",
    "name": "GetChatBoxPos",
    "typings": [
      "(this: void): [number, number]"
    ]
  },
  {
    "comments": [
      "\nAdds text to the local player's chat box (which only they can read).\n",
      "@name chat.AddText",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/chat/AddText",
      "@param {void} this - no description",
      "@param {table | string | Player | any | Entity} ...arguments - The arguments. Arguments can be:\n* @table type - @IColor structure. Will set the color for all following strings until the next Color argument.\n* @string type - Text to be added to the chat box.\n* @Player type - Adds the name of the player in the player's team color to the chat box.\n* @any type - Any other type, such as @Entity type will be converted to string and added as text.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "chat",
    "name": "AddText",
    "typings": [
      "(this: void, ...arguments: table | string | Player | any | Entity): void"
    ]
  },
  {
    "comments": [
      "\nCloses the chat window.\n",
      "@name chat.Close",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/chat/Close",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "chat",
    "name": "Close",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets the surface property index of the effect.\n",
      "@name CEffectData:SetSurfaceProp",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetSurfaceProp",
      "@param {CEffectData} this - no description",
      "@param {number} surfaceProperties - The surface property index of the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetSurfaceProp",
    "typings": [
      "(this: CEffectData, surfaceProperties: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the start of the effect to be created with this effect data.\n",
      "@name CEffectData:SetStart",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetStart",
      "@param {CEffectData} this - no description",
      "@param {Vector} start - Start of the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetStart",
    "typings": [
      "(this: CEffectData, start: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the scale of the effect to be created with this effect data.\n",
      "@name CEffectData:SetScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetScale",
      "@param {CEffectData} this - no description",
      "@param {number} scale - Scale of the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetScale",
    "typings": [
      "(this: CEffectData, scale: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the radius of the effect to be created with this effect data.\n",
      "@name CEffectData:SetRadius",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetRadius",
      "@note This is clamped internally from 0 to 1023.",
      "@param {CEffectData} this - no description",
      "@param {number} radius - Radius of the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetRadius",
    "typings": [
      "(this: CEffectData, radius: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the origin of the effect to be created with this effect data.\n",
      "@name CEffectData:SetOrigin",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetOrigin",
      "@param {CEffectData} this - no description",
      "@param {Vector} origin - Origin of the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetOrigin",
    "typings": [
      "(this: CEffectData, origin: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the normalized direction vector of the effect to be created with this effect data.\n",
      "@name CEffectData:SetNormal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetNormal",
      "@param {CEffectData} this - no description",
      "@param {Vector} normal - The normalized direction vector of the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetNormal",
    "typings": [
      "(this: CEffectData, normal: Vector): void"
    ]
  },
  {
    "comments": [
      "\nSets the material index of the effect.\n",
      "@name CEffectData:SetMaterialIndex",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetMaterialIndex",
      "@note This is internally stored as an integer, but only the first 11 bits will be networked.",
      "@param {CEffectData} this - no description",
      "@param {number} materialIndex - The material index of the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetMaterialIndex",
    "typings": [
      "(this: CEffectData, materialIndex: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the magnitude of the effect.\n",
      "@name CEffectData:SetMagnitude",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetMagnitude",
      "@param {CEffectData} this - no description",
      "@param {number} magnitude - The magnitude of the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetMagnitude",
    "typings": [
      "(this: CEffectData, magnitude: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the flags of the effect.\n",
      "@name CEffectData:SetFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetFlags",
      "@note This is internally stored as an integer, but only the first 8 bits will be networked.",
      "@param {CEffectData} this - no description",
      "@param {number} flags - The flags of the effect. Each effect has their own flags.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetFlags",
    "typings": [
      "(this: CEffectData, flags: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the entity of the effect via its index.\n",
      "@name CEffectData:SetEntIndex",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetEntIndex",
      "@param {CEffectData} this - no description",
      "@param {number} entIndex - The entity index to be set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetEntIndex",
    "typings": [
      "(this: CEffectData, entIndex: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the damage type of the effect to be created with this effect data.\n",
      "@name CEffectData:SetDamageType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetDamageType",
      "@param {CEffectData} this - no description",
      "@param {DMG} damageType - Damage type, see @DMG enum.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetDamageType",
    "typings": [
      "(this: CEffectData, damageType: DMG): void"
    ]
  },
  {
    "comments": [
      "\nSets the hit box index of the effect.\n",
      "@name CEffectData:SetHitBox",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetHitBox",
      "@note This is internally stored as an integer, but only the first 11 bits will be networked.",
      "@param {CEffectData} this - no description",
      "@param {number} hitBoxIndex - The hit box index of the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetHitBox",
    "typings": [
      "(this: CEffectData, hitBoxIndex: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the color of the effect.\n",
      "@name CEffectData:SetColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetColor",
      "@param {CEffectData} this - no description",
      "@param {number} color - Color represented by a byte.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetColor",
    "typings": [
      "(this: CEffectData, color: number): void"
    ]
  },
  {
    "comments": [
      "\nSets the attachment id of the effect to be created with this effect data.\n",
      "@name CEffectData:SetAttachment",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetAttachment",
      "@note This is internally stored as an integer, but only the first 5 bits will be networked.",
      "@param {CEffectData} this - no description",
      "@param {number} attachment - New attachment ID of the effect.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetAttachment",
    "typings": [
      "(this: CEffectData, attachment: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the surface property index of the effect.\n",
      "@name CEffectData:GetSurfaceProp",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetSurfaceProp",
      "@param {CEffectData} this - no description",
      "@returns {number} - The surface property index of the effect"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetSurfaceProp",
    "typings": [
      "(this: CEffectData): number"
    ]
  },
  {
    "comments": [
      "\nSets the angles of the effect.\n",
      "@name CEffectData:SetAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetAngles",
      "@param {CEffectData} this - no description",
      "@param {Angle} ang - The new angles to be set.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetAngles",
    "typings": [
      "(this: CEffectData, ang: Angle): void"
    ]
  },
  {
    "comments": [
      "\nReturns the start position of the effect.\n",
      "@name CEffectData:GetStart",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetStart",
      "@param {CEffectData} this - no description",
      "@returns {Vector} - The start position of the effect"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetStart",
    "typings": [
      "(this: CEffectData): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the origin position of the effect.\n",
      "@name CEffectData:GetOrigin",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetOrigin",
      "@param {CEffectData} this - no description",
      "@returns {Vector} - The origin position of the effect."
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetOrigin",
    "typings": [
      "(this: CEffectData): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the scale of the effect.\n",
      "@name CEffectData:GetScale",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetScale",
      "@param {CEffectData} this - no description",
      "@returns {number} - The scale of the effect"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetScale",
    "typings": [
      "(this: CEffectData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the radius of the effect.\n",
      "@name CEffectData:GetRadius",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetRadius",
      "@param {CEffectData} this - no description",
      "@returns {number} - The radius of the effect."
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetRadius",
    "typings": [
      "(this: CEffectData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the normalized direction vector of the effect.\n",
      "@name CEffectData:GetNormal",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetNormal",
      "@param {CEffectData} this - no description",
      "@returns {Vector} - The normalized direction vector of the effect."
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetNormal",
    "typings": [
      "(this: CEffectData): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the material ID of the effect.\n",
      "@name CEffectData:GetMaterialIndex",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetMaterialIndex",
      "@param {CEffectData} this - no description",
      "@returns {number} - The material ID of the effect."
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetMaterialIndex",
    "typings": [
      "(this: CEffectData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the magnitude of the effect.\n",
      "@name CEffectData:GetMagnitude",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetMagnitude",
      "@param {CEffectData} this - no description",
      "@returns {number} - The magnitude of the effect."
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetMagnitude",
    "typings": [
      "(this: CEffectData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the hit box ID of the effect.\n",
      "@name CEffectData:GetHitBox",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetHitBox",
      "@param {CEffectData} this - no description",
      "@returns {number} - The hit box ID of the effect."
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetHitBox",
    "typings": [
      "(this: CEffectData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the flags of the effect.\n",
      "@name CEffectData:GetFlags",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetFlags",
      "@param {CEffectData} this - no description",
      "@returns {number} - The flags of the effect."
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetFlags",
    "typings": [
      "(this: CEffectData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the entity index of the entity set for the effect.\n",
      "@name CEffectData:GetEntIndex",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetEntIndex",
      "@param {CEffectData} this - no description",
      "@returns {number} - The entity index of the entity set for the effect."
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetEntIndex",
    "typings": [
      "(this: CEffectData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the damage type of the effect\n",
      "@name CEffectData:GetDamageType",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetDamageType",
      "@param {CEffectData} this - no description",
      "@returns {DMG} - Damage type of the effect, see @DMG enum"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetDamageType",
    "typings": [
      "(this: CEffectData): DMG"
    ]
  },
  {
    "comments": [
      "\nReturns byte which represents the color of the effect.\n",
      "@name CEffectData:GetColor",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetColor",
      "@param {CEffectData} this - no description",
      "@returns {number} - The color of the effect"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetColor",
    "typings": [
      "(this: CEffectData): number"
    ]
  },
  {
    "comments": [
      "\nReturns the attachment ID for the effect.\n",
      "@name CEffectData:GetAttachment",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetAttachment",
      "@param {CEffectData} this - no description",
      "@returns {number} - The attachment ID of the effect."
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetAttachment",
    "typings": [
      "(this: CEffectData): number"
    ]
  },
  {
    "comments": [
      "\nSets the entity of the effect to be created with this effect data.\n",
      "@name CEffectData:SetEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/SetEntity",
      "@param {CEffectData} this - no description",
      "@param {Entity} entity - Entity of the effect, mostly used for parenting.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "SetEntity",
    "typings": [
      "(this: CEffectData, entity: Entity): void"
    ]
  },
  {
    "comments": [
      "\nSets up a new 3d context using orthographic projection.\n",
      "@name cam.StartOrthoView",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/StartOrthoView",
      "@param {void} this - no description",
      "@param {number} leftOffset - The left plane offset.",
      "@param {number} topOffset - The top plane offset.",
      "@param {number} rightOffset - The right plane offset.",
      "@param {number} bottomOffset - The bottom plane offset.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "StartOrthoView",
    "typings": [
      "(this: void, leftOffset: number, topOffset: number, rightOffset: number, bottomOffset: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the entity assigned to the effect.\n",
      "@name CEffectData:GetEntity",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetEntity",
      "@param {CEffectData} this - no description",
      "@returns {Entity} - The entity assigned to the effect"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetEntity",
    "typings": [
      "(this: CEffectData): Entity"
    ]
  },
  {
    "comments": [
      "\nReturns the angles of the effect.\n",
      "@name CEffectData:GetAngles",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/CEffectData/GetAngles",
      "@param {CEffectData} this - no description",
      "@returns {Angle} - The angles of the effect"
    ],
    "type": "class",
    "context": "CEffectData",
    "name": "GetAngles",
    "typings": [
      "(this: CEffectData): Angle"
    ]
  },
  {
    "comments": [
      "\nSets up a new 2D rendering context. Must be finished by @cam.End3D2D. This function pushes a new matrix onto the stack. (@cam.PushModelMatrix)\n",
      "@name cam.Start3D2D",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/Start3D2D",
      "@rendering function:3d",
      "@param {void} this - no description",
      "@param {Vector} pos - Origin of the 3D2D context, ie. the top left corner, (0, 0).",
      "@param {Angle} angles - Angles of the 3D2D context.\n+x in the 2d context corresponds to +x of the angle (its forward direction).\n+y in the 2d context corresponds to -y of the angle (its right direction).\nIf (dx, dy) are your desired (+x, +y) unit vectors, the angle you want is dx:AngleEx(dx:Cross(-dy)).",
      "@param {number} scale - The scale of the render context.\nIf scale is 1 then 1 pixel in 2D context will equal to 1 unit in 3D context.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "Start3D2D",
    "typings": [
      "(this: void, pos: Vector, angles: Angle, scale: number): void"
    ]
  },
  {
    "comments": [
      "\nSets up a new 3D rendering context. Must be finished by @cam.End3D.\nFor more advanced settings such as an orthographic view, use @cam.Start instead.\n",
      "@name cam.Start3D",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/Start3D",
      "@rendering start:3d",
      "@bug #1995 Negative x/y values won't work.",
      "@bug #2682 This will not update current view properties.",
      "@param {void} this - no description",
      "@param {Vector} pos - Render cam position.",
      "@param {Angle} angles - Render cam angles.",
      "@param {number} fov - Field of view.",
      "@param {number} x - X coordinate of where to start the new view port.",
      "@param {number} y - Y coordinate of where to start the new view port.",
      "@param {number} w - Width of the new viewport.",
      "@param {number} h - Height of the new viewport.",
      "@param {number} zNear - Distance to near clipping plane.",
      "@param {number} zFar - Distance to far clipping plane.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "Start3D",
    "typings": [
      "(this: void, pos?: Vector, angles?: Angle, fov?: number, x?: number, y?: number, w?: number, h?: number, zNear?: number, zFar?: number): void"
    ]
  },
  {
    "comments": [
      "\nSets up a new 2D rendering context. Must be finished by @cam.End2D.\nThis is almost always used with a render target from the @render library. To set its position use @render.SetViewPort with a target already stored.\n",
      "@name cam.Start2D",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/Start2D",
      "@rendering start:2d",
      "@note This will put an identity matrix at the top of the model matrix stack. If you are trying to use @cam.PushModelMatrix, call it after this function and not before.",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "Start2D",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSets up a new rendering context. This is an extended version of @cam.Start3D and @cam.Start2D. Must be finished by @cam.End3D or @cam.End2D.\n",
      "@name cam.Start",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/Start",
      "@bug #2682 This will not update current view properties for 3D contexts.",
      "@param {void} this - no description",
      "@param {RenderCamData} dataTbl - Render context config. See @RenderCamData structure",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "Start",
    "typings": [
      "(this: void, dataTbl: RenderCamData): void"
    ]
  },
  {
    "comments": [
      "\nPops the current active rendering matrix from the stack and reinstates the previous one.\n",
      "@name cam.PopModelMatrix",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/PopModelMatrix",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "PopModelMatrix",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nPushes the specified matrix onto the render matrix stack. Unlike opengl, this will replace the current model matrix.\n",
      "@name cam.PushModelMatrix",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/PushModelMatrix",
      "@param {void} this - no description",
      "@param {VMatrix} matrix - The matrix to push.",
      "@param {boolean} multiply - If set, multiplies given matrix with currently active matrix (@cam.GetModelMatrix) before pushing.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "PushModelMatrix",
    "typings": [
      "(this: void, matrix: VMatrix, multiply?: boolean): void"
    ]
  },
  {
    "comments": [
      "\nSwitches the renderer back to the previous drawing mode from a 3D orthographic rendering context.\n",
      "@name cam.EndOrthoView",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/EndOrthoView",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "EndOrthoView",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSwitches the renderer back to the previous drawing mode from a 3D2D context.\n",
      "@name cam.End3D2D",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/End3D2D",
      "@bug #1091 This will crash the game if there is no context to end.",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "End3D2D",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns the currently active model matrix. (TODO: Does this actually mean the matrix on top of the stack? Probably)\n",
      "@name cam.GetModelMatrix",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/GetModelMatrix",
      "@param {void} this - no description",
      "@returns {VMatrix} - The currently active matrix."
    ],
    "type": "func",
    "context": "cam",
    "name": "GetModelMatrix",
    "typings": [
      "(this: void): VMatrix"
    ]
  },
  {
    "comments": [
      "\nSwitches the renderer back to the previous drawing mode from a 3D context.\n",
      "@name cam.End3D",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/End3D",
      "@bug #1091 This will crash the game if there is no context to end.",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "End3D",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSwitches the renderer back to the previous drawing mode from a 2D context.\n",
      "@name cam.End2D",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/End2D",
      "@bug #1091 This will crash the game if there is no context to end.",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "End2D",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nSwitches the renderer back to the previous drawing mode from a 3D context.\nThis function is an alias of @cam.End3D.\n",
      "@name cam.End",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/End",
      "@bug #1091 This will crash the game if there is no context to end.",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "End",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nTells the renderer to ignore the depth buffer and draw any upcoming operation \"ontop\" of everything that was drawn yet.\n",
      "@name cam.IgnoreZ",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/IgnoreZ",
      "@param {void} this - no description",
      "@param {boolean} ignoreZ - Determines whenever to ignore the depth buffer or not.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "IgnoreZ",
    "typings": [
      "(this: void, ignoreZ: boolean): void"
    ]
  },
  {
    "comments": [
      "\nShakes the screen at a certain position.\n",
      "@name cam.ApplyShake",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/cam/ApplyShake",
      "@param {void} this - no description",
      "@param {Vector} pos - Origin of the shake.",
      "@param {Angle} angles - Angles of the shake.",
      "@param {number} factor - The shake factor.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "cam",
    "name": "ApplyShake",
    "typings": [
      "(this: void, pos: Vector, angles: Angle, factor: number): void"
    ]
  },
  {
    "comments": [
      "\nReturns the hexadecimal representation of the number with the specified digits.\n",
      "@name bit.tohex",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/tohex",
      "@param {void} this - no description",
      "@param {number} value - The value to be normalized.",
      "@param {number} digits - The number of digits. Optional",
      "@returns {string} - hexString"
    ],
    "type": "func",
    "context": "bit",
    "name": "tohex",
    "typings": [
      "(this: void, value: number, digits?: number): string"
    ]
  },
  {
    "comments": [
      "\nNormalizes the specified value and clamps it in the range of a signed 32bit integer.\n",
      "@name bit.tobit",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/tobit",
      "@param {void} this - no description",
      "@param {number} value - The value to be normalized.",
      "@returns {number} - swapped"
    ],
    "type": "func",
    "context": "bit",
    "name": "tobit",
    "typings": [
      "(this: void, value: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the right shifted value.\n",
      "@name bit.rshift",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/rshift",
      "@param {void} this - no description",
      "@param {number} value - The value to be manipulated.",
      "@param {number} shiftCount - Amounts of bits to shift right by.",
      "@returns {number} - shiftedValue"
    ],
    "type": "func",
    "context": "bit",
    "name": "rshift",
    "typings": [
      "(this: void, value: number, shiftCount: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the right rotated value.\n",
      "@name bit.ror",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/ror",
      "@param {void} this - no description",
      "@param {number} value - The value to be manipulated.",
      "@param {number} shiftCount - Amounts of bits to rotate right by.",
      "@returns {number} - shiftedValue"
    ],
    "type": "func",
    "context": "bit",
    "name": "ror",
    "typings": [
      "(this: void, value: number, shiftCount: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the left rotated value.\n",
      "@name bit.rol",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/rol",
      "@param {void} this - no description",
      "@param {number} value - The value to be manipulated.",
      "@param {number} shiftCount - Amounts of bits to rotate left by.",
      "@returns {number} - shiftedValue"
    ],
    "type": "func",
    "context": "bit",
    "name": "rol",
    "typings": [
      "(this: void, value: number, shiftCount: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the left shifted value.\n",
      "@name bit.lshift",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/lshift",
      "@param {void} this - no description",
      "@param {number} value - The value to be manipulated.",
      "@param {number} shiftCount - Amounts of bits to shift left by.",
      "@returns {number} - shiftedValue"
    ],
    "type": "func",
    "context": "bit",
    "name": "lshift",
    "typings": [
      "(this: void, value: number, shiftCount: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the bitwise xor of all values specified.\n",
      "@name bit.bxor",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/bxor",
      "@param {void} this - no description",
      "@param {number} value - The value to be manipulated.",
      "@param {number} otherValues - Values bit xor with. Optional.",
      "@returns {number} - bitwiseXOr"
    ],
    "type": "func",
    "context": "bit",
    "name": "bxor",
    "typings": [
      "(this: void, value: number, otherValues?: number): number"
    ]
  },
  {
    "comments": [
      "\nSwaps the byte order.\n",
      "@name bit.bswap",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/bswap",
      "@param {void} this - no description",
      "@param {number} value - The value to be byte swapped.",
      "@returns {number} - swapped"
    ],
    "type": "func",
    "context": "bit",
    "name": "bswap",
    "typings": [
      "(this: void, value: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the bitwise OR of all values specified.\n",
      "@name bit.bor",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/bor",
      "@param {void} this - no description",
      "@param {number} value1 - The first value.",
      "@param {any[]} ...args - Extra values to be evaluated. (must all be numbers)",
      "@returns {number} - The bitwise OR result between all numbers."
    ],
    "type": "func",
    "context": "bit",
    "name": "bor",
    "typings": [
      "(this: void, value1: number, ...args: any[]): number"
    ]
  },
  {
    "comments": [
      "\nReturns the bitwise not of the value.\n",
      "@name bit.bnot",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/bnot",
      "@param {void} this - no description",
      "@param {number} value - The value to be inverted.",
      "@returns {number} - bitwiseNot"
    ],
    "type": "func",
    "context": "bit",
    "name": "bnot",
    "typings": [
      "(this: void, value: number): number"
    ]
  },
  {
    "comments": [
      "\nPerforms the bitwise \"and\" for all values specified.\n",
      "@name bit.band",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/band",
      "@param {void} this - no description",
      "@param {number} value - The value to be manipulated.",
      "@param {number} otherValues - Values bit to perform bitwise \"and\" with. Optional.",
      "@returns {number} - Result of bitwise \"and\" operation."
    ],
    "type": "func",
    "context": "bit",
    "name": "band",
    "typings": [
      "(this: void, value: number, otherValues?: number): number"
    ]
  },
  {
    "comments": [
      "\nReturns the arithmetically shifted value.\n",
      "@name bit.arshift",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/bit/arshift",
      "@param {void} this - no description",
      "@param {number} value - The value to be manipulated.",
      "@param {number} shiftCount - Amounts of bits to shift.",
      "@returns {number} - shiftedValue"
    ],
    "type": "func",
    "context": "bit",
    "name": "arshift",
    "typings": [
      "(this: void, value: number, shiftCount: number): number"
    ]
  },
  {
    "comments": [
      "\nReads a special encoded vector normal from the bitstream and returns it, this function is not suitable to send vectors that represent a position.\n",
      "@name bf_read:ReadVectorNormal",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/ReadVectorNormal",
      "@param {bf_read} this - no description",
      "@returns {Vector} - normal"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "ReadVectorNormal",
    "typings": [
      "(this: bf_read): Vector"
    ]
  },
  {
    "comments": [
      "\nReads a special encoded vector from the bitstream and returns it, this function is not suitable to send normals.\n",
      "@name bf_read:ReadVector",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/ReadVector",
      "@param {bf_read} this - no description",
      "@returns {Vector} - vec"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "ReadVector",
    "typings": [
      "(this: bf_read): Vector"
    ]
  },
  {
    "comments": [
      "\nReads a null terminated string from the bitstream.\n",
      "@name bf_read:ReadString",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/ReadString",
      "@param {bf_read} this - no description",
      "@returns {string} - str"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "ReadString",
    "typings": [
      "(this: bf_read): string"
    ]
  },
  {
    "comments": [
      "\nReads a 2 byte short from the bitstream and returns it.\n",
      "@name bf_read:ReadShort",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/ReadShort",
      "@param {bf_read} this - no description",
      "@returns {number} - short"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "ReadShort",
    "typings": [
      "(this: bf_read): number"
    ]
  },
  {
    "comments": [
      "\nReads a 4 byte long from the bitstream and returns it.\n",
      "@name bf_read:ReadLong",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/ReadLong",
      "@param {bf_read} this - no description",
      "@returns {number} - int"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "ReadLong",
    "typings": [
      "(this: bf_read): number"
    ]
  },
  {
    "comments": [
      "\nReads a 4 byte float from the bitstream and returns it.\n",
      "@name bf_read:ReadFloat",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/ReadFloat",
      "@param {bf_read} this - no description",
      "@returns {number} - float"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "ReadFloat",
    "typings": [
      "(this: bf_read): number"
    ]
  },
  {
    "comments": [
      "\nReads a short representing an entity index and returns the matching entity handle.\n",
      "@name bf_read:ReadEntity",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/ReadEntity",
      "@param {bf_read} this - no description",
      "@returns {Entity} - ent"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "ReadEntity",
    "typings": [
      "(this: bf_read): Entity"
    ]
  },
  {
    "comments": [
      "\nReads a signed char and returns a number from -127 to 127 representing the ascii value of that char.\n",
      "@name bf_read:ReadChar",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/ReadChar",
      "@param {bf_read} this - no description",
      "@returns {number} - asciiVal"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "ReadChar",
    "typings": [
      "(this: bf_read): number"
    ]
  },
  {
    "comments": [
      "\nReads 1 bit an returns a bool representing the bit.\n",
      "@name bf_read:ReadBool",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/ReadBool",
      "@param {bf_read} this - no description",
      "@returns {boolean} - bit"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "ReadBool",
    "typings": [
      "(this: bf_read): boolean"
    ]
  },
  {
    "comments": [
      "\nReads an returns an angle object from the bitstream.\n",
      "@name bf_read:ReadAngle",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/ReadAngle",
      "@param {bf_read} this - no description",
      "@returns {Angle} - The read angle"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "ReadAngle",
    "typings": [
      "(this: bf_read): Angle"
    ]
  },
  {
    "comments": [
      "\nSets pitch, yaw and roll to 0.\nThis function is faster than doing it manually.\n",
      "@name AngleFuncs:Zero",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Zero",
      "@param {Angle} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Zero",
    "typings": [
      "(this: Angle): void"
    ]
  },
  {
    "comments": [
      "\nReturns a normal vector facing in the direction that points up relative to the angle's direction.\n",
      "@name AngleFuncs:Up",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Up",
      "@param {Angle} this - no description",
      "@returns {Vector} - The up direction of the angle."
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Up",
    "typings": [
      "(this: Angle): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns the pitch, yaw, and roll components of the angle.\n",
      "@name AngleFuncs:Unpack",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Unpack",
      "@param {Angle} this - no description",
      "@returns {number} - p, pitch, x, or Angle[1].",
      "@returns {number} - y, yaw, or Angle[2].",
      "@returns {number} - r, roll, r, or Angle[3].",
      "@tupleReturn"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Unpack",
    "typings": [
      "(this: Angle): [number, number, number]"
    ]
  },
  {
    "comments": [
      "\nReturns the angle as a table with three elements.\n",
      "@name AngleFuncs:ToTable",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/ToTable",
      "@param {Angle} this - no description",
      "@returns {table} - The table with elements 1 = p, 2 = y, 3 = r."
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "ToTable",
    "typings": [
      "(this: Angle): table"
    ]
  },
  {
    "comments": [
      "\nSnaps the angle to nearest interval of degrees.\n",
      "@name AngleFuncs:SnapTo",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/SnapTo",
      "@note This will modify the original angle too!",
      "@param {Angle} this - no description",
      "@param {string} axis - The component/axis to snap. Can be either \"p\"/\"pitch\", \"y\"/\"yaw\" or \"r\"/\"roll\".",
      "@param {number} target - The target angle snap interval",
      "@returns {Angle} - The snapped angle."
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "SnapTo",
    "typings": [
      "(this: Angle, axis: string, target: number): Angle"
    ]
  },
  {
    "comments": [
      "\nSets the p, y, and r of the angle.\n",
      "@name AngleFuncs:SetUnpacked",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/SetUnpacked",
      "@param {Angle} this - no description",
      "@param {number} p - The pitch component of the Angle",
      "@param {number} y - The yaw component of the Angle",
      "@param {number} r - The roll component of the Angle",
      "@returns {void}"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "SetUnpacked",
    "typings": [
      "(this: Angle, p: number, y: number, r: number): void"
    ]
  },
  {
    "comments": [
      "\nCopies pitch, yaw and roll from the second angle to the first.\n",
      "@name AngleFuncs:Set",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Set",
      "@param {Angle} this - no description",
      "@param {Angle} originalAngle - The angle to copy the values from.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Set",
    "typings": [
      "(this: Angle, originalAngle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nRotates the angle around the specified axis by the specified degrees.\n",
      "@name AngleFuncs:RotateAroundAxis",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/RotateAroundAxis",
      "@param {Angle} this - no description",
      "@param {Vector} axis - The axis to rotate around.",
      "@param {number} rotation - The degrees to rotate around the specified axis.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "RotateAroundAxis",
    "typings": [
      "(this: Angle, axis: Vector, rotation: number): void"
    ]
  },
  {
    "comments": [
      "\nSubtracts the values of the argument angle to the orignal angle. This functions the same as angle1 - angle2 without creating a new angle object, skipping object construction and garbage collection.\n",
      "@name AngleFuncs:Sub",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Sub",
      "@param {Angle} this - no description",
      "@param {Angle} angle - The angle to subtract.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Sub",
    "typings": [
      "(this: Angle, angle: Angle): void"
    ]
  },
  {
    "comments": [
      "\nReturns a normal vector facing in the direction that points right relative to the angle's direction.\n",
      "@name AngleFuncs:Right",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Right",
      "@param {Angle} this - no description",
      "@returns {Vector} - The right direction of the angle"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Right",
    "typings": [
      "(this: Angle): Vector"
    ]
  },
  {
    "comments": [
      "\nReturns whether the pitch, yaw and roll are 0 or not.\n",
      "@name AngleFuncs:IsZero",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/IsZero",
      "@param {Angle} this - no description",
      "@returns {boolean} - Whether the pitch, yaw and roll are 0 or not."
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "IsZero",
    "typings": [
      "(this: Angle): boolean"
    ]
  },
  {
    "comments": [
      "\nNormalizes the angles by applying a module with 360 to pitch, yaw and roll.\n",
      "@name AngleFuncs:Normalize",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Normalize",
      "@param {Angle} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Normalize",
    "typings": [
      "(this: Angle): void"
    ]
  },
  {
    "comments": [
      "\nReturns a normal vector facing in the direction that the angle points.\n",
      "@name AngleFuncs:Forward",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Forward",
      "@param {Angle} this - no description",
      "@returns {Vector} - The forward direction of the angle"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Forward",
    "typings": [
      "(this: Angle): Vector"
    ]
  },
  {
    "comments": [
      "\nRewinds the bitstream so it can be read again.\n",
      "@name bf_read:Reset",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/bf read/Reset",
      "@param {bf_read} this - no description",
      "@returns {void}"
    ],
    "type": "class",
    "context": "bf_read",
    "name": "Reset",
    "typings": [
      "(this: bf_read): void"
    ]
  },
  {
    "comments": [
      "\nMultiplies a scalar to all the values of the orignal angle. This functions the same as num * angle without creating a new angle object, skipping object construction and garbage collection.\n",
      "@name AngleFuncs:Mul",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Mul",
      "@param {Angle} this - no description",
      "@param {number} scalar - The number to multiply.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Mul",
    "typings": [
      "(this: Angle, scalar: number): void"
    ]
  },
  {
    "comments": [
      "\nDivides all values of the original angle by a scalar. This functions the same as angle1 / num without creating a new angle object, skipping object construction and garbage collection.\n",
      "@name AngleFuncs:Div",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Div",
      "@param {Angle} this - no description",
      "@param {number} scalar - The number to divide by.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Div",
    "typings": [
      "(this: Angle, scalar: number): void"
    ]
  },
  {
    "comments": [
      "\nAdd a new base class that can be derived by others. This is done automatically for:\n* widgets\n* panels\n* drive modes\n* entities\n* weapons\n* gamemodes (with prefix \"gamemode_\")\n",
      "@name baseclass.Set",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/baseclass/Set",
      "@param {void} this - no description",
      "@param {string} name - The name of this base class. Must be completely unique.",
      "@param {table} tab - The base class.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "baseclass",
    "name": "Set",
    "typings": [
      "(this: void, name: string, tab: table): void"
    ]
  },
  {
    "comments": [
      "\nGets the base class of an an object.\nThis is used not just by entities, but also by widgets, panels, drive modes, weapons and gamemodes (with \"gamemode_\" prefix).\nThe keyword **DEFINE_BASECLASS** translates into a call to this function. In the engine, it is replaced with:\n```local BaseClass = baseclass.Get```\n",
      "@name baseclass.Get",
      "@realm client, server, menu",
      "@wiki https://wiki.garrysmod.com/page/baseclass/Get",
      "@param {void} this - no description",
      "@param {string} name - The child class.",
      "@returns {table} - The base class's meta table."
    ],
    "type": "func",
    "context": "baseclass",
    "name": "Get",
    "typings": [
      "(this: void, name: string): table"
    ]
  },
  {
    "comments": [
      "\nCreate a new empty task. Used by @Schedule:AddTask and @Schedule:EngTask.\n",
      "@name ai_task.next",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ai task/New",
      "@param {void} this - no description",
      "@returns {Task} - The new task object."
    ],
    "type": "func",
    "context": "ai_task",
    "name": "next",
    "typings": [
      "(this: void): Task"
    ]
  },
  {
    "comments": [
      "\nCreates a schedule for scripted NPC.\n",
      "@name ai_schedule.New",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ai schedule/New",
      "@param {void} this - no description",
      "@param {string} name - Name of the schedule.",
      "@returns {table} - A table containing schedule information to be used with @EntityHooks:StartSchedule."
    ],
    "type": "func",
    "context": "ai_schedule",
    "name": "New",
    "typings": [
      "(this: void, name: string): table"
    ]
  },
  {
    "comments": [
      "\nTranslates a task name to its corresponding ID.\n",
      "@name ai.GetTaskID",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ai/GetTaskID",
      "@param {void} this - no description",
      "@param {string} task - The task name.",
      "@returns {number} - The task ID, see [ai_task.h](https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/mp/src/game/server/ai_task.h#L89-L502). Returns -1 if the schedule name isn't valid."
    ],
    "type": "func",
    "context": "ai",
    "name": "GetTaskID",
    "typings": [
      "(this: void, task: string): number"
    ]
  },
  {
    "comments": [
      "\nTranslates a schedule name to its corresponding ID.\n",
      "@name ai.GetScheduleID",
      "@realm server",
      "@wiki https://wiki.garrysmod.com/page/ai/GetScheduleID",
      "@param {void} this - no description",
      "@param {string} sched - Then schedule name. In most cases, this will be the same as the @SCHED enum name.",
      "@returns {SCHED} - The schedule ID, see @SCHED enum. Returns -1 if the schedule name isn't valid."
    ],
    "type": "func",
    "context": "ai",
    "name": "GetScheduleID",
    "typings": [
      "(this: void, sched: string): SCHED"
    ]
  },
  {
    "comments": [
      "\nAdds one to the count of how many times the spawnmenu has been opened. Once this count reaches 100,000, the 'Menu User' achievement is unlocked.\n",
      "@name achievements.SpawnMenuOpen",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/achievements/SpawnMenuOpen",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "SpawnMenuOpen",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds one to the count of props spawned. Once this count reaches 5000, the 'Creator' achievement is unlocked.\n",
      "@name achievements.SpawnedProp",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/achievements/SpawnedProp",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "SpawnedProp",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds one to the count of ragdolls spawned. Once this count reaches 2000, the 'Dollhouse' achievement is unlocked.\n",
      "@name achievements.SpawnedRagdoll",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/achievements/SpawnedRagdoll",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "SpawnedRagdoll",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds one to the count of NPCs spawned. Once this count reaches 1000, the 'Procreator' achievement is unlocked.\n",
      "@name achievements.SpawnedNPC",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/achievements/SpawnedNPC",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "SpawnedNPC",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds one to the count of things removed. Once this count reaches 5000, the 'Destroyer' achievement is unlocked.\n",
      "@name achievements.Remover",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/achievements/Remover",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "Remover",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds one to the count of friendly NPCs killed. Once this count reaches 1000, the 'Bad Friend' achievement is unlocked.\n",
      "@name achievements.IncGoodies",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/achievements/IncGoodies",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "IncGoodies",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nUsed in GMod 12 in the achievements menu to show the user if they have unlocked certain achievements.\n",
      "@name achievements.IsAchieved",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/achievements/IsAchieved",
      "@param {void} this - no description",
      "@param {number} AchievementID - Internal Achievement ID number",
      "@returns {boolean} - Returns true if the given achievementID is achieved."
    ],
    "type": "func",
    "context": "achievements",
    "name": "IsAchieved",
    "typings": [
      "(this: void, AchievementID: number): boolean"
    ]
  },
  {
    "comments": [
      "\nAdds one to the count of innocent animals killed. Once this count reaches 1000, the 'Innocent Bystander' achievement is unlocked.\n",
      "@name achievements.IncBystander",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/achievements/IncBystander",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "IncBystander",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds one to the count of baddies killed. Once this count reaches 1000, the 'War Zone' achievement is unlocked.\n",
      "@name achievements.IncBaddies",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/achievements/IncBaddies",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "IncBaddies",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nRetrieves name of given achievement\n",
      "@name achievements.GetName",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/achievements/GetName",
      "@param {void} this - no description",
      "@param {number} achievementID - The ID of achievement to retrieve name of. Note: IDs start from 0, not 1.",
      "@returns {string} - Name of an achievement"
    ],
    "type": "func",
    "context": "achievements",
    "name": "GetName",
    "typings": [
      "(this: void, achievementID: number): string"
    ]
  },
  {
    "comments": [
      "\nRetrieves progress goal of given achievement\n",
      "@name achievements.GetGoal",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/achievements/GetGoal",
      "@param {void} this - no description",
      "@param {number} achievementID - The ID of achievement to retrieve goal of. Note: IDs start from 0, not 1.",
      "@returns {number} - Progress goal of an achievement"
    ],
    "type": "func",
    "context": "achievements",
    "name": "GetGoal",
    "typings": [
      "(this: void, achievementID: number): number"
    ]
  },
  {
    "comments": [
      "\nRetrieves description of given achievement\n",
      "@name achievements.GetDesc",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/achievements/GetDesc",
      "@param {void} this - no description",
      "@param {number} achievementID - The ID of achievement to retrieve description of. Note: IDs start from 0, not 1.",
      "@returns {string} - Description of an achievement"
    ],
    "type": "func",
    "context": "achievements",
    "name": "GetDesc",
    "typings": [
      "(this: void, achievementID: number): string"
    ]
  },
  {
    "comments": [
      "\nRetrieves progress of given achievement\n",
      "@name achievements.GetCount",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/achievements/GetCount",
      "@param {void} this - no description",
      "@param {number} achievementID - The ID of achievement to retrieve progress of. Note: IDs start from 0, not 1.",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "GetCount",
    "typings": [
      "(this: void, achievementID: number): void"
    ]
  },
  {
    "comments": [
      "\nAdds one to the count of balls eaten. Once this count reaches 200, the 'Ball Eater' achievement is unlocked.\n",
      "@name achievements.EatBall",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/achievements/EatBall",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "EatBall",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nAdds one to the count of balloons burst. Once this count reaches 1000, the 'Popper' achievement is unlocked.\n",
      "@name achievements.BalloonPopped",
      "@realm client",
      "@wiki https://wiki.garrysmod.com/page/achievements/BalloonPopped",
      "@internal",
      "@param {void} this - no description",
      "@returns {void}"
    ],
    "type": "func",
    "context": "achievements",
    "name": "BalloonPopped",
    "typings": [
      "(this: void): void"
    ]
  },
  {
    "comments": [
      "\nReturns the amount of achievements in Garry's Mod.\n",
      "@name achievements.Count",
      "@realm client, menu",
      "@wiki https://wiki.garrysmod.com/page/achievements/Count",
      "@param {void} this - no description",
      "@returns {number} - The amount of achievements available."
    ],
    "type": "func",
    "context": "achievements",
    "name": "Count",
    "typings": [
      "(this: void): number"
    ]
  },
  {
    "comments": [
      "\nAdds the values of the argument angle to the orignal angle. This functions the same as angle1 + angle2 without creating a new angle object, skipping object construction and garbage collection.\n",
      "@name AngleFuncs:Add",
      "@realm client, server",
      "@wiki https://wiki.garrysmod.com/page/Angle/Add",
      "@param {Angle} this - no description",
      "@param {Angle} angle - The angle to add.",
      "@returns {void}"
    ],
    "type": "class",
    "context": "AngleFuncs",
    "name": "Add",
    "typings": [
      "(this: Angle, angle: Angle): void"
    ]
  }
]
