AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
CharacterActionIpLogger Class Reference
Inheritance diagram for CharacterActionIpLogger:
PlayerScript ScriptObject

Public Member Functions

 CharacterActionIpLogger ()
 
void OnPlayerCreate (Player *player) override
 
void OnPlayerLogin (Player *player) override
 
void OnPlayerLogout (Player *player) override
 
void CharacterIPLogAction (Player *player, IPLoggingTypes aType)
 Logs a number of actions done by players with an IP.
 
- Public Member Functions inherited from PlayerScript
virtual void OnPlayerJustDied (Player *)
 
virtual void OnPlayerCalculateTalentsPoints (Player const *, uint32 &)
 
virtual void OnPlayerReleasedGhost (Player *)
 
virtual void OnPlayerSendInitialPacketsBeforeAddToMap (Player *, WorldPacket &)
 
virtual void OnPlayerBattlegroundDesertion (Player *, BattlegroundDesertionType const)
 
virtual void OnPlayerCompleteQuest (Player *, Quest const *)
 
virtual void OnPlayerPVPKill (Player *, Player *)
 
virtual void OnPlayerPVPFlagChange (Player *, bool)
 
virtual void OnPlayerCreatureKill (Player *, Creature *)
 
virtual void OnPlayerCreatureKilledByPet (Player *, Creature *)
 
virtual void OnPlayerKilledByCreature (Creature *, Player *)
 
virtual void OnPlayerLevelChanged (Player *, uint8)
 
virtual void OnPlayerFreeTalentPointsChanged (Player *, uint32)
 
virtual void OnPlayerTalentsReset (Player *, bool)
 
virtual void OnPlayerAfterSpecSlotChanged (Player *, uint8)
 
virtual void OnPlayerBeforeUpdate (Player *, uint32)
 
virtual void OnPlayerUpdate (Player *, uint32)
 
virtual void OnPlayerMoneyChanged (Player *, int32 &)
 
virtual void OnPlayerBeforeLootMoney (Player *, Loot *)
 
virtual void OnPlayerGiveXP (Player *, uint32 &, Unit *, uint8)
 
virtual bool OnPlayerReputationChange (Player *, uint32, int32 &, bool)
 
virtual void OnPlayerReputationRankChange (Player *, uint32, ReputationRank, ReputationRank, bool)
 
virtual void OnPlayerLearnSpell (Player *, uint32)
 
virtual void OnPlayerForgotSpell (Player *, uint32)
 
virtual void OnPlayerDuelRequest (Player *, Player *)
 
virtual void OnPlayerDuelStart (Player *, Player *)
 
virtual void OnPlayerDuelEnd (Player *, Player *, DuelCompleteType)
 
virtual void OnPlayerChat (Player *, uint32, uint32, std::string &)
 
virtual void OnPlayerBeforeSendChatMessage (Player *, uint32 &, uint32 &, std::string &)
 
virtual void OnPlayerChat (Player *, uint32, uint32, std::string &, Player *)
 
virtual void OnPlayerChat (Player *, uint32, uint32, std::string &, Group *)
 
virtual void OnPlayerChat (Player *, uint32, uint32, std::string &, Guild *)
 
virtual void OnPlayerChat (Player *, uint32, uint32, std::string &, Channel *)
 
virtual void OnPlayerEmote (Player *, uint32)
 
virtual void OnPlayerTextEmote (Player *, uint32, uint32, ObjectGuid)
 
virtual void OnPlayerSpellCast (Player *, Spell *, bool)
 
virtual void OnPlayerLoadFromDB (Player *)
 
virtual void OnPlayerBeforeLogout (Player *)
 
virtual void OnPlayerDelete (ObjectGuid, uint32)
 
virtual void OnPlayerFailedDelete (ObjectGuid, uint32)
 
virtual void OnPlayerSave (Player *)
 
virtual void OnPlayerBindToInstance (Player *, Difficulty, uint32, bool)
 
virtual void OnPlayerUpdateZone (Player *, uint32, uint32)
 
virtual void OnPlayerUpdateArea (Player *, uint32, uint32)
 
virtual void OnPlayerMapChanged (Player *)
 
virtual bool OnPlayerBeforeTeleport (Player *, uint32, float, float, float, float, uint32, Unit *)
 
virtual void OnPlayerUpdateFaction (Player *)
 
virtual void OnPlayerAddToBattleground (Player *, Battleground *)
 
virtual void OnPlayerQueueRandomDungeon (Player *, uint32 &)
 
virtual void OnPlayerRemoveFromBattleground (Player *, Battleground *)
 
virtual void OnPlayerAchievementComplete (Player *, AchievementEntry const *)
 
virtual bool OnPlayerBeforeAchievementComplete (Player *, AchievementEntry const *)
 
virtual void OnPlayerCriteriaProgress (Player *, AchievementCriteriaEntry const *)
 
virtual bool OnPlayerBeforeCriteriaProgress (Player *, AchievementCriteriaEntry const *)
 
virtual void OnPlayerAchievementSave (CharacterDatabaseTransaction, Player *, uint16, CompletedAchievementData)
 
virtual void OnPlayerCriteriaSave (CharacterDatabaseTransaction, Player *, uint16, CriteriaProgress)
 
virtual void OnPlayerGossipSelect (Player *, uint32, uint32, uint32)
 
virtual void OnPlayerGossipSelectCode (Player *, uint32, uint32, uint32, const char *)
 
virtual void OnPlayerBeingCharmed (Player *, Unit *, uint32, uint32)
 
virtual void OnPlayerAfterSetVisibleItemSlot (Player *, uint8, Item *)
 
virtual void OnPlayerAfterMoveItemFromInventory (Player *, Item *, uint8, uint8, bool)
 
virtual void OnPlayerEquip (Player *, Item *, uint8, uint8, bool)
 
virtual void OnPlayerJoinBG (Player *)
 
virtual void OnPlayerJoinArena (Player *)
 
virtual void OnPlayerGetMaxPersonalArenaRatingRequirement (Player const *, uint32, uint32 &) const
 
virtual void OnPlayerLootItem (Player *, Item *, uint32, ObjectGuid)
 
virtual void OnPlayerBeforeFillQuestLootItem (Player *, LootItem &)
 
virtual void OnPlayerStoreNewItem (Player *, Item *, uint32)
 
virtual void OnPlayerCreateItem (Player *, Item *, uint32)
 
virtual void OnPlayerQuestRewardItem (Player *, Item *, uint32)
 
virtual bool OnPlayerCanPlaceAuctionBid (Player *, AuctionEntry *)
 
virtual void OnPlayerGroupRollRewardItem (Player *, Item *, uint32, RollVote, Roll *)
 
virtual bool OnPlayerBeforeOpenItem (Player *, Item *)
 
virtual bool OnPlayerBeforeQuestComplete (Player *, uint32)
 
virtual void OnPlayerQuestComputeXP (Player *, Quest const *, uint32 &)
 
virtual void OnPlayerBeforeDurabilityRepair (Player *, ObjectGuid, ObjectGuid, float &, uint8)
 
virtual void OnPlayerBeforeBuyItemFromVendor (Player *, ObjectGuid, uint32, uint32 &, uint8, uint8, uint8)
 
virtual void OnPlayerBeforeStoreOrEquipNewItem (Player *, uint32, uint32 &, uint8, uint8, uint8, ItemTemplate const *, Creature *, VendorItem const *, bool)
 
virtual void OnPlayerAfterStoreOrEquipNewItem (Player *, uint32, Item *, uint8, uint8, uint8, ItemTemplate const *, Creature *, VendorItem const *, bool)
 
virtual void OnPlayerAfterUpdateMaxPower (Player *, Powers &, float &)
 
virtual void OnPlayerAfterUpdateMaxHealth (Player *, float &)
 
virtual void OnPlayerBeforeUpdateAttackPowerAndDamage (Player *, float &, float &, bool)
 
virtual void OnPlayerAfterUpdateAttackPowerAndDamage (Player *, float &, float &, float &, float &, bool)
 
virtual void OnPlayerBeforeInitTalentForLevel (Player *, uint8 &, uint32 &)
 
virtual void OnPlayerFirstLogin (Player *)
 
virtual void OnPlayerSetMaxLevel (Player *, uint32 &)
 
virtual bool OnPlayerCanJoinInBattlegroundQueue (Player *, ObjectGuid, BattlegroundTypeId, uint8, GroupJoinBattlegroundResult &)
 
virtual bool OnPlayerShouldBeRewardedWithMoneyInsteadOfExp (Player *)
 
virtual void OnPlayerBeforeTempSummonInitStats (Player *, TempSummon *, uint32 &)
 
virtual void OnPlayerBeforeGuardianInitStatsForLevel (Player *, Guardian *, CreatureTemplate const *, PetType &)
 
virtual void OnPlayerAfterGuardianInitStatsForLevel (Player *, Guardian *)
 
virtual void OnPlayerBeforeLoadPetFromDB (Player *, uint32 &, uint32 &, bool &, bool &)
 
virtual bool OnPlayerCanJoinInArenaQueue (Player *, ObjectGuid, uint8, BattlegroundTypeId, uint8, uint8, GroupJoinBattlegroundResult &)
 
virtual bool OnPlayerCanBattleFieldPort (Player *, uint8, BattlegroundTypeId, uint8)
 
virtual bool OnPlayerCanGroupInvite (Player *, std::string &)
 
virtual bool OnPlayerCanGroupAccept (Player *, Group *)
 
virtual bool OnPlayerCanSellItem (Player *, Item *, Creature *)
 
virtual bool OnPlayerCanSendMail (Player *, ObjectGuid, ObjectGuid, std::string &, std::string &, uint32, uint32, Item *)
 
virtual void OnPlayerPetitionBuy (Player *, Creature *, uint32 &, uint32 &, uint32 &)
 
virtual void OnPlayerPetitionShowList (Player *, Creature *, uint32 &, uint32 &, uint32 &)
 
virtual void OnPlayerRewardKillRewarder (Player *, KillRewarder *, bool, float &)
 
virtual bool OnPlayerCanGiveMailRewardAtGiveLevel (Player *, uint8)
 
virtual void OnPlayerDeleteFromDB (CharacterDatabaseTransaction, uint32)
 
virtual bool OnPlayerCanRepopAtGraveyard (Player *)
 
virtual Optional< bool > OnPlayerIsClass (Player const *, Classes, ClassContext)
 
virtual void OnPlayerGetMaxSkillValue (Player *, uint32, int32 &, bool)
 
virtual bool OnPlayerHasActivePowerType (Player const *, Powers)
 
virtual void OnPlayerUpdateGatheringSkill (Player *, uint32, uint32, uint32, uint32, uint32, uint32 &)
 This hook called before gathering skill gain is applied to the character.
 
virtual void OnPlayerUpdateCraftingSkill (Player *, SkillLineAbilityEntry const *, uint32, uint32 &)
 This hook is called before crafting skill gain is applied to the character.
 
virtual bool OnPlayerUpdateFishingSkill (Player *, int32, int32, int32, int32)
 
virtual bool OnPlayerCanAreaExploreAndOutdoor (Player *)
 
virtual void OnPlayerVictimRewardBefore (Player *, Player *, uint32 &, uint32 &)
 
virtual void OnPlayerVictimRewardAfter (Player *, Player *, uint32 &, uint32 &, float &)
 
virtual void OnPlayerCustomScalingStatValueBefore (Player *, ItemTemplate const *, uint8, bool, uint32 &)
 
virtual void OnPlayerCustomScalingStatValue (Player *, ItemTemplate const *, uint32 &, int32 &, uint8, uint32, ScalingStatValuesEntry const *)
 
virtual void OnPlayerApplyItemModsBefore (Player *, uint8, bool, uint8, uint32, int32 &)
 
virtual void OnPlayerApplyEnchantmentItemModsBefore (Player *, Item *, EnchantmentSlot, bool, uint32, uint32 &)
 
virtual void OnPlayerApplyWeaponDamage (Player *, uint8, ItemTemplate const *, float &, float &, uint8)
 
virtual bool OnPlayerCanArmorDamageModifier (Player *)
 
virtual void OnPlayerGetFeralApBonus (Player *, int32 &, int32, ItemTemplate const *, ScalingStatValuesEntry const *)
 
virtual bool OnPlayerCanApplyWeaponDependentAuraDamageMod (Player *, Item *, WeaponAttackType, AuraEffect const *, bool)
 
virtual bool OnPlayerCanApplyEquipSpell (Player *, SpellInfo const *, Item *, bool, bool)
 
virtual bool OnPlayerCanApplyEquipSpellsItemSet (Player *, ItemSetEffect *)
 
virtual bool OnPlayerCanCastItemCombatSpell (Player *, Unit *, WeaponAttackType, uint32, uint32, Item *, ItemTemplate const *)
 
virtual bool OnPlayerCanCastItemUseSpell (Player *, Item *, SpellCastTargets const &, uint8, uint32)
 
virtual void OnPlayerApplyAmmoBonuses (Player *, ItemTemplate const *, float &)
 
virtual bool OnPlayerCanEquipItem (Player *, uint8, uint16 &, Item *, bool, bool)
 
virtual bool OnPlayerCanUnequipItem (Player *, uint16, bool)
 
virtual bool OnPlayerCanUseItem (Player *, ItemTemplate const *, InventoryResult &)
 
virtual bool OnPlayerCanSaveEquipNewItem (Player *, Item *, uint16, bool)
 
virtual bool OnPlayerCanApplyEnchantment (Player *, Item *, EnchantmentSlot, bool, bool, bool)
 
virtual void OnPlayerGetQuestRate (Player *, float &)
 
virtual bool OnPlayerPassedQuestKilledMonsterCredit (Player *, Quest const *, uint32, uint32, ObjectGuid)
 
virtual bool OnPlayerCheckItemInSlotAtLoadInventory (Player *, Item *, uint8, uint8 &, uint16 &)
 
virtual bool OnPlayerNotAvoidSatisfy (Player *, DungeonProgressionRequirements const *, uint32, bool)
 
virtual bool OnPlayerNotVisibleGloballyFor (Player *, Player const *)
 
virtual void OnPlayerGetArenaPersonalRating (Player *, uint8, uint32 &)
 
virtual void OnPlayerGetArenaTeamId (Player *, uint8, uint32 &)
 
virtual void OnPlayerIsFFAPvP (Player *, bool &)
 
virtual void OnPlayerFfaPvpStateUpdate (Player *, bool)
 
virtual void OnPlayerIsPvP (Player *, bool &)
 
virtual void OnPlayerGetMaxSkillValueForLevel (Player *, uint16 &)
 
virtual bool OnPlayerNotSetArenaTeamInfoField (Player *, uint8, ArenaTeamInfoType, uint32)
 
virtual bool OnPlayerCanJoinLfg (Player *, uint8, std::set< uint32 > &, const std::string &)
 
virtual bool OnPlayerCanEnterMap (Player *, MapEntry const *, InstanceTemplate const *, MapDifficulty const *, bool)
 
virtual bool OnPlayerCanInitTrade (Player *, Player *)
 
virtual bool OnPlayerCanSetTradeItem (Player *, Item *, uint8)
 This hook called just before finishing the handling of the action of a player setting an item in a trade slot.
 
virtual void OnPlayerSetServerSideVisibility (Player *, ServerSideVisibilityType &, AccountTypes &)
 
virtual void OnPlayerSetServerSideVisibilityDetect (Player *, ServerSideVisibilityType &, AccountTypes &)
 
virtual void OnPlayerResurrect (Player *, float, bool)
 
virtual void OnPlayerBeforeChooseGraveyard (Player *, TeamId, bool, uint32 &)
 
virtual bool OnPlayerCanUseChat (Player *, uint32, uint32, std::string &)
 This hook called before player sending message in default chat.
 
virtual bool OnPlayerCanUseChat (Player *, uint32, uint32, std::string &, Player *)
 This hook called before player sending message to other player via private.
 
virtual bool OnPlayerCanUseChat (Player *, uint32, uint32, std::string &, Group *)
 This hook called before player sending message to group.
 
virtual bool OnPlayerCanUseChat (Player *, uint32, uint32, std::string &, Guild *)
 This hook called before player sending message to guild.
 
virtual bool OnPlayerCanUseChat (Player *, uint32, uint32, std::string &, Channel *)
 This hook called before player sending message to channel.
 
virtual void OnPlayerLearnTalents (Player *, uint32, uint32, uint32)
 This hook called after player learning talents.
 
virtual void OnPlayerEnterCombat (Player *, Unit *)
 This hook called after player entering combat.
 
virtual void OnPlayerLeaveCombat (Player *)
 This hook called after player leave combat.
 
virtual void OnPlayerQuestAbandon (Player *, uint32)
 This hook called after player abandoning quest.
 
virtual bool OnPlayerCanFlyInZone (Player *, uint32, uint32, SpellInfo const *)
 This hook called before other CanFlyChecks are applied.
 
virtual void AnticheatSetCanFlybyServer (Player *, bool)
 
virtual void AnticheatSetUnderACKmount (Player *)
 
virtual void AnticheatSetRootACKUpd (Player *)
 
virtual void AnticheatSetJumpingbyOpcode (Player *, bool)
 
virtual void AnticheatUpdateMovementInfo (Player *, MovementInfo const &)
 
virtual bool AnticheatHandleDoubleJump (Player *, Unit *)
 
virtual bool AnticheatCheckMovementInfo (Player *, MovementInfo const &, Unit *, bool)
 
virtual bool OnPlayerCanSendErrorAlreadyLooted (Player *)
 This hook is called, to avoid displaying the error message that the body has already been stripped.
 
virtual void OnPlayerAfterCreatureLoot (Player *)
 It is used when an item is taken from a creature.
 
virtual void OnPlayerAfterCreatureLootMoney (Player *)
 After a creature's money is taken.
 
virtual bool OnPlayerCanUpdateSkill (Player *, uint32)
 
virtual void OnPlayerBeforeUpdateSkill (Player *, uint32, uint32 &, uint32, uint32)
 
virtual void OnPlayerUpdateSkill (Player *, uint32, uint32, uint32, uint32, uint32)
 
virtual bool OnPlayerCanResurrect (Player *)
 This hook is called, to avoid player resurrect.
 
virtual bool OnPlayerCanGiveLevel (Player *, uint8)
 This hook is called, to cancel the normal level up flow.
 
virtual void OnPlayerSendListInventory (Player *, ObjectGuid, uint32 &)
 This hook is called whenever a player interacts with a vendor, and is then shown the vendor list.
 
- Public Member Functions inherited from ScriptObject
virtual bool IsDatabaseBound () const
 
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 
uint16 GetTotalAvailableHooks ()
 

Additional Inherited Members

- Protected Member Functions inherited from PlayerScript
 PlayerScript (const char *name, std::vector< uint16 > enabledHooks=std::vector< uint16 >())
 
- Protected Member Functions inherited from ScriptObject
 ScriptObject (const char *name, uint16 totalAvailableHooks=0)
 
virtual ~ScriptObject ()=default
 

Detailed Description

Constructor & Destructor Documentation

◆ CharacterActionIpLogger()

CharacterActionIpLogger::CharacterActionIpLogger ( )
inline
171 :
172 PlayerScript("CharacterActionIpLogger",
173 {
177 })
178 {
179 }
@ PLAYERHOOK_ON_LOGOUT
Definition PlayerScript.h:70
@ PLAYERHOOK_ON_CREATE
Definition PlayerScript.h:71
@ PLAYERHOOK_ON_LOGIN
Definition PlayerScript.h:68
Definition PlayerScript.h:217

References PLAYERHOOK_ON_CREATE, PLAYERHOOK_ON_LOGIN, and PLAYERHOOK_ON_LOGOUT.

Member Function Documentation

◆ CharacterIPLogAction()

void CharacterActionIpLogger::CharacterIPLogAction ( Player player,
IPLoggingTypes  aType 
)
inline

Logs a number of actions done by players with an IP.

209 {
210 if (!sWorld->getBoolConfig(CONFIG_IP_BASED_ACTION_LOGGING))
211 return;
212
213 // Action IP Logger is only intialized if config is set up
214 // Else, this script isn't loaded in the first place: We require no config check.
215
216 // We declare all the required variables
217 uint32 playerGuid = player->GetSession()->GetAccountId();
218 ObjectGuid::LowType characterGuid = player->GetGUID().GetCounter();
219 const std::string currentIp = player->GetSession()->GetRemoteAddress();
220 std::string systemNote = "ERROR"; // "ERROR" is a placeholder here. We change it...
221
222 // ... with this switch, so that we have a more accurate phrasing of what type it is
223 switch (aType)
224 {
225 case CHARACTER_CREATE:
226 systemNote = "Logged on CharacterCreate";
227 break;
228 case CHARACTER_LOGIN:
229 systemNote = "Logged on CharacterLogin";
230 break;
231 case CHARACTER_LOGOUT:
232 systemNote = "Logged on CharacterLogout";
233 break;
234 case CHARACTER_DELETE:
235 systemNote = "Logged on CharacterDelete";
236 break;
238 systemNote = "Logged on Failed CharacterDelete";
239 break;
240 // Neither should happen. Ever. Period. If it does, call Mythbusters.
241 case UNKNOWN_ACTION:
242 default:
243 systemNote = "ERROR! Unknown action!";
244 break;
245 }
246
247 // Once we have done everything, we can insert the new log.
249
250 stmt->SetData(0, playerGuid);
251 stmt->SetData(1, characterGuid);
252 stmt->SetData(2, aType);
253 stmt->SetData(3, currentIp.c_str()); // We query the ip here.
254 stmt->SetData(4, systemNote.c_str());
255 // Seeing as the time differences should be minimal, we do not get unixtime and the timestamp right now;
256 // Rather, we let it be added with the SQL query.
257
258 LoginDatabase.Execute(stmt);
259 return;
260 }
DatabaseWorkerPool< LoginDatabaseConnection > LoginDatabase
Accessor to the realm/login database.
Definition DatabaseEnv.cpp:22
std::uint32_t uint32
Definition Define.h:107
@ CONFIG_IP_BASED_ACTION_LOGGING
Definition IWorld.h:149
@ LOGIN_INS_CHAR_IP_LOGGING
Definition LoginDatabase.h:109
@ CHARACTER_DELETE
Definition action_ip_logger.cpp:39
@ CHARACTER_CREATE
Definition action_ip_logger.cpp:35
@ CHARACTER_LOGIN
Definition action_ip_logger.cpp:36
@ CHARACTER_LOGOUT
Definition action_ip_logger.cpp:37
@ UNKNOWN_ACTION
Definition action_ip_logger.cpp:42
@ CHARACTER_FAILED_DELETE
Definition action_ip_logger.cpp:40
LowType GetCounter() const
Definition ObjectGuid.h:145
uint32 LowType
Definition ObjectGuid.h:122
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:112
WorldSession * GetSession() const
Definition Player.h:2005
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition PreparedStatement.h:77
Definition PreparedStatement.h:157
uint32 GetAccountId() const
Definition WorldSession.h:375
std::string const & GetRemoteAddress()
Definition WorldSession.h:385
#define sWorld
Definition World.h:363

References CHARACTER_CREATE, CHARACTER_DELETE, CHARACTER_FAILED_DELETE, CHARACTER_LOGIN, CHARACTER_LOGOUT, CONFIG_IP_BASED_ACTION_LOGGING, WorldSession::GetAccountId(), ObjectGuid::GetCounter(), Object::GetGUID(), WorldSession::GetRemoteAddress(), Player::GetSession(), LOGIN_INS_CHAR_IP_LOGGING, LoginDatabase, PreparedStatementBase::SetData(), sWorld, and UNKNOWN_ACTION.

Referenced by OnPlayerCreate(), OnPlayerLogin(), and OnPlayerLogout().

◆ OnPlayerCreate()

void CharacterActionIpLogger::OnPlayerCreate ( Player player)
inlineoverridevirtual

Reimplemented from PlayerScript.

183 {
185 }
void CharacterIPLogAction(Player *player, IPLoggingTypes aType)
Logs a number of actions done by players with an IP.
Definition action_ip_logger.cpp:208

References CHARACTER_CREATE, and CharacterIPLogAction().

◆ OnPlayerLogin()

void CharacterActionIpLogger::OnPlayerLogin ( Player player)
inlineoverridevirtual

Reimplemented from PlayerScript.

189 {
191 }

References CHARACTER_LOGIN, and CharacterIPLogAction().

◆ OnPlayerLogout()

void CharacterActionIpLogger::OnPlayerLogout ( Player player)
inlineoverridevirtual

Reimplemented from PlayerScript.

195 {
197 }

References CHARACTER_LOGOUT, and CharacterIPLogAction().


The documentation for this class was generated from the following file: