Full Code of owlchester/kanka for AI

develop 6a00d9571154 cached
6286 files
28.5 MB
7.8M tokens
25518 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (31,362K chars total). Download the full file to get everything.
Repository: owlchester/kanka
Branch: develop
Commit: 6a00d9571154
Files: 6286
Total size: 28.5 MB

Directory structure:
gitextract_tqacef9c/

├── .claude/
│   ├── commands/
│   │   └── translate.md
│   └── skills/
│       ├── livewire-development/
│       │   └── SKILL.md
│       ├── pest-testing/
│       │   └── SKILL.md
│       └── tailwindcss-development/
│           └── SKILL.md
├── .dockerignore
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   └── workflows/
│       ├── claude.yml
│       ├── lint.yml
│       └── phpstan.yml
├── .gitignore
├── .jshintrc
├── .mariadb/
│   ├── 10-create-logs-database.sh
│   └── conf.d/
│       └── kanka.cnf
├── .mcp.json
├── .nginx/
│   └── thumbor.conf
├── .phpactor.json
├── CLAUDE.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── app/
│   ├── Auth/
│   │   └── PassportTokenGuard.php
│   ├── Console/
│   │   ├── Commands/
│   │   │   ├── Campaigns/
│   │   │   │   ├── CleanupCommand.php
│   │   │   │   ├── DeleteCommand.php
│   │   │   │   ├── DummyEntities.php
│   │   │   │   ├── ExportCommand.php
│   │   │   │   ├── ImportCommand.php
│   │   │   │   ├── PermissionsSyncCommand.php
│   │   │   │   ├── PopulateCommand.php
│   │   │   │   └── VisibileEntityCountCommand.php
│   │   │   ├── Cleanup/
│   │   │   │   ├── AnonymiseUserLogs.php
│   │   │   │   ├── CleanupEntityLogs.php
│   │   │   │   ├── CleanupImages.php
│   │   │   │   ├── CleanupTrashed.php
│   │   │   │   ├── CleanupTrashedCampaigns.php
│   │   │   │   └── CleanupUsers.php
│   │   │   ├── Entities/
│   │   │   │   ├── CalendarAdvancer.php
│   │   │   │   ├── ChildlessEntities.php
│   │   │   │   └── MapChunk.php
│   │   │   ├── InstallCommand.php
│   │   │   ├── Metrics/
│   │   │   │   └── MetricsGa4.php
│   │   │   ├── Migrations/
│   │   │   │   ├── BookmarkEntityType.php
│   │   │   │   ├── Cdn.php
│   │   │   │   ├── MigrateEntityStatuses.php
│   │   │   │   ├── MigrateStatusFilters.php
│   │   │   │   ├── MigrateSubMentions.php
│   │   │   │   └── NewsletterSubCommand.php
│   │   │   ├── Report/
│   │   │   │   ├── Accounts.php
│   │   │   │   ├── Churn.php
│   │   │   │   ├── Onboarding.php
│   │   │   │   └── Weekly.php
│   │   │   ├── SetupMeilisearch.php
│   │   │   ├── SubscriptionEndPaypalFix.php
│   │   │   ├── Subscriptions/
│   │   │   │   ├── EndFreeTrials.php
│   │   │   │   ├── EndSubscriptions.php
│   │   │   │   ├── ExpiringCardCommand.php
│   │   │   │   ├── PaypalExpiringCommand.php
│   │   │   │   └── SubCleanupCommand.php
│   │   │   ├── Tests/
│   │   │   │   ├── Mailerlite.php
│   │   │   │   ├── SendNotification.php
│   │   │   │   ├── SignImageCommand.php
│   │   │   │   ├── TestEmail.php
│   │   │   │   └── TestWhiteboards.php
│   │   │   ├── Translations/
│   │   │   │   └── Missing.php
│   │   │   ├── Users/
│   │   │   │   ├── OfferFreeTrial.php
│   │   │   │   ├── RegenerateDiscordToken.php
│   │   │   │   ├── ResetUserPassword.php
│   │   │   │   └── SyncUserRoles.php
│   │   │   ├── VerifyParentIds.php
│   │   │   └── WordCount.php
│   │   └── Kernel.php
│   ├── Datagrids/
│   │   ├── Actions/
│   │   │   ├── BookmarkDatagridActions.php
│   │   │   ├── DatagridActions.php
│   │   │   ├── DefaultDatagridActions.php
│   │   │   ├── DeprecatedDatagridActions.php
│   │   │   ├── HistoryActions.php
│   │   │   ├── NoDatagridActions.php
│   │   │   └── RelationDatagridActions.php
│   │   ├── Bulks/
│   │   │   ├── AbilityBulk.php
│   │   │   ├── AttributeTemplateBulk.php
│   │   │   ├── BookmarkBulk.php
│   │   │   ├── Bulk.php
│   │   │   ├── CalendarBulk.php
│   │   │   ├── CharacterBulk.php
│   │   │   ├── ConversationBulk.php
│   │   │   ├── CreatureBulk.php
│   │   │   ├── DefaultBulk.php
│   │   │   ├── DiceRollBulk.php
│   │   │   ├── EntityBulk.php
│   │   │   ├── EventBulk.php
│   │   │   ├── FamilyBulk.php
│   │   │   ├── ItemBulk.php
│   │   │   ├── JournalBulk.php
│   │   │   ├── LocationBulk.php
│   │   │   ├── MapBulk.php
│   │   │   ├── NoteBulk.php
│   │   │   ├── OrganisationBulk.php
│   │   │   ├── QuestBulk.php
│   │   │   ├── RaceBulk.php
│   │   │   ├── RelationBulk.php
│   │   │   ├── TagBulk.php
│   │   │   └── TimelineBulk.php
│   │   ├── Datagrid.php
│   │   ├── Filters/
│   │   │   ├── AbilityFilter.php
│   │   │   ├── AttributeTemplateFilter.php
│   │   │   ├── CalendarFilter.php
│   │   │   ├── CharacterFilter.php
│   │   │   ├── ConversationFilter.php
│   │   │   ├── CreatureFilter.php
│   │   │   ├── CustomEntityFilter.php
│   │   │   ├── DatagridFilter.php
│   │   │   ├── DiceRollFilter.php
│   │   │   ├── EventFilter.php
│   │   │   ├── FamilyFilter.php
│   │   │   ├── HistoryFilter.php
│   │   │   ├── ItemFilter.php
│   │   │   ├── JournalFilter.php
│   │   │   ├── LocationFilter.php
│   │   │   ├── MapFilter.php
│   │   │   ├── NoteFilter.php
│   │   │   ├── OrganisationFilter.php
│   │   │   ├── QuestFilter.php
│   │   │   ├── RaceFilter.php
│   │   │   ├── RelationFilter.php
│   │   │   ├── TagFilter.php
│   │   │   ├── TimelineFilter.php
│   │   │   └── WhiteboardFilter.php
│   │   └── Sorters/
│   │       ├── DatagridSorter.php
│   │       └── QuestElementSorter.php
│   ├── Definitions/
│   │   ├── CustomCssDefinitions.php
│   │   └── CustomDefinitions.php
│   ├── Enums/
│   │   ├── AppReleaseCategory.php
│   │   ├── ApplicationStatus.php
│   │   ├── AttributeType.php
│   │   ├── CampaignExportStatus.php
│   │   ├── CampaignFilterType.php
│   │   ├── CampaignFlags.php
│   │   ├── CampaignImportStatus.php
│   │   ├── CampaignVisibility.php
│   │   ├── CharacterStatus.php
│   │   ├── ConversationTarget.php
│   │   ├── Descendants.php
│   │   ├── EntityAssetType.php
│   │   ├── EntityEventTypes.php
│   │   ├── FeatureStatus.php
│   │   ├── FilterOption.php
│   │   ├── MapMarkerShape.php
│   │   ├── OrganisationMemberPin.php
│   │   ├── OrganisationMemberStatus.php
│   │   ├── Permission.php
│   │   ├── PricingPeriod.php
│   │   ├── QuestStatus.php
│   │   ├── ReferralEventType.php
│   │   ├── SpotlightContentStatus.php
│   │   ├── SpotlightStatus.php
│   │   ├── Tier.php
│   │   ├── UserAction.php
│   │   ├── UserFlags.php
│   │   ├── Visibility.php
│   │   ├── WebhookAction.php
│   │   └── Widget.php
│   ├── Events/
│   │   ├── AdminInviteCreated.php
│   │   ├── Campaigns/
│   │   │   ├── Applications/
│   │   │   │   ├── Accepted.php
│   │   │   │   └── Rejected.php
│   │   │   ├── Dashboards/
│   │   │   │   ├── DashboardCreated.php
│   │   │   │   ├── DashboardDeleted.php
│   │   │   │   └── DashboardUpdated.php
│   │   │   ├── Deleted.php
│   │   │   ├── EntityTypes/
│   │   │   │   ├── EntityTypeCreated.php
│   │   │   │   ├── EntityTypeDeleted.php
│   │   │   │   ├── EntityTypeToggled.php
│   │   │   │   └── EntityTypeUpdated.php
│   │   │   ├── Exports/
│   │   │   │   └── ExportCreated.php
│   │   │   ├── Followers/
│   │   │   │   ├── FollowerCreated.php
│   │   │   │   └── FollowerRemoved.php
│   │   │   ├── Invites/
│   │   │   │   ├── InviteCreated.php
│   │   │   │   └── InviteDeleted.php
│   │   │   ├── Members/
│   │   │   │   ├── RoleUserAdded.php
│   │   │   │   ├── RoleUserRemoved.php
│   │   │   │   ├── Switched.php
│   │   │   │   ├── UserJoined.php
│   │   │   │   └── UserLeft.php
│   │   │   ├── Plugins/
│   │   │   │   ├── PluginDeleted.php
│   │   │   │   ├── PluginImported.php
│   │   │   │   └── PluginUpdated.php
│   │   │   ├── Roles/
│   │   │   │   ├── RoleCreated.php
│   │   │   │   ├── RoleDeleted.php
│   │   │   │   └── RoleUpdated.php
│   │   │   ├── Saved.php
│   │   │   ├── SettingsSaved.php
│   │   │   ├── Sidebar/
│   │   │   │   ├── SidebarReset.php
│   │   │   │   └── SidebarSaved.php
│   │   │   ├── Styles/
│   │   │   │   ├── StyleCreated.php
│   │   │   │   ├── StyleDeleted.php
│   │   │   │   └── StyleUpdated.php
│   │   │   ├── Thumbnails/
│   │   │   │   ├── ThumbnailCreated.php
│   │   │   │   ├── ThumbnailDeleted.php
│   │   │   │   └── ThumbnailsDeleted.php
│   │   │   ├── Updated.php
│   │   │   └── Webhooks/
│   │   │       ├── WebhookCreated.php
│   │   │       ├── WebhookDeleted.php
│   │   │       ├── WebhookTested.php
│   │   │       └── WebhookUpdated.php
│   │   ├── Entities/
│   │   │   └── EntityRestored.php
│   │   ├── FeatureCreated.php
│   │   ├── Posts/
│   │   │   ├── PostCreated.php
│   │   │   ├── PostDeleted.php
│   │   │   ├── PostRestored.php
│   │   │   └── PostUpdated.php
│   │   ├── SpotlightSubmitted.php
│   │   ├── Subscriptions/
│   │   │   ├── AutoRemove.php
│   │   │   ├── Boost.php
│   │   │   ├── Disable.php
│   │   │   ├── Premium.php
│   │   │   ├── SuperBoost.php
│   │   │   └── Upgrade.php
│   │   ├── Users/
│   │   │   └── EmailChanged.php
│   │   ├── WhiteboardUpdated.php
│   │   └── Whiteboards/
│   │       └── Updated.php
│   ├── Exceptions/
│   │   ├── Campaign/
│   │   │   ├── AlreadyBoostedException.php
│   │   │   ├── ExhaustedBoostsException.php
│   │   │   ├── ExhaustedSuperboostsException.php
│   │   │   └── ImportException.php
│   │   ├── Handler.php
│   │   ├── OpenAiException.php
│   │   ├── RequireLoginException.php
│   │   └── TranslatableException.php
│   ├── Facades/
│   │   ├── AdCache.php
│   │   ├── ApiLog.php
│   │   ├── Attributes.php
│   │   ├── Avatar.php
│   │   ├── BookmarkCache.php
│   │   ├── Breadcrumb.php
│   │   ├── CampaignCache.php
│   │   ├── CampaignLocalization.php
│   │   ├── CharacterCache.php
│   │   ├── Dashboard.php
│   │   ├── DataLayer.php
│   │   ├── Datagrid.php
│   │   ├── Domain.php
│   │   ├── EntityAssetCache.php
│   │   ├── EntityCache.php
│   │   ├── EntityLogger.php
│   │   ├── EntityPermission.php
│   │   ├── FormCopy.php
│   │   ├── Identity.php
│   │   ├── Images.php
│   │   ├── Img.php
│   │   ├── ImportIdMapper.php
│   │   ├── Limit.php
│   │   ├── MapMarkerCache.php
│   │   ├── MarketplaceCache.php
│   │   ├── Mentions.php
│   │   ├── Module.php
│   │   ├── Permissions.php
│   │   ├── QuestCache.php
│   │   ├── ReleaseCache.php
│   │   ├── RolePermission.php
│   │   ├── SingleUserCache.php
│   │   ├── TimelineElementCache.php
│   │   ├── UserCache.php
│   │   └── UserPermission.php
│   ├── Http/
│   │   ├── Controllers/
│   │   │   ├── Abilities/
│   │   │   │   ├── AbilityController.php
│   │   │   │   └── EntityController.php
│   │   │   ├── Account/
│   │   │   │   ├── Billing/
│   │   │   │   │   └── InformationController.php
│   │   │   │   ├── DeleteController.php
│   │   │   │   ├── EmailController.php
│   │   │   │   ├── PasswordController.php
│   │   │   │   └── SocialController.php
│   │   │   ├── Api/
│   │   │   │   ├── Public/
│   │   │   │   │   ├── CampaignController.php
│   │   │   │   │   ├── HallOfFameController.php
│   │   │   │   │   ├── KbController.php
│   │   │   │   │   ├── ShowcaseController.php
│   │   │   │   │   └── VoteController.php
│   │   │   │   └── v1/
│   │   │   │       ├── AbilityApiController.php
│   │   │   │       ├── ApiController.php
│   │   │   │       ├── ApplicationApiController.php
│   │   │   │       ├── AttributeTemplateApiController.php
│   │   │   │       ├── BookmarkApiController.php
│   │   │   │       ├── CalendarApiController.php
│   │   │   │       ├── CalendarEventApiController.php
│   │   │   │       ├── CalendarWeatherApiController.php
│   │   │   │       ├── Calendars/
│   │   │   │       │   └── AdvancerApiController.php
│   │   │   │       ├── CampaignApiController.php
│   │   │   │       ├── CampaignDashboardWidgetApiController.php
│   │   │   │       ├── CampaignImageApiController.php
│   │   │   │       ├── CampaignRoleApiController.php
│   │   │   │       ├── CampaignStyleApiController.php
│   │   │   │       ├── Campaigns/
│   │   │   │       │   ├── CategoryStatusController.php
│   │   │   │       │   ├── EntityTypeApiController.php
│   │   │   │       │   └── UserApiController.php
│   │   │   │       ├── CharacterApiController.php
│   │   │   │       ├── ConversationApiController.php
│   │   │   │       ├── ConversationMessageApiController.php
│   │   │   │       ├── ConversationParticipantApiController.php
│   │   │   │       ├── CreatureApiController.php
│   │   │   │       ├── DefaultThumbnailApiController.php
│   │   │   │       ├── DiceRollApiController.php
│   │   │   │       ├── Entities/
│   │   │   │       │   ├── Attributes/
│   │   │   │       │   │   ├── PatchController.php
│   │   │   │       │   │   └── PutController.php
│   │   │   │       │   └── ReminderApiController.php
│   │   │   │       ├── EntityAbilityApiController.php
│   │   │   │       ├── EntityApiController.php
│   │   │   │       ├── EntityArchiveApiController.php
│   │   │   │       ├── EntityAssetApiController.php
│   │   │   │       ├── EntityAttributeApiController.php
│   │   │   │       ├── EntityImageApiController.php
│   │   │   │       ├── EntityInventoryApiController.php
│   │   │   │       ├── EntityMentionApiController.php
│   │   │   │       ├── EntityMoveApiController.php
│   │   │   │       ├── EntityPermissionApiController.php
│   │   │   │       ├── EntityRecoveryApiController.php
│   │   │   │       ├── EntityRelationApiController.php
│   │   │   │       ├── EntityTagApiController.php
│   │   │   │       ├── EntityTemplateApiController.php
│   │   │   │       ├── EntityTransformApiController.php
│   │   │   │       ├── EntityTypeApiController.php
│   │   │   │       ├── EventApiController.php
│   │   │   │       ├── FamilyApiController.php
│   │   │   │       ├── FamilyTreeApiController.php
│   │   │   │       ├── FilterApiController.php
│   │   │   │       ├── FullTextSearchApiController.php
│   │   │   │       ├── HealthController.php
│   │   │   │       ├── ItemApiController.php
│   │   │   │       ├── JournalApiController.php
│   │   │   │       ├── LocationApiController.php
│   │   │   │       ├── MapApiController.php
│   │   │   │       ├── MapGroupApiController.php
│   │   │   │       ├── MapLayerApiController.php
│   │   │   │       ├── MapMarkerApiController.php
│   │   │   │       ├── MiscApiController.php
│   │   │   │       ├── NoteApiController.php
│   │   │   │       ├── OrganisationApiController.php
│   │   │   │       ├── OrganisationMemberApiController.php
│   │   │   │       ├── PostApiController.php
│   │   │   │       ├── PostLayoutApiController.php
│   │   │   │       ├── PostRecoveryApiController.php
│   │   │   │       ├── ProfileApiController.php
│   │   │   │       ├── QuestApiController.php
│   │   │   │       ├── QuestElementApiController.php
│   │   │   │       ├── RaceApiController.php
│   │   │   │       ├── RecentEntityApiController.php
│   │   │   │       ├── RelationApiController.php
│   │   │   │       ├── ReminderApiController.php
│   │   │   │       ├── SearchApiController.php
│   │   │   │       ├── TagApiController.php
│   │   │   │       ├── TimelineApiController.php
│   │   │   │       ├── TimelineElementApiController.php
│   │   │   │       ├── TimelineEraApiController.php
│   │   │   │       └── VisibilityController.php
│   │   │   ├── Attributes/
│   │   │   │   └── ApiController.php
│   │   │   ├── Auth/
│   │   │   │   ├── AuthController.php
│   │   │   │   ├── ConfirmPasswordController.php
│   │   │   │   ├── ForgotPasswordController.php
│   │   │   │   ├── LoginController.php
│   │   │   │   ├── RegisterController.php
│   │   │   │   ├── ResetPasswordController.php
│   │   │   │   └── VerificationController.php
│   │   │   ├── Billing/
│   │   │   │   ├── HistoryController.php
│   │   │   │   └── PaymentMethodController.php
│   │   │   ├── Bookmarks/
│   │   │   │   ├── RandomController.php
│   │   │   │   └── ReorderController.php
│   │   │   ├── Bragi/
│   │   │   │   └── BragiController.php
│   │   │   ├── BulkController.php
│   │   │   ├── Bulks/
│   │   │   │   ├── BatchController.php
│   │   │   │   ├── CopyController.php
│   │   │   │   ├── DeleteController.php
│   │   │   │   ├── DeleteRelationController.php
│   │   │   │   ├── PermissionController.php
│   │   │   │   ├── PrintController.php
│   │   │   │   ├── TemplateController.php
│   │   │   │   └── TransformController.php
│   │   │   ├── Calendar/
│   │   │   │   └── CalendarWeatherController.php
│   │   │   ├── Calendars/
│   │   │   │   ├── Bulks/
│   │   │   │   │   └── EntityEventController.php
│   │   │   │   └── EventController.php
│   │   │   ├── Campaign/
│   │   │   │   ├── AchievementController.php
│   │   │   │   ├── ApplicationController.php
│   │   │   │   ├── ApplicationDashboardController.php
│   │   │   │   ├── ApplicationSetupController.php
│   │   │   │   ├── ApplyController.php
│   │   │   │   ├── CreateController.php
│   │   │   │   ├── CssController.php
│   │   │   │   ├── DashboardController.php
│   │   │   │   ├── DashboardHeaderController.php
│   │   │   │   ├── DashboardWidgetController.php
│   │   │   │   ├── DefaultImageController.php
│   │   │   │   ├── DefaultsController.php
│   │   │   │   ├── DeleteController.php
│   │   │   │   ├── EntityTypeController.php
│   │   │   │   ├── ExportController.php
│   │   │   │   ├── FollowController.php
│   │   │   │   ├── ImageController.php
│   │   │   │   ├── ImportController.php
│   │   │   │   ├── InviteController.php
│   │   │   │   ├── LeaveController.php
│   │   │   │   ├── LogController.php
│   │   │   │   ├── MemberController.php
│   │   │   │   ├── Members/
│   │   │   │   │   └── RoleController.php
│   │   │   │   ├── ModuleController.php
│   │   │   │   ├── PluginController.php
│   │   │   │   ├── Plugins/
│   │   │   │   │   ├── BulkController.php
│   │   │   │   │   ├── CssController.php
│   │   │   │   │   ├── ImportController.php
│   │   │   │   │   ├── ToggleController.php
│   │   │   │   │   └── UpdateController.php
│   │   │   │   ├── RecoveryController.php
│   │   │   │   ├── RoleController.php
│   │   │   │   ├── RoleUserController.php
│   │   │   │   ├── ShareController.php
│   │   │   │   ├── SidebarController.php
│   │   │   │   ├── StatController.php
│   │   │   │   ├── StyleController.php
│   │   │   │   ├── ThemeBuilderController.php
│   │   │   │   ├── UserController.php
│   │   │   │   ├── VanityController.php
│   │   │   │   ├── VisibilityController.php
│   │   │   │   ├── WebController.php
│   │   │   │   └── WebhookController.php
│   │   │   ├── CampaignBoostController.php
│   │   │   ├── Characters/
│   │   │   │   ├── Families/
│   │   │   │   │   └── ManagementController.php
│   │   │   │   ├── MemberController.php
│   │   │   │   ├── MembershipController.php
│   │   │   │   └── Races/
│   │   │   │       └── ManagementController.php
│   │   │   ├── ConfirmController.php
│   │   │   ├── Controller.php
│   │   │   ├── ConversationMessageController.php
│   │   │   ├── ConversationParticipantController.php
│   │   │   ├── CookieConsentController.php
│   │   │   ├── Creatures/
│   │   │   │   └── CreatureController.php
│   │   │   ├── Crud/
│   │   │   │   ├── AbilityController.php
│   │   │   │   ├── AttributeTemplateController.php
│   │   │   │   ├── BookmarkController.php
│   │   │   │   ├── CalendarController.php
│   │   │   │   ├── CampaignController.php
│   │   │   │   ├── CharacterController.php
│   │   │   │   ├── ConversationController.php
│   │   │   │   ├── CreatureController.php
│   │   │   │   ├── DiceRollController.php
│   │   │   │   ├── EventController.php
│   │   │   │   ├── FamilyController.php
│   │   │   │   ├── ItemController.php
│   │   │   │   ├── JournalController.php
│   │   │   │   ├── LocationController.php
│   │   │   │   ├── MapController.php
│   │   │   │   ├── NoteController.php
│   │   │   │   ├── OrganisationController.php
│   │   │   │   ├── QuestController.php
│   │   │   │   ├── RaceController.php
│   │   │   │   ├── TagController.php
│   │   │   │   └── TimelineController.php
│   │   │   ├── CrudController.php
│   │   │   ├── DashboardController.php
│   │   │   ├── Dashboards/
│   │   │   │   ├── GettingStartedController.php
│   │   │   │   └── SetupController.php
│   │   │   ├── Datagrid2/
│   │   │   │   └── BulkControllerTrait.php
│   │   │   ├── Datagrids/
│   │   │   │   └── SubscriptionController.php
│   │   │   ├── DiceRolls/
│   │   │   │   └── ResultsController.php
│   │   │   ├── EditingController.php
│   │   │   ├── Entities/
│   │   │   │   ├── Apis/
│   │   │   │   │   └── DocumentController.php
│   │   │   │   ├── ChildrenController.php
│   │   │   │   ├── CreateController.php
│   │   │   │   ├── DeleteController.php
│   │   │   │   ├── EditController.php
│   │   │   │   ├── IndexController.php
│   │   │   │   └── ListingPreferenceController.php
│   │   │   ├── Entity/
│   │   │   │   ├── Abilities/
│   │   │   │   │   ├── ApiController.php
│   │   │   │   │   ├── ChargeController.php
│   │   │   │   │   ├── ImportController.php
│   │   │   │   │   └── ReorderController.php
│   │   │   │   ├── AbilityController.php
│   │   │   │   ├── ArchiveController.php
│   │   │   │   ├── AssetController.php
│   │   │   │   ├── AttributeController.php
│   │   │   │   ├── AttributeTemplateController.php
│   │   │   │   ├── Attributes/
│   │   │   │   │   ├── ApiController.php
│   │   │   │   │   ├── LiveApiController.php
│   │   │   │   │   └── LiveController.php
│   │   │   │   ├── Connections/
│   │   │   │   │   ├── MapController.php
│   │   │   │   │   └── TableController.php
│   │   │   │   ├── CopyInventoryController.php
│   │   │   │   ├── EntryController.php
│   │   │   │   ├── ExportController.php
│   │   │   │   ├── GenerateInventoryController.php
│   │   │   │   ├── ImageController.php
│   │   │   │   ├── Inventory/
│   │   │   │   │   └── DetailController.php
│   │   │   │   ├── InventoryController.php
│   │   │   │   ├── InventorySectionController.php
│   │   │   │   ├── LogController.php
│   │   │   │   ├── MentionController.php
│   │   │   │   ├── MoveController.php
│   │   │   │   ├── PermissionController.php
│   │   │   │   ├── PostController.php
│   │   │   │   ├── Posts/
│   │   │   │   │   ├── LayoutController.php
│   │   │   │   │   ├── LogController.php
│   │   │   │   │   ├── MoveController.php
│   │   │   │   │   ├── TemplateController.php
│   │   │   │   │   └── VisibilityController.php
│   │   │   │   ├── PreviewController.php
│   │   │   │   ├── PrivacyController.php
│   │   │   │   ├── ProfileController.php
│   │   │   │   ├── RelationController.php
│   │   │   │   ├── ReminderController.php
│   │   │   │   ├── ShareController.php
│   │   │   │   ├── ShowController.php
│   │   │   │   ├── StoryController.php
│   │   │   │   ├── TagController.php
│   │   │   │   ├── TemplateController.php
│   │   │   │   ├── TooltipController.php
│   │   │   │   └── TransformController.php
│   │   │   ├── EntityCreatorController.php
│   │   │   ├── Events/
│   │   │   │   └── EventController.php
│   │   │   ├── Facebook/
│   │   │   │   └── DeletionController.php
│   │   │   ├── Families/
│   │   │   │   ├── FamilyController.php
│   │   │   │   ├── MemberController.php
│   │   │   │   ├── TreeController.php
│   │   │   │   └── Trees/
│   │   │   │       └── ApiController.php
│   │   │   ├── Filters/
│   │   │   │   ├── FormController.php
│   │   │   │   └── SaveController.php
│   │   │   ├── Front/
│   │   │   │   └── HelperController.php
│   │   │   ├── FrontendPrepareController.php
│   │   │   ├── Gallery/
│   │   │   │   ├── BrowseController.php
│   │   │   │   ├── CreateController.php
│   │   │   │   ├── DeleteController.php
│   │   │   │   ├── ImageController.php
│   │   │   │   ├── SearchController.php
│   │   │   │   ├── SetupController.php
│   │   │   │   ├── ShowController.php
│   │   │   │   ├── TiptapController.php
│   │   │   │   ├── UpdateController.php
│   │   │   │   ├── UploadController.php
│   │   │   │   └── VisibilityController.php
│   │   │   ├── GalleryController.php
│   │   │   ├── HealthController.php
│   │   │   ├── HistoryController.php
│   │   │   ├── HomeController.php
│   │   │   ├── InvitationController.php
│   │   │   ├── Items/
│   │   │   │   ├── EntityController.php
│   │   │   │   └── ItemController.php
│   │   │   ├── Journals/
│   │   │   │   └── JournalController.php
│   │   │   ├── Layout/
│   │   │   │   └── NavigationController.php
│   │   │   ├── Locations/
│   │   │   │   ├── CharacterController.php
│   │   │   │   ├── EventController.php
│   │   │   │   ├── LocationController.php
│   │   │   │   └── QuestController.php
│   │   │   ├── Maps/
│   │   │   │   ├── Bulks/
│   │   │   │   │   ├── GroupController.php
│   │   │   │   │   ├── LayerController.php
│   │   │   │   │   └── MarkerController.php
│   │   │   │   ├── ExploreController.php
│   │   │   │   ├── GroupController.php
│   │   │   │   ├── LayerController.php
│   │   │   │   ├── Layers/
│   │   │   │   │   └── MigrateController.php
│   │   │   │   ├── MapController.php
│   │   │   │   ├── MarkerController.php
│   │   │   │   ├── Markers/
│   │   │   │   │   ├── DetailController.php
│   │   │   │   │   └── MoveController.php
│   │   │   │   ├── PreviewController.php
│   │   │   │   └── Reorders/
│   │   │   │       ├── GroupController.php
│   │   │   │       └── LayerController.php
│   │   │   ├── Notes/
│   │   │   │   └── NoteController.php
│   │   │   ├── NotificationController.php
│   │   │   ├── Onboarding/
│   │   │   │   └── InitialController.php
│   │   │   ├── Organisation/
│   │   │   │   ├── MemberController.php
│   │   │   │   └── OrganisationController.php
│   │   │   ├── Passport/
│   │   │   │   └── ClientController.php
│   │   │   ├── PasswordSecurityController.php
│   │   │   ├── PayPalController.php
│   │   │   ├── PresetController.php
│   │   │   ├── Quests/
│   │   │   │   ├── ElementController.php
│   │   │   │   └── QuestController.php
│   │   │   ├── Races/
│   │   │   │   ├── MemberController.php
│   │   │   │   └── RaceController.php
│   │   │   ├── ReferralController.php
│   │   │   ├── RelationController.php
│   │   │   ├── ReminderUpdateController.php
│   │   │   ├── Roadmap/
│   │   │   │   ├── FeatureController.php
│   │   │   │   └── RoadmapController.php
│   │   │   ├── Search/
│   │   │   │   ├── AttributeController.php
│   │   │   │   ├── CalendarController.php
│   │   │   │   ├── CampaignController.php
│   │   │   │   ├── FullTextController.php
│   │   │   │   ├── GameSystemSearchController.php
│   │   │   │   ├── ImageController.php
│   │   │   │   ├── ListController.php
│   │   │   │   ├── LiveController.php
│   │   │   │   ├── MapGroupController.php
│   │   │   │   ├── MarkerController.php
│   │   │   │   ├── MentionController.php
│   │   │   │   ├── RecentController.php
│   │   │   │   └── TemplateController.php
│   │   │   ├── SearchController.php
│   │   │   ├── Settings/
│   │   │   │   ├── AccountController.php
│   │   │   │   ├── ApiController.php
│   │   │   │   ├── AppearanceController.php
│   │   │   │   ├── Apps/
│   │   │   │   │   └── DiscordController.php
│   │   │   │   ├── AppsController.php
│   │   │   │   ├── BoostController.php
│   │   │   │   ├── BragiController.php
│   │   │   │   ├── ClientController.php
│   │   │   │   ├── NewsletterApiController.php
│   │   │   │   ├── NewsletterController.php
│   │   │   │   ├── PatreonController.php
│   │   │   │   ├── PremiumController.php
│   │   │   │   ├── ProfileController.php
│   │   │   │   ├── ReferralController.php
│   │   │   │   ├── ReleaseController.php
│   │   │   │   ├── Subscription/
│   │   │   │   │   ├── CancellationController.php
│   │   │   │   │   ├── CancelledController.php
│   │   │   │   │   ├── FinishController.php
│   │   │   │   │   └── FreeTrialController.php
│   │   │   │   ├── SubscriptionApiController.php
│   │   │   │   ├── SubscriptionController.php
│   │   │   │   └── TutorialController.php
│   │   │   ├── SetupController.php
│   │   │   ├── Spotlights/
│   │   │   │   └── ApplicationController.php
│   │   │   ├── Subscription/
│   │   │   │   └── PayPal/
│   │   │   │       └── RenewalController.php
│   │   │   ├── Summernote/
│   │   │   │   └── GalleryController.php
│   │   │   ├── Tags/
│   │   │   │   ├── ChildController.php
│   │   │   │   ├── PostController.php
│   │   │   │   ├── TagController.php
│   │   │   │   └── TransferController.php
│   │   │   ├── Templates/
│   │   │   │   └── LoadController.php
│   │   │   ├── Timelines/
│   │   │   │   ├── TimelineController.php
│   │   │   │   ├── TimelineElementController.php
│   │   │   │   ├── TimelineEraController.php
│   │   │   │   └── TimelineReorderController.php
│   │   │   ├── TroubleshootingController.php
│   │   │   ├── User/
│   │   │   │   ├── EmailValidationController.php
│   │   │   │   └── ProfileController.php
│   │   │   ├── WebhookController.php
│   │   │   ├── Whiteboards/
│   │   │   │   ├── ApiController.php
│   │   │   │   ├── CrudController.php
│   │   │   │   └── DrawController.php
│   │   │   └── Widgets/
│   │   │       └── CalendarWidgetController.php
│   │   ├── Kernel.php
│   │   ├── Middleware/
│   │   │   ├── Adless.php
│   │   │   ├── ApiLogMiddleware.php
│   │   │   ├── CachedResponse.php
│   │   │   ├── Campaigns/
│   │   │   │   ├── Boosted.php
│   │   │   │   ├── Premium.php
│   │   │   │   └── Superboosted.php
│   │   │   ├── CheckIfUserBanned.php
│   │   │   ├── EncryptCookies.php
│   │   │   ├── HttpsProtocol.php
│   │   │   ├── Identity.php
│   │   │   ├── LastCampaign.php
│   │   │   ├── LocaleChange.php
│   │   │   ├── LocalizeDatetime.php
│   │   │   ├── LoginRedirect.php
│   │   │   ├── OTP.php
│   │   │   ├── PasswordConfirm.php
│   │   │   ├── RedirectIfAuthenticated.php
│   │   │   ├── ReplicationSwitcher.php
│   │   │   ├── Subscriptions.php
│   │   │   ├── Tracking.php
│   │   │   ├── Translator.php
│   │   │   ├── TrimStrings.php
│   │   │   ├── TrustProxies.php
│   │   │   └── VerifyCsrfToken.php
│   │   ├── Requests/
│   │   │   ├── API/
│   │   │   │   ├── PatchEntity.php
│   │   │   │   ├── StoreEntities.php
│   │   │   │   ├── StoreReminder.php
│   │   │   │   ├── UpdateUserRole.php
│   │   │   │   └── UploadEntityImage.php
│   │   │   ├── AddCalendarEvent.php
│   │   │   ├── AddCalendarWeather.php
│   │   │   ├── ApplyAttributeTemplate.php
│   │   │   ├── BragiRequest.php
│   │   │   ├── BulkRequest.php
│   │   │   ├── Bulks/
│   │   │   │   ├── Copy.php
│   │   │   │   ├── Template.php
│   │   │   │   └── Transform.php
│   │   │   ├── Campaigns/
│   │   │   │   ├── ApproveApplication.php
│   │   │   │   ├── DefaultImageDestroy.php
│   │   │   │   ├── DefaultImageStore.php
│   │   │   │   ├── DestroyDefaultThumbnail.php
│   │   │   │   ├── GalleryImageFolderStore.php
│   │   │   │   ├── GalleryImageStore.php
│   │   │   │   ├── GalleryImageUpdate.php
│   │   │   │   ├── PatchCampaignApplication.php
│   │   │   │   ├── RejectApplication.php
│   │   │   │   ├── StoreCampaignApplication.php
│   │   │   │   ├── StoreCampaignApplicationStatus.php
│   │   │   │   ├── StoreCampaignSetup.php
│   │   │   │   ├── StoreCampaignVisibility.php
│   │   │   │   ├── StoreDefaultThumbnail.php
│   │   │   │   ├── StoreDefaults.php
│   │   │   │   ├── StoreImage.php
│   │   │   │   ├── StoreTheme.php
│   │   │   │   └── Vanity.php
│   │   │   ├── CopyEntityToCampaignRequest.php
│   │   │   ├── CopyInventory.php
│   │   │   ├── DeleteCampaign.php
│   │   │   ├── DeleteEntityType.php
│   │   │   ├── DeleteSettingsAccount.php
│   │   │   ├── EditPostVisibility.php
│   │   │   ├── Entities/
│   │   │   │   └── UpdateListingPreferenceRequest.php
│   │   │   ├── FilterPublicCampaignRequest.php
│   │   │   ├── Front/
│   │   │   │   └── StoreCommunityEventEntry.php
│   │   │   ├── Gallery/
│   │   │   │   ├── CreateFolder.php
│   │   │   │   ├── DeleteImages.php
│   │   │   │   ├── MoveFiles.php
│   │   │   │   ├── UpdateFile.php
│   │   │   │   ├── UpdateFiles.php
│   │   │   │   ├── UpdateFocus.php
│   │   │   │   ├── UploadFile.php
│   │   │   │   ├── UploadFiles.php
│   │   │   │   └── UploadUrl.php
│   │   │   ├── GalleryBulkDelete.php
│   │   │   ├── GenerateInventory.php
│   │   │   ├── HistoryRequest.php
│   │   │   ├── ManageFamilies.php
│   │   │   ├── ManageRaces.php
│   │   │   ├── MoveEntity.php
│   │   │   ├── MoveEntityRequest.php
│   │   │   ├── MovePostRequest.php
│   │   │   ├── Onboarding/
│   │   │   │   └── InitialRequest.php
│   │   │   ├── PermissionTestRequest.php
│   │   │   ├── QuickCreator/
│   │   │   │   ├── StoreEntity.php
│   │   │   │   └── StorePost.php
│   │   │   ├── ReadBanner.php
│   │   │   ├── RecoverEntity.php
│   │   │   ├── RecoverPost.php
│   │   │   ├── RenameEntityFile.php
│   │   │   ├── ReorderAbility.php
│   │   │   ├── ReorderBookmarks.php
│   │   │   ├── ReorderGroups.php
│   │   │   ├── ReorderLayers.php
│   │   │   ├── ReorderStories.php
│   │   │   ├── ReorderStyles.php
│   │   │   ├── ReorderTimeline.php
│   │   │   ├── SaveAttributes.php
│   │   │   ├── SaveAttributesApi.php
│   │   │   ├── SaveUserHelp.php
│   │   │   ├── Search/
│   │   │   │   └── MentionRequest.php
│   │   │   ├── Settings/
│   │   │   │   ├── NewsletterStore.php
│   │   │   │   ├── StoreApiToken.php
│   │   │   │   ├── StoreClient.php
│   │   │   │   ├── UserAltSubscribeStore.php
│   │   │   │   ├── UserBillingStore.php
│   │   │   │   └── UserSubscribeStore.php
│   │   │   ├── Spotlights/
│   │   │   │   └── ApplyRequest.php
│   │   │   ├── StoreAbility.php
│   │   │   ├── StoreAbilityEntity.php
│   │   │   ├── StoreAttribute.php
│   │   │   ├── StoreAttributeTemplate.php
│   │   │   ├── StoreBillingSettings.php
│   │   │   ├── StoreBookmark.php
│   │   │   ├── StoreCalendar.php
│   │   │   ├── StoreCampaign.php
│   │   │   ├── StoreCampaignDashboard.php
│   │   │   ├── StoreCampaignDashboardWidget.php
│   │   │   ├── StoreCampaignInvite.php
│   │   │   ├── StoreCampaignRole.php
│   │   │   ├── StoreCampaignRoleUser.php
│   │   │   ├── StoreCampaignStyle.php
│   │   │   ├── StoreCampaignTheme.php
│   │   │   ├── StoreCampaignUser.php
│   │   │   ├── StoreCharacter.php
│   │   │   ├── StoreCharacterFamily.php
│   │   │   ├── StoreCharacterOrganisation.php
│   │   │   ├── StoreCharacterRace.php
│   │   │   ├── StoreConversation.php
│   │   │   ├── StoreConversationMessage.php
│   │   │   ├── StoreConversationParticipant.php
│   │   │   ├── StoreCreature.php
│   │   │   ├── StoreCustomEntity.php
│   │   │   ├── StoreDiceRoll.php
│   │   │   ├── StoreEntityAbility.php
│   │   │   ├── StoreEntityAlias.php
│   │   │   ├── StoreEntityAsset.php
│   │   │   ├── StoreEntityAssets.php
│   │   │   ├── StoreEntityFile.php
│   │   │   ├── StoreEntityLink.php
│   │   │   ├── StoreEntityPermission.php
│   │   │   ├── StoreEntityTag.php
│   │   │   ├── StoreEntityType.php
│   │   │   ├── StoreEvent.php
│   │   │   ├── StoreFamily.php
│   │   │   ├── StoreFamilyTree.php
│   │   │   ├── StoreFeature.php
│   │   │   ├── StoreImageFocus.php
│   │   │   ├── StoreInventory.php
│   │   │   ├── StoreItem.php
│   │   │   ├── StoreJournal.php
│   │   │   ├── StoreLocation.php
│   │   │   ├── StoreMap.php
│   │   │   ├── StoreMapGroup.php
│   │   │   ├── StoreMapLayer.php
│   │   │   ├── StoreMapMarker.php
│   │   │   ├── StoreMarketplaceProfile.php
│   │   │   ├── StoreNote.php
│   │   │   ├── StoreOrganisation.php
│   │   │   ├── StoreOrganisationMember.php
│   │   │   ├── StoreOrganisationMembers.php
│   │   │   ├── StorePermission.php
│   │   │   ├── StorePost.php
│   │   │   ├── StorePreset.php
│   │   │   ├── StoreQuest.php
│   │   │   ├── StoreQuestElement.php
│   │   │   ├── StoreRace.php
│   │   │   ├── StoreRelation.php
│   │   │   ├── StoreSettingsAccount.php
│   │   │   ├── StoreSettingsAccountEmail.php
│   │   │   ├── StoreSettingsLayout.php
│   │   │   ├── StoreSettingsProfile.php
│   │   │   ├── StoreShare.php
│   │   │   ├── StoreTag.php
│   │   │   ├── StoreTagEntity.php
│   │   │   ├── StoreTimeline.php
│   │   │   ├── StoreTimelineElement.php
│   │   │   ├── StoreTimelineEra.php
│   │   │   ├── StoreWebhook.php
│   │   │   ├── StoreWhiteboard.php
│   │   │   ├── SubscriptionCancel.php
│   │   │   ├── TransferTag.php
│   │   │   ├── TransformEntity.php
│   │   │   ├── TransformEntityRequest.php
│   │   │   ├── Translation/
│   │   │   │   └── StoreFaqTranslationRequest.php
│   │   │   ├── UpdateAttribute.php
│   │   │   ├── UpdateCalendarEvent.php
│   │   │   ├── UpdateCampaign.php
│   │   │   ├── UpdateCampaignHeader.php
│   │   │   ├── UpdateEntityAbility.php
│   │   │   ├── UpdateEntityAttribute.php
│   │   │   ├── UpdateEntityEntry.php
│   │   │   ├── UpdateEntityFile.php
│   │   │   ├── UpdateEntityImage.php
│   │   │   ├── UpdateEntityTags.php
│   │   │   ├── UpdateInventory.php
│   │   │   ├── UpdateModuleName.php
│   │   │   ├── UpdateRelation.php
│   │   │   ├── UpdateUserRoles.php
│   │   │   ├── ValidateCoupon.php
│   │   │   ├── ValidatePledge.php
│   │   │   ├── ValidateReminderLength.php
│   │   │   └── Whiteboards/
│   │   │       ├── CreateRequest.php
│   │   │       ├── CreateStrokeRequest.php
│   │   │       ├── StoreShapeRequest.php
│   │   │       ├── UpdateRequest.php
│   │   │       └── UpdateShapeRequest.php
│   │   ├── Resources/
│   │   │   ├── AbilityResource.php
│   │   │   ├── Api/
│   │   │   │   ├── CategoryStatusResource.php
│   │   │   │   ├── DefaultEntityTypeResource.php
│   │   │   │   ├── EntityImagesResource.php
│   │   │   │   └── EntityTagResource.php
│   │   │   ├── ApiEntityTagResource.php
│   │   │   ├── ApiExclusion.php
│   │   │   ├── ApiSync.php
│   │   │   ├── ApplicationResource.php
│   │   │   ├── AttributeResource.php
│   │   │   ├── AttributeTemplateResource.php
│   │   │   ├── Attributes/
│   │   │   │   └── LiveAttributeResource.php
│   │   │   ├── BookmarkResource.php
│   │   │   ├── CalendarResource.php
│   │   │   ├── CalendarWeatherResource.php
│   │   │   ├── CampaignDashboardWidgetResource.php
│   │   │   ├── CampaignResource.php
│   │   │   ├── CampaignStyleResource.php
│   │   │   ├── CampaignUserResource.php
│   │   │   ├── CampaignUserRoleResource.php
│   │   │   ├── CategoryStatusResource.php
│   │   │   ├── CharacterOrganisationResource.php
│   │   │   ├── CharacterResource.php
│   │   │   ├── CharacterTraitResource.php
│   │   │   ├── Conversation/
│   │   │   │   ├── ConversationMessageResource.php
│   │   │   │   └── ConversationResource.php
│   │   │   ├── ConversationMessageResource.php
│   │   │   ├── ConversationParticipantResource.php
│   │   │   ├── ConversationResource.php
│   │   │   ├── CreatureResource.php
│   │   │   ├── DiceRollResource.php
│   │   │   ├── Entities/
│   │   │   │   ├── ExploreResource.php
│   │   │   │   └── TemplateResource.php
│   │   │   ├── Entity.php
│   │   │   ├── EntityAbilityResource.php
│   │   │   ├── EntityAssetResource.php
│   │   │   ├── EntityChild.php
│   │   │   ├── EntityDefaultThumbnailResource.php
│   │   │   ├── EntityMentionResource.php
│   │   │   ├── EntityPermissionResource.php
│   │   │   ├── EntityResource.php
│   │   │   ├── EntityTagResource.php
│   │   │   ├── EntityTypeResource.php
│   │   │   ├── EventResource.php
│   │   │   ├── FamilyResource.php
│   │   │   ├── FamilyTreeResource.php
│   │   │   ├── Gallery/
│   │   │   │   └── Tiptap/
│   │   │   │       └── ImageResource.php
│   │   │   ├── GalleryFile.php
│   │   │   ├── GalleryFileFull.php
│   │   │   ├── ImageResource.php
│   │   │   ├── InventoryResource.php
│   │   │   ├── ItemResource.php
│   │   │   ├── JournalResource.php
│   │   │   ├── KankaCollection.php
│   │   │   ├── LocationResource.php
│   │   │   ├── MapGroupResource.php
│   │   │   ├── MapLayerResource.php
│   │   │   ├── MapMarkerResource.php
│   │   │   ├── MapResource.php
│   │   │   ├── ModelResource.php
│   │   │   ├── NoteResource.php
│   │   │   ├── OrganisationMemberResource.php
│   │   │   ├── OrganisationResource.php
│   │   │   ├── PostLayoutResource.php
│   │   │   ├── PostPermissionResource.php
│   │   │   ├── PostResource.php
│   │   │   ├── ProfileResource.php
│   │   │   ├── Public/
│   │   │   │   └── CampaignResource.php
│   │   │   ├── QuestElementResource.php
│   │   │   ├── QuestResource.php
│   │   │   ├── RaceResource.php
│   │   │   ├── RelationResource.php
│   │   │   ├── ReminderResource.php
│   │   │   ├── TagResource.php
│   │   │   ├── TimelineElementResource.php
│   │   │   ├── TimelineEraResource.php
│   │   │   ├── TimelineResource.php
│   │   │   ├── UserResource.php
│   │   │   ├── VisibilityResource.php
│   │   │   ├── VoteResource.php
│   │   │   ├── Web/
│   │   │   │   └── EntityResource.php
│   │   │   └── Whiteboards/
│   │   │       ├── EntityResource.php
│   │   │       ├── ShapeResource.php
│   │   │       └── StrokeResource.php
│   │   └── Validators/
│   │       └── HashValidator.php
│   ├── Jobs/
│   │   ├── CalendarsClearElapsed.php
│   │   ├── CampaignRoleUserJob.php
│   │   ├── Campaigns/
│   │   │   ├── Delete.php
│   │   │   ├── Export.php
│   │   │   ├── Hide.php
│   │   │   ├── Import.php
│   │   │   ├── ImportCsv.php
│   │   │   ├── NotifyAdmins.php
│   │   │   └── Populate.php
│   │   ├── ChunkMapJob.php
│   │   ├── Copyright/
│   │   │   ├── DeleteCampaignImage.php
│   │   │   ├── DeleteEntityImage.php
│   │   │   └── DeleteUserImage.php
│   │   ├── DeletedCampaignCleanupJob.php
│   │   ├── Discord/
│   │   │   ├── AdminInviteJob.php
│   │   │   ├── ReportJob.php
│   │   │   ├── SendNewFeature.php
│   │   │   └── UpdateFeatureUpvotes.php
│   │   ├── DiscordRoleJob.php
│   │   ├── Emails/
│   │   │   ├── EmailChangeJob.php
│   │   │   ├── MailSettingsChangeJob.php
│   │   │   ├── Purge/
│   │   │   │   ├── FirstWarningJob.php
│   │   │   │   └── SecondWarningJob.php
│   │   │   ├── SubscriptionCancelEmailJob.php
│   │   │   ├── SubscriptionCreatedEmailJob.php
│   │   │   ├── SubscriptionDeletedEmailJob.php
│   │   │   ├── SubscriptionDowngradedEmailJob.php
│   │   │   ├── SubscriptionFailedEmailJob.php
│   │   │   ├── Subscriptions/
│   │   │   │   ├── Admin/
│   │   │   │   │   └── PaypalRenewedJob.php
│   │   │   │   ├── Converted.php
│   │   │   │   ├── EmailValidationJob.php
│   │   │   │   ├── ExpiringCardAlert.php
│   │   │   │   ├── PaypalExpiringAlert.php
│   │   │   │   ├── UpcomingYearlyAlert.php
│   │   │   │   └── WelcomeSubscriptionEmailJob.php
│   │   │   ├── TrialAcceptedEmailJob.php
│   │   │   └── WelcomeEmailJob.php
│   │   ├── EntityMappingJob.php
│   │   ├── EntityUpdatedJob.php
│   │   ├── EntityWebhookJob.php
│   │   ├── FileCleanup.php
│   │   ├── ResetCssCache.php
│   │   ├── Roadmap/
│   │   │   └── DiscordFeatureJob.php
│   │   ├── Spotlight/
│   │   │   └── DiscordSpotlightJob.php
│   │   ├── SubscriptionEndJob.php
│   │   ├── TestWebhookJob.php
│   │   └── Users/
│   │       ├── AbandonedCart.php
│   │       ├── DeleteUser.php
│   │       ├── NewPassword.php
│   │       ├── UnsubscribeUser.php
│   │       ├── UnsyncDiscord.php
│   │       └── UpdateEmail.php
│   ├── Listeners/
│   │   ├── Campaigns/
│   │   │   ├── Admins/
│   │   │   │   └── Notify.php
│   │   │   ├── Applications/
│   │   │   │   └── LogApplication.php
│   │   │   ├── Campaigns/
│   │   │   │   └── LogCampaign.php
│   │   │   ├── ClearCampaignCache.php
│   │   │   ├── ClearCampaignThemeCache.php
│   │   │   ├── ClearCampaignUsersSaved.php
│   │   │   ├── Dashboards/
│   │   │   │   └── LogDashboard.php
│   │   │   ├── EntityTypes/
│   │   │   │   └── LogEntityType.php
│   │   │   ├── Exports/
│   │   │   │   └── LogExport.php
│   │   │   ├── Invites/
│   │   │   │   └── LogInvite.php
│   │   │   ├── Members/
│   │   │   │   ├── LogMember.php
│   │   │   │   ├── LogUserRoleChanged.php
│   │   │   │   └── RunRoleUserJob.php
│   │   │   ├── Plugins/
│   │   │   │   ├── ClearThemeCache.php
│   │   │   │   └── LogPlugin.php
│   │   │   ├── Roles/
│   │   │   │   └── LogRole.php
│   │   │   ├── Sidebar/
│   │   │   │   └── LogSidebar.php
│   │   │   ├── Styles/
│   │   │   │   ├── ClearStylesCache.php
│   │   │   │   └── LogStyle.php
│   │   │   ├── Thumbnails/
│   │   │   │   ├── LogThumbnail.php
│   │   │   │   └── LogThumbnails.php
│   │   │   └── Webhooks/
│   │   │       └── LogWebhook.php
│   │   ├── Entities/
│   │   │   └── LogEntity.php
│   │   ├── Posts/
│   │   │   └── LogPost.php
│   │   ├── SendAdminInviteNotification.php
│   │   ├── SendFeatureNotification.php
│   │   ├── SendSpotlightNotification.php
│   │   ├── UserEventSubscriber.php
│   │   └── Users/
│   │       ├── ClearUserCache.php
│   │       ├── SendEmailUpdate.php
│   │       └── Subscriptions/
│   │           └── LogPremium.php
│   ├── Livewire/
│   │   ├── Campaigns/
│   │   │   ├── CsvImport.php
│   │   │   ├── ExportsTable.php
│   │   │   └── Tags.php
│   │   ├── EntityListing.php
│   │   ├── Roadmap/
│   │   │   ├── Form.php
│   │   │   ├── Ideas.php
│   │   │   └── Upvote.php
│   │   ├── Roadmap.php
│   │   ├── Users/
│   │   │   └── Otp.php
│   │   └── Widgets/
│   │       ├── GalleryCarousel.php
│   │       └── RandomEntity.php
│   ├── Mail/
│   │   ├── Admin/
│   │   │   └── Subscriptions/
│   │   │       └── ConvertedMail.php
│   │   ├── Purge/
│   │   │   ├── FirstWarning.php
│   │   │   └── SecondWarning.php
│   │   ├── Subscription/
│   │   │   ├── Admin/
│   │   │   │   ├── CancelledSubscriptionMail.php
│   │   │   │   ├── DowngradedSubscriptionMail.php
│   │   │   │   ├── NewSubscriptionMail.php
│   │   │   │   ├── NewTrialAcceptedMail.php
│   │   │   │   └── PaypalRenewedMail.php
│   │   │   └── User/
│   │   │       ├── CancelledUserSubscriptionMail.php
│   │   │       ├── EmailChangeMail.php
│   │   │       ├── ExpiringCardEmail.php
│   │   │       ├── FailedUserSubscriptionMail.php
│   │   │       ├── NewElementalSubscriptionMail.php
│   │   │       ├── NewSubscriberMail.php
│   │   │       ├── PaypalExpiringMail.php
│   │   │       ├── UpcomingYearlyEmail.php
│   │   │       └── ValidationEmail.php
│   │   ├── Users/
│   │   │   └── NewPassword.php
│   │   └── WelcomeEmail.php
│   ├── Models/
│   │   ├── Ability.php
│   │   ├── Ad.php
│   │   ├── AdminInvite.php
│   │   ├── ApiLog.php
│   │   ├── AppRelease.php
│   │   ├── Application.php
│   │   ├── Attribute.php
│   │   ├── AttributeTemplate.php
│   │   ├── Bookmark.php
│   │   ├── BragiLog.php
│   │   ├── Calendar.php
│   │   ├── CalendarWeather.php
│   │   ├── Campaign.php
│   │   ├── CampaignBoost.php
│   │   ├── CampaignDashboard.php
│   │   ├── CampaignDashboardRole.php
│   │   ├── CampaignDashboardWidget.php
│   │   ├── CampaignDashboardWidgetTag.php
│   │   ├── CampaignDescription.php
│   │   ├── CampaignEvent.php
│   │   ├── CampaignExport.php
│   │   ├── CampaignFilter.php
│   │   ├── CampaignFlag.php
│   │   ├── CampaignFollower.php
│   │   ├── CampaignGenre.php
│   │   ├── CampaignImport.php
│   │   ├── CampaignInvite.php
│   │   ├── CampaignPermission.php
│   │   ├── CampaignPlugin.php
│   │   ├── CampaignRole.php
│   │   ├── CampaignRoleUser.php
│   │   ├── CampaignSetting.php
│   │   ├── CampaignStyle.php
│   │   ├── CampaignSystem.php
│   │   ├── CampaignUser.php
│   │   ├── CategoryStatus.php
│   │   ├── Character.php
│   │   ├── CharacterFamily.php
│   │   ├── CharacterOrganisation.php
│   │   ├── CharacterRace.php
│   │   ├── CharacterTrait.php
│   │   ├── CommunityEvent.php
│   │   ├── CommunityEventEntry.php
│   │   ├── CommunityVote.php
│   │   ├── CommunityVoteBallot.php
│   │   ├── Concerns/
│   │   │   ├── Acl.php
│   │   │   ├── Blameable.php
│   │   │   ├── Boosted.php
│   │   │   ├── CampaignLimit.php
│   │   │   ├── CompositeKey.php
│   │   │   ├── Copiable.php
│   │   │   ├── EntityAsset.php
│   │   │   ├── EntityLogs.php
│   │   │   ├── EntityType.php
│   │   │   ├── HasCampaign.php
│   │   │   ├── HasEntity.php
│   │   │   ├── HasEntry.php
│   │   │   ├── HasFilters.php
│   │   │   ├── HasImage.php
│   │   │   ├── HasLocation.php
│   │   │   ├── HasLocations.php
│   │   │   ├── HasMentions.php
│   │   │   ├── HasReminder.php
│   │   │   ├── HasSlug.php
│   │   │   ├── HasSuggestions.php
│   │   │   ├── HasUser.php
│   │   │   ├── HasVisibility.php
│   │   │   ├── LastSync.php
│   │   │   ├── Orderable.php
│   │   │   ├── Paginatable.php
│   │   │   ├── Privatable.php
│   │   │   ├── Purifiable.php
│   │   │   ├── Sanitizable.php
│   │   │   ├── Searchable.php
│   │   │   ├── SimpleSortableTrait.php
│   │   │   ├── Sortable.php
│   │   │   ├── SortableTrait.php
│   │   │   ├── Taggable.php
│   │   │   ├── Templatable.php
│   │   │   ├── TouchSilently.php
│   │   │   ├── UserBoosters.php
│   │   │   └── UserTokens.php
│   │   ├── Conversation.php
│   │   ├── ConversationMessage.php
│   │   ├── ConversationParticipant.php
│   │   ├── Creature.php
│   │   ├── DiceRoll.php
│   │   ├── DiceRollResult.php
│   │   ├── Entity.php
│   │   ├── EntityAbility.php
│   │   ├── EntityAsset.php
│   │   ├── EntityEventType.php
│   │   ├── EntityListingPreference.php
│   │   ├── EntityLocation.php
│   │   ├── EntityLog.php
│   │   ├── EntityMention.php
│   │   ├── EntityTag.php
│   │   ├── EntityType.php
│   │   ├── EntityUser.php
│   │   ├── Event.php
│   │   ├── Family.php
│   │   ├── FamilyTree.php
│   │   ├── Faq.php
│   │   ├── FaqCategory.php
│   │   ├── FaqTranslation.php
│   │   ├── Feature.php
│   │   ├── FeatureCategory.php
│   │   ├── FeatureFile.php
│   │   ├── FeatureStatus.php
│   │   ├── FeatureUpvote.php
│   │   ├── FeatureVote.php
│   │   ├── GameSystem.php
│   │   ├── Genre.php
│   │   ├── Image.php
│   │   ├── ImageMention.php
│   │   ├── Inventory.php
│   │   ├── Item.php
│   │   ├── ItemCreator.php
│   │   ├── JobLog.php
│   │   ├── Journal.php
│   │   ├── Location.php
│   │   ├── Map.php
│   │   ├── MapGroup.php
│   │   ├── MapLayer.php
│   │   ├── MapMarker.php
│   │   ├── MiscModel.php
│   │   ├── Note.php
│   │   ├── Notification.php
│   │   ├── OTPAuthentication.php
│   │   ├── Organisation.php
│   │   ├── OrganisationMember.php
│   │   ├── PasswordSecurity.php
│   │   ├── Playstyle.php
│   │   ├── Pledge.php
│   │   ├── Plugin.php
│   │   ├── PluginType.php
│   │   ├── PluginVersion.php
│   │   ├── PluginVersionEntity.php
│   │   ├── Post.php
│   │   ├── PostLayout.php
│   │   ├── PostPermission.php
│   │   ├── PostTag.php
│   │   ├── Preset.php
│   │   ├── PresetType.php
│   │   ├── Quest.php
│   │   ├── QuestElement.php
│   │   ├── Race.php
│   │   ├── Referral.php
│   │   ├── ReferralEvent.php
│   │   ├── Relation.php
│   │   ├── Relations/
│   │   │   ├── CalendarRelations.php
│   │   │   ├── CampaignRelations.php
│   │   │   ├── EntityRelations.php
│   │   │   └── UserRelations.php
│   │   ├── Reminder.php
│   │   ├── Role.php
│   │   ├── Scopes/
│   │   │   ├── AclScope.php
│   │   │   ├── CalendarWeatherScopes.php
│   │   │   ├── CampaignScope.php
│   │   │   ├── CampaignScopes.php
│   │   │   ├── CommunityEventScopes.php
│   │   │   ├── CommunityVoteScopes.php
│   │   │   ├── EntityAssetScopes.php
│   │   │   ├── EntityEventScopes.php
│   │   │   ├── EntityScopes.php
│   │   │   ├── Pinnable.php
│   │   │   ├── PrivateScope.php
│   │   │   ├── SubEntityScopes.php
│   │   │   ├── TagScopes.php
│   │   │   ├── UserScope.php
│   │   │   └── VisibilityIDScope.php
│   │   ├── Spotlight.php
│   │   ├── SpotlightContent.php
│   │   ├── SubscriptionCancellation.php
│   │   ├── SubscriptionSource.php
│   │   ├── Tag.php
│   │   ├── Theme.php
│   │   ├── Tier.php
│   │   ├── TierPrice.php
│   │   ├── Timeline.php
│   │   ├── TimelineElement.php
│   │   ├── TimelineEra.php
│   │   ├── User.php
│   │   ├── UserApp.php
│   │   ├── UserFlag.php
│   │   ├── UserLog.php
│   │   ├── UserRole.php
│   │   ├── UserSetting.php
│   │   ├── UserValidation.php
│   │   ├── Users/
│   │   │   └── Tutorial.php
│   │   ├── Visibility.php
│   │   ├── Webhook.php
│   │   ├── Whiteboard.php
│   │   ├── WhiteboardShape.php
│   │   └── WhiteboardStroke.php
│   ├── Notifications/
│   │   └── Header.php
│   ├── Observers/
│   │   ├── AdminInviteObserver.php
│   │   ├── ApplicationObserver.php
│   │   ├── BlameableObserver.php
│   │   ├── BookmarkObserver.php
│   │   ├── CalendarObserver.php
│   │   ├── CampaignDashboardObserver.php
│   │   ├── CampaignDashboardRoleObserver.php
│   │   ├── CampaignDashboardWidgetObserver.php
│   │   ├── CampaignDescriptionObserver.php
│   │   ├── CampaignExportObserver.php
│   │   ├── CampaignFollowerObserver.php
│   │   ├── CampaignInviteObserver.php
│   │   ├── CampaignObserver.php
│   │   ├── CampaignPluginObserver.php
│   │   ├── CampaignRoleObserver.php
│   │   ├── CampaignRoleUserObserver.php
│   │   ├── CampaignSettingObserver.php
│   │   ├── CampaignStyleObserver.php
│   │   ├── CampaignUserObserver.php
│   │   ├── ChildEntityObserver.php
│   │   ├── Concerns/
│   │   │   └── HasMany.php
│   │   ├── ConversationMessageObserver.php
│   │   ├── ConversationObserver.php
│   │   ├── DiceRollObserver.php
│   │   ├── DiceRollResultObserver.php
│   │   ├── EntityAbilityObserver.php
│   │   ├── EntityAssetObserver.php
│   │   ├── EntityLogObserver.php
│   │   ├── EntityObserver.php
│   │   ├── EntityTypeObserver.php
│   │   ├── EntryObserver.php
│   │   ├── FamilyTreeObserver.php
│   │   ├── FeatureObserver.php
│   │   ├── ImageObserver.php
│   │   ├── ImageableObserver.php
│   │   ├── InventoryObserver.php
│   │   ├── MapGroupObserver.php
│   │   ├── MapLayerObserver.php
│   │   ├── MapMarkerObserver.php
│   │   ├── MapObserver.php
│   │   ├── OrganisationMemberObserver.php
│   │   ├── PostObserver.php
│   │   ├── PresetObserver.php
│   │   ├── PurifiableObserver.php
│   │   ├── PurifiableTrait.php
│   │   ├── QuestElementObserver.php
│   │   ├── Remindable.php
│   │   ├── ReminderObserver.php
│   │   ├── ReorderTrait.php
│   │   ├── SanitizedObserver.php
│   │   ├── SlugObserver.php
│   │   ├── SuggestionObserver.php
│   │   ├── TaggableObserver.php
│   │   ├── TimelineElementObserver.php
│   │   ├── TimelineEraObserver.php
│   │   ├── UserLogObserver.php
│   │   ├── UserObserver.php
│   │   ├── VisibilityObserver.php
│   │   ├── WebhookObserver.php
│   │   └── WhiteboardShapeObserver.php
│   ├── Policies/
│   │   ├── AbilityPolicy.php
│   │   ├── AttributeTemplatePolicy.php
│   │   ├── BookmarkPolicy.php
│   │   ├── CalendarPolicy.php
│   │   ├── CampaignBoostPolicy.php
│   │   ├── CampaignPluginPolicy.php
│   │   ├── CampaignPolicy.php
│   │   ├── CampaignRolePolicy.php
│   │   ├── CampaignRoleUserPolicy.php
│   │   ├── CampaignStylePolicy.php
│   │   ├── CampaignUserPolicy.php
│   │   ├── CharacterPolicy.php
│   │   ├── ClientPolicy.php
│   │   ├── CommunityEventEntryPolicy.php
│   │   ├── CommunityVotePolicy.php
│   │   ├── ConversationMessagePolicy.php
│   │   ├── ConversationPolicy.php
│   │   ├── CreaturePolicy.php
│   │   ├── DiceRollPolicy.php
│   │   ├── EntityPolicy.php
│   │   ├── EntityTypePolicy.php
│   │   ├── EventPolicy.php
│   │   ├── FamilyPolicy.php
│   │   ├── FeaturePolicy.php
│   │   ├── ImagePolicy.php
│   │   ├── ItemPolicy.php
│   │   ├── JournalPolicy.php
│   │   ├── LocationPolicy.php
│   │   ├── MapGroupPolicy.php
│   │   ├── MapLayerPolicy.php
│   │   ├── MapMarkerPolicy.php
│   │   ├── MapPolicy.php
│   │   ├── MiscPolicy.php
│   │   ├── NotePolicy.php
│   │   ├── OrganisationMemberPolicy.php
│   │   ├── OrganisationPolicy.php
│   │   ├── PluginPolicy.php
│   │   ├── PostPolicy.php
│   │   ├── QuestPolicy.php
│   │   ├── RacePolicy.php
│   │   ├── RelationPolicy.php
│   │   ├── ReminderPolicy.php
│   │   ├── TagPolicy.php
│   │   ├── TimelineEraPolicy.php
│   │   ├── TimelinePolicy.php
│   │   ├── TokenPolicy.php
│   │   ├── UserPolicy.php
│   │   ├── WebhookPolicy.php
│   │   └── WhiteboardPolicy.php
│   ├── Providers/
│   │   ├── AppServiceProvider.php
│   │   ├── AttributesServiceProvider.php
│   │   ├── AuthServiceProvider.php
│   │   ├── AvatarServiceProvider.php
│   │   ├── BreadcrumbServiceProvider.php
│   │   ├── BroadcastServiceProvider.php
│   │   ├── CacheServiceProvider.php
│   │   ├── CampaignLocalizationServiceProvider.php
│   │   ├── DashboardServiceProvider.php
│   │   ├── DatagridRendererProvider.php
│   │   ├── DatalayerServiceProvider.php
│   │   ├── DomainServiceProvider.php
│   │   ├── EntitySetupServiceProvider.php
│   │   ├── EventServiceProvider.php
│   │   ├── FormCopyServiceProvider.php
│   │   ├── IdentityServiceProvider.php
│   │   ├── ImgServiceProvider.php
│   │   ├── ImporterServiceProvider.php
│   │   ├── LimitServiceProvider.php
│   │   ├── Logs/
│   │   │   └── ApiLogServiceProvider.php
│   │   ├── MentionsServiceProvider.php
│   │   ├── ModuleServiceProvider.php
│   │   ├── PermissionsServiceProvider.php
│   │   └── RouteServiceProvider.php
│   ├── Renderers/
│   │   ├── CalendarRenderer.php
│   │   ├── CharacterSheets/
│   │   │   ├── Blade.php
│   │   │   ├── Custom.php
│   │   │   └── Renderer.php
│   │   ├── DatagridRenderer.php
│   │   ├── DatagridRenderer2.php
│   │   └── Layouts/
│   │       ├── Ability/
│   │       │   ├── Ability.php
│   │       │   └── Entity.php
│   │       ├── Calendar/
│   │       │   └── Reminder.php
│   │       ├── Campaign/
│   │       │   ├── CampaignImport.php
│   │       │   ├── CampaignRole.php
│   │       │   ├── CampaignUser.php
│   │       │   ├── Plugin.php
│   │       │   ├── PostRecovery.php
│   │       │   ├── Recovery.php
│   │       │   ├── Theme.php
│   │       │   └── Webhook.php
│   │       ├── Character/
│   │       │   └── Organisation.php
│   │       ├── Columns/
│   │       │   ├── Action.php
│   │       │   ├── Checkbox.php
│   │       │   ├── Column.php
│   │       │   └── Standard.php
│   │       ├── Creature/
│   │       │   └── Creature.php
│   │       ├── Entity/
│   │       │   ├── Children.php
│   │       │   ├── Relation.php
│   │       │   └── Reminder.php
│   │       ├── Event/
│   │       │   └── Event.php
│   │       ├── Family/
│   │       │   ├── Character.php
│   │       │   └── Family.php
│   │       ├── Header.php
│   │       ├── Item/
│   │       │   ├── Entity.php
│   │       │   └── Item.php
│   │       ├── Journal/
│   │       │   └── Journal.php
│   │       ├── Layout.php
│   │       ├── Location/
│   │       │   ├── Character.php
│   │       │   ├── Event.php
│   │       │   ├── Location.php
│   │       │   └── Quest.php
│   │       ├── Map/
│   │       │   ├── Group.php
│   │       │   ├── Layer.php
│   │       │   ├── Map.php
│   │       │   └── Marker.php
│   │       ├── Mention/
│   │       │   └── Mention.php
│   │       ├── Note/
│   │       │   └── Note.php
│   │       ├── Organisation/
│   │       │   ├── Member.php
│   │       │   └── Organisation.php
│   │       ├── Quest/
│   │       │   └── Quest.php
│   │       ├── Race/
│   │       │   ├── Character.php
│   │       │   └── Race.php
│   │       ├── Tag/
│   │       │   ├── Entity.php
│   │       │   ├── Post.php
│   │       │   └── Tag.php
│   │       └── Timeline/
│   │           ├── Era.php
│   │           └── Timeline.php
│   ├── Rules/
│   │   ├── AccountEmail.php
│   │   ├── AccountName.php
│   │   ├── ApiUniqueAttributeNames.php
│   │   ├── CalendarFormat.php
│   │   ├── CalendarMoonOffset.php
│   │   ├── CampaignDelete.php
│   │   ├── Confirm.php
│   │   ├── EntityField.php
│   │   ├── EntityFile.php
│   │   ├── EntityLink.php
│   │   ├── FontAwesomeIcon.php
│   │   ├── GallerySize.php
│   │   ├── GoodBye.php
│   │   ├── Lessless.php
│   │   ├── Location.php
│   │   ├── Nested.php
│   │   ├── Recaptcha.php
│   │   ├── SocialLogin.php
│   │   ├── UniqueAttributeNames.php
│   │   └── Vanity.php
│   ├── Sanitizers/
│   │   ├── CalendarSanitizer.php
│   │   ├── MiscSanitizer.php
│   │   └── SvgAllowedAttributes.php
│   ├── Services/
│   │   ├── Abilities/
│   │   │   ├── AbilityService.php
│   │   │   ├── BaseAbilityService.php
│   │   │   ├── ChargeService.php
│   │   │   ├── ImportService.php
│   │   │   └── ReorderService.php
│   │   ├── Account/
│   │   │   └── DeletionService.php
│   │   ├── Api/
│   │   │   ├── ApiPermissionService.php
│   │   │   ├── ApiService.php
│   │   │   ├── BulkAttributeService.php
│   │   │   ├── BulkEntityCreatorService.php
│   │   │   ├── CampaignService.php
│   │   │   ├── FilterService.php
│   │   │   ├── KbService.php
│   │   │   ├── ShowcaseService.php
│   │   │   └── VoteService.php
│   │   ├── AttributeMentionService.php
│   │   ├── AttributeService.php
│   │   ├── Attributes/
│   │   │   ├── ApiService.php
│   │   │   ├── BaseAttributesService.php
│   │   │   ├── RandomService.php
│   │   │   └── TemplateService.php
│   │   ├── Auth/
│   │   │   ├── LoginService.php
│   │   │   └── SessionService.php
│   │   ├── BookmarkService.php
│   │   ├── Bookmarks/
│   │   │   ├── RandomEntityService.php
│   │   │   └── RoutingService.php
│   │   ├── Bragi/
│   │   │   ├── BragiService.php
│   │   │   └── OpenAiService.php
│   │   ├── BreadcrumbService.php
│   │   ├── BulkService.php
│   │   ├── Caches/
│   │   │   ├── AdCacheService.php
│   │   │   ├── BaseCache.php
│   │   │   ├── BookmarkCacheService.php
│   │   │   ├── CampaignCacheService.php
│   │   │   ├── CharacterCacheService.php
│   │   │   ├── EntityAssetCacheService.php
│   │   │   ├── EntityCacheService.php
│   │   │   ├── MapMarkerCacheService.php
│   │   │   ├── MarketplaceCacheService.php
│   │   │   ├── QuestCacheService.php
│   │   │   ├── ReleaseCacheService.php
│   │   │   ├── SingleUserCacheService.php
│   │   │   ├── TimelineElementCacheService.php
│   │   │   ├── Traits/
│   │   │   │   ├── Campaign/
│   │   │   │   │   ├── ApplicationCache.php
│   │   │   │   │   ├── DashboardCache.php
│   │   │   │   │   ├── FlagCache.php
│   │   │   │   │   ├── MemberCache.php
│   │   │   │   │   ├── RoleCache.php
│   │   │   │   │   ├── SettingCache.php
│   │   │   │   │   ├── StyleCache.php
│   │   │   │   │   ├── ThemeCache.php
│   │   │   │   │   └── ThumbnailCache.php
│   │   │   │   ├── PrimaryCache.php
│   │   │   │   └── User/
│   │   │   │       ├── CampaignCache.php
│   │   │   │       ├── RoleCache.php
│   │   │   │       ├── TutorialCache.php
│   │   │   │       └── UserFlagCache.php
│   │   │   └── UserCacheService.php
│   │   ├── CalendarService.php
│   │   ├── Calendars/
│   │   │   ├── AdvancerService.php
│   │   │   ├── DaysService.php
│   │   │   ├── MoonService.php
│   │   │   ├── ReminderService.php
│   │   │   ├── SeasonService.php
│   │   │   └── WeatherService.php
│   │   ├── Campaign/
│   │   │   ├── AchievementService.php
│   │   │   ├── ApplicationService.php
│   │   │   ├── BoostService.php
│   │   │   ├── Connections/
│   │   │   │   └── WebService.php
│   │   │   ├── Counters/
│   │   │   │   └── VisibleEntityCountService.php
│   │   │   ├── CreateService.php
│   │   │   ├── DefaultImageService.php
│   │   │   ├── DeletionService.php
│   │   │   ├── ExportService.php
│   │   │   ├── Exports/
│   │   │   │   └── QueueService.php
│   │   │   ├── FollowService.php
│   │   │   ├── Gallery/
│   │   │   │   └── BulkService.php
│   │   │   ├── GenreService.php
│   │   │   ├── Import/
│   │   │   │   ├── ImportIdMapper.php
│   │   │   │   ├── ImportMentions.php
│   │   │   │   ├── ImportService.php
│   │   │   │   ├── Mappers/
│   │   │   │   │   ├── AbilityMapper.php
│   │   │   │   │   ├── BaseEntityMapper.php
│   │   │   │   │   ├── CalendarMapper.php
│   │   │   │   │   ├── CampaignMapper.php
│   │   │   │   │   ├── CharacterMapper.php
│   │   │   │   │   ├── CreatureMapper.php
│   │   │   │   │   ├── CustomEntityMapper.php
│   │   │   │   │   ├── CustomMapper.php
│   │   │   │   │   ├── EntityMapper.php
│   │   │   │   │   ├── EventMapper.php
│   │   │   │   │   ├── FamilyMapper.php
│   │   │   │   │   ├── GalleryMapper.php
│   │   │   │   │   ├── ImageMapper.php
│   │   │   │   │   ├── ImportMapper.php
│   │   │   │   │   ├── ItemMapper.php
│   │   │   │   │   ├── JournalMapper.php
│   │   │   │   │   ├── LocationMapper.php
│   │   │   │   │   ├── MapMapper.php
│   │   │   │   │   ├── MiscMapper.php
│   │   │   │   │   ├── NoteMapper.php
│   │   │   │   │   ├── OrganisationMapper.php
│   │   │   │   │   ├── QuestMapper.php
│   │   │   │   │   ├── RaceMapper.php
│   │   │   │   │   ├── TagMapper.php
│   │   │   │   │   └── TimelineMapper.php
│   │   │   │   └── PrepareService.php
│   │   │   ├── LeaveService.php
│   │   │   ├── LocalisationService.php
│   │   │   ├── MemberService.php
│   │   │   ├── ModuleEditService.php
│   │   │   ├── ModuleService.php
│   │   │   ├── NotificationService.php
│   │   │   ├── Notifications/
│   │   │   │   ├── HideService.php
│   │   │   │   └── ImageRemoveService.php
│   │   │   ├── PluginService.php
│   │   │   ├── PurgeService.php
│   │   │   ├── SearchCleanupService.php
│   │   │   ├── ShareService.php
│   │   │   ├── Sidebar/
│   │   │   │   ├── SaveService.php
│   │   │   │   └── SetupService.php
│   │   │   ├── StatService.php
│   │   │   ├── SystemService.php
│   │   │   ├── ThemeBuilderService.php
│   │   │   └── Webhooks/
│   │   │       └── SaveService.php
│   │   ├── ColourService.php
│   │   ├── CommunityVoteService.php
│   │   ├── CountryService.php
│   │   ├── CsvImportService.php
│   │   ├── CsvValidatorService.php
│   │   ├── DashboardService.php
│   │   ├── Dashboards/
│   │   │   └── GettingStartedService.php
│   │   ├── DiceRollerService.php
│   │   ├── Discord/
│   │   │   └── NotificationService.php
│   │   ├── DiscordService.php
│   │   ├── DomainService.php
│   │   ├── Entity/
│   │   │   ├── AliasService.php
│   │   │   ├── ArchiveService.php
│   │   │   ├── ColumnDefinitionService.php
│   │   │   ├── Connections/
│   │   │   │   ├── MapService.php
│   │   │   │   └── RelatedService.php
│   │   │   ├── CopyService.php
│   │   │   ├── EntitySaveService.php
│   │   │   ├── ExportService.php
│   │   │   ├── InventoryService.php
│   │   │   ├── LoggerService.php
│   │   │   ├── MarkdownExportService.php
│   │   │   ├── MoveService.php
│   │   │   ├── NewService.php
│   │   │   ├── PopularService.php
│   │   │   ├── PostLoggerService.php
│   │   │   ├── PostService.php
│   │   │   ├── PreviewService.php
│   │   │   ├── PrivacyService.php
│   │   │   ├── PurgeService.php
│   │   │   ├── RecoveryService.php
│   │   │   ├── RecoverySetupService.php
│   │   │   ├── RelationService.php
│   │   │   ├── Relations/
│   │   │   │   ├── CharacterRelationsService.php
│   │   │   │   ├── Concerns/
│   │   │   │   │   ├── SavesLocations.php
│   │   │   │   │   └── SupportsPatchMode.php
│   │   │   │   ├── CreatureRelationsService.php
│   │   │   │   ├── EntityRelationsServiceFactory.php
│   │   │   │   ├── EventRelationsService.php
│   │   │   │   ├── FamilyRelationsService.php
│   │   │   │   ├── ItemRelationsService.php
│   │   │   │   ├── LocationRelationsService.php
│   │   │   │   ├── OrganisationRelationsService.php
│   │   │   │   ├── RaceRelationsService.php
│   │   │   │   └── RelationsServiceInterface.php
│   │   │   ├── RemindableService.php
│   │   │   ├── ShareService.php
│   │   │   ├── StoryService.php
│   │   │   ├── TagService.php
│   │   │   ├── TemplateService.php
│   │   │   ├── TooltipService.php
│   │   │   └── TransformService.php
│   │   ├── EntityFileService.php
│   │   ├── EntityMappingService.php
│   │   ├── EntityTypeService.php
│   │   ├── Families/
│   │   │   └── FamilyTreeService.php
│   │   ├── FilterService.php
│   │   ├── FormCopyService.php
│   │   ├── Gallery/
│   │   │   ├── BrowseService.php
│   │   │   ├── CreateService.php
│   │   │   ├── DeleteService.php
│   │   │   ├── SelectionService.php
│   │   │   ├── SetupService.php
│   │   │   ├── StorageService.php
│   │   │   ├── SummernoteService.php
│   │   │   ├── TiptapService.php
│   │   │   ├── UpdateService.php
│   │   │   └── UploadService.php
│   │   ├── GenreService.php
│   │   ├── IdentityManager.php
│   │   ├── Images/
│   │   │   └── AvatarService.php
│   │   ├── ImagesService.php
│   │   ├── ImgService.php
│   │   ├── InviteService.php
│   │   ├── LanguageService.php
│   │   ├── Layout/
│   │   │   └── NavigationService.php
│   │   ├── LengthValidatorService.php
│   │   ├── LimitService.php
│   │   ├── Logs/
│   │   │   └── ApiLogService.php
│   │   ├── Maps/
│   │   │   ├── ChunkingService.php
│   │   │   └── MigrateLayerService.php
│   │   ├── MarkdownMentionsService.php
│   │   ├── Mentions/
│   │   │   └── SaveService.php
│   │   ├── MentionsService.php
│   │   ├── MultiEditingService.php
│   │   ├── NewsletterService.php
│   │   ├── Onboarding/
│   │   │   └── InitialService.php
│   │   ├── PaginationService.php
│   │   ├── PatreonService.php
│   │   ├── PayPalService.php
│   │   ├── PermissionService.php
│   │   ├── Permissions/
│   │   │   ├── BulkPermissionService.php
│   │   │   ├── EntityPermission.php
│   │   │   ├── PermissionService.php
│   │   │   ├── RolePermission.php
│   │   │   └── RolePermissionService.php
│   │   ├── Plugins/
│   │   │   └── ImporterService.php
│   │   ├── Posts/
│   │   │   ├── Permissions/
│   │   │   │   └── SavePermissionsService.php
│   │   │   ├── PurgeService.php
│   │   │   └── RecoveryService.php
│   │   ├── QuickCreator/
│   │   │   └── ProcessService.php
│   │   ├── Referrals/
│   │   │   ├── JoinService.php
│   │   │   └── ManagementService.php
│   │   ├── Report/
│   │   │   ├── AccountsReportService.php
│   │   │   ├── BaseReportService.php
│   │   │   ├── ChurnReportService.php
│   │   │   ├── OnboardingReportService.php
│   │   │   └── WeeklyReportService.php
│   │   ├── Search/
│   │   │   ├── AttributeSearchService.php
│   │   │   ├── CampaignSearchService.php
│   │   │   ├── EntitySearchService.php
│   │   │   ├── LiveSearchService.php
│   │   │   ├── MapGroupSearchService.php
│   │   │   ├── MentionService.php
│   │   │   ├── RecentService.php
│   │   │   └── TemplateSearchService.php
│   │   ├── SearchService.php
│   │   ├── Spotlights/
│   │   │   └── ApplyService.php
│   │   ├── StarterService.php
│   │   ├── Submenus/
│   │   │   ├── AbilitySubmenu.php
│   │   │   ├── BaseSubmenu.php
│   │   │   ├── CalendarSubmenu.php
│   │   │   ├── CharacterSubmenu.php
│   │   │   ├── CreatureSubmenu.php
│   │   │   ├── CustomSubmenu.php
│   │   │   ├── EntitySubmenu.php
│   │   │   ├── EventSubmenu.php
│   │   │   ├── FamilySubmenu.php
│   │   │   ├── ItemSubmenu.php
│   │   │   ├── JournalSubmenu.php
│   │   │   ├── LocationSubmenu.php
│   │   │   ├── MapSubmenu.php
│   │   │   ├── NoteSubmenu.php
│   │   │   ├── OrganisationSubmenu.php
│   │   │   ├── QuestSubmenu.php
│   │   │   ├── RaceSubmenu.php
│   │   │   ├── SubmenuService.php
│   │   │   ├── TagSubmenu.php
│   │   │   └── TimelineSubmenu.php
│   │   ├── Subscribers/
│   │   │   └── HallOfFameService.php
│   │   ├── Subscription/
│   │   │   ├── CancellationService.php
│   │   │   ├── CouponService.php
│   │   │   ├── FreeTrialEndService.php
│   │   │   ├── PayPalRenewalService.php
│   │   │   ├── PaymentMethodService.php
│   │   │   ├── SubscriptionEndService.php
│   │   │   └── TrialService.php
│   │   ├── SubscriptionService.php
│   │   ├── SubscriptionUpgradeService.php
│   │   ├── TOC/
│   │   │   └── TocSlugify.php
│   │   ├── TagService.php
│   │   ├── TimelineService.php
│   │   ├── Tracking/
│   │   │   └── DatalayerService.php
│   │   ├── TroubleshootingService.php
│   │   ├── TutorialService.php
│   │   ├── UserAuthenticatedService.php
│   │   ├── Users/
│   │   │   ├── CampaignService.php
│   │   │   ├── CleanupService.php
│   │   │   ├── CurrencyService.php
│   │   │   ├── EmailValidationService.php
│   │   │   ├── OfferTrialService.php
│   │   │   ├── PurgeService.php
│   │   │   └── UserLogService.php
│   │   ├── WebhookService.php
│   │   └── Whiteboards/
│   │       ├── ApiService.php
│   │       └── Shapes/
│   │           └── PersistanceService.php
│   ├── Support/
│   │   └── HtmlPurifier/
│   │       └── CalcStyleDefinition.php
│   ├── Traits/
│   │   ├── AdminPolicyTrait.php
│   │   ├── ApiRequest.php
│   │   ├── BulkControllerTrait.php
│   │   ├── CalendarAware.php
│   │   ├── CampaignAware.php
│   │   ├── Controllers/
│   │   │   ├── HasDatagrid.php
│   │   │   ├── HasNested.php
│   │   │   └── HasSubview.php
│   │   ├── CreatesEntityFromName.php
│   │   ├── EntityAware.php
│   │   ├── EntityTypeAware.php
│   │   ├── ExportableTrait.php
│   │   ├── GuestAuthTrait.php
│   │   ├── HasJobLog.php
│   │   ├── MentionTrait.php
│   │   ├── OrderableTrait.php
│   │   ├── PostAware.php
│   │   ├── RequestAware.php
│   │   ├── ResolvesNewForeignEntities.php
│   │   ├── RoleAware.php
│   │   ├── Search/
│   │   │   └── Orderable.php
│   │   └── UserAware.php
│   └── View/
│       └── Components/
│           ├── Ad.php
│           ├── Ads/
│           │   └── Native.php
│           ├── Alert.php
│           ├── Badge.php
│           ├── Box/
│           │   └── Footer.php
│           ├── Box.php
│           ├── Button/
│           │   └── DeleteConfirm.php
│           ├── Buttons/
│           │   ├── Colours.php
│           │   ├── Confirm.php
│           │   └── ConfirmDelete.php
│           ├── Campaigns/
│           │   └── ModuleBox.php
│           ├── CharacterSheet.php
│           ├── Checkbox.php
│           ├── Dashboards/
│           │   └── Widgets/
│           │       └── Selection.php
│           ├── Date.php
│           ├── Dialog/
│           │   ├── Article.php
│           │   ├── Close.php
│           │   ├── Footer.php
│           │   └── Header.php
│           ├── Dialog.php
│           ├── Dropdowns/
│           │   ├── Divider.php
│           │   ├── Item.php
│           │   └── Section.php
│           ├── Entities/
│           │   ├── Submenu.php
│           │   └── Thumbnail.php
│           ├── EntityLink.php
│           ├── FaqElement.php
│           ├── Form.php
│           ├── Forms/
│           │   ├── Field.php
│           │   ├── Foreign.php
│           │   ├── Select.php
│           │   ├── Tags.php
│           │   ├── VisibilityPicker.php
│           │   └── VisibilityPickerField.php
│           ├── Grid.php
│           ├── Helper.php
│           ├── Helpers/
│           │   └── Tooltip.php
│           ├── Hero.php
│           ├── Icon.php
│           ├── InfoBox.php
│           ├── LearnMore.php
│           ├── Lists/
│           │   └── EmptyState.php
│           ├── Menu/
│           │   └── Element.php
│           ├── Menu.php
│           ├── Posts/
│           │   └── Tags.php
│           ├── PremiumCta.php
│           ├── PremiumCtaFooter.php
│           ├── PremiumDialog.php
│           ├── Profile/
│           │   └── SocialLink.php
│           ├── Reorder/
│           │   └── Child.php
│           ├── Sidebar/
│           │   ├── Account.php
│           │   ├── Bookmark.php
│           │   ├── Campaign.php
│           │   ├── Element.php
│           │   ├── Profile.php
│           │   ├── Section.php
│           │   └── Settings.php
│           ├── Since.php
│           ├── Tab/
│           │   ├── Nav.php
│           │   └── Tab.php
│           ├── Tags/
│           │   └── Bubble.php
│           ├── Toggles/
│           │   └── FilterButton.php
│           ├── Tutorial.php
│           ├── Users/
│           │   ├── Avatar.php
│           │   └── Link.php
│           ├── Widgets/
│           │   ├── FilteredLink.php
│           │   ├── Forms/
│           │   │   └── Advanced.php
│           │   └── Previews/
│           │       ├── Body.php
│           │       └── Head.php
│           └── WordCount.php
├── artisan
├── boost.json
├── bootstrap/
│   ├── app.php
│   └── cache/
│       └── .gitignore
├── composer.json
├── config/
│   ├── ads.php
│   ├── app.php
│   ├── attribute-templates.php
│   ├── auth.php
│   ├── backup.php
│   ├── billing.php
│   ├── blameable.php
│   ├── bragi.php
│   ├── broadcasting.php
│   ├── cache.php
│   ├── cdn.php
│   ├── colours.php
│   ├── cors.php
│   ├── database.php
│   ├── debugbar.php
│   ├── discord.php
│   ├── domains.php
│   ├── dompdf.php
│   ├── entities.php
│   ├── filesystems.php
│   ├── fontawesome.php
│   ├── front.php
│   ├── google2fa.php
│   ├── ignition.php
│   ├── image.php
│   ├── imports.php
│   ├── laravel-translation-manager.php
│   ├── laravellocalization.php
│   ├── larecipe.php
│   ├── limits.php
│   ├── livewire.php
│   ├── logging.php
│   ├── mail.php
│   ├── mailerlite.php
│   ├── marketplace.php
│   ├── openai.php
│   ├── passport.php
│   ├── paypal.php
│   ├── purge.php
│   ├── purify.php
│   ├── queue.php
│   ├── reverb.php
│   ├── scout.php
│   ├── sentry.php
│   ├── services.php
│   ├── session.php
│   ├── subscription.php
│   ├── thumbor.php
│   ├── tracking.php
│   ├── trustedproxy.php
│   └── view.php
├── database/
│   ├── .gitignore
│   ├── factories/
│   │   ├── AbilityFactory.php
│   │   ├── AttributeFactory.php
│   │   ├── BookmarkFactory.php
│   │   ├── CalendarFactory.php
│   │   ├── CampaignDashboardWidgetFactory.php
│   │   ├── CampaignFactory.php
│   │   ├── CampaignStyleFactory.php
│   │   ├── CharacterFactory.php
│   │   ├── ConversationFactory.php
│   │   ├── ConversationMessageFactory.php
│   │   ├── ConversationParticipantFactory.php
│   │   ├── CreatureFactory.php
│   │   ├── DiceRollFactory.php
│   │   ├── EntityAbilityFactory.php
│   │   ├── EntityAssetFactory.php
│   │   ├── EntityTagFactory.php
│   │   ├── EventFactory.php
│   │   ├── FamilyFactory.php
│   │   ├── ImageFactory.php
│   │   ├── ItemFactory.php
│   │   ├── JournalFactory.php
│   │   ├── LocationFactory.php
│   │   ├── MapFactory.php
│   │   ├── MapGroupFactory.php
│   │   ├── MapLayerFactory.php
│   │   ├── MapMarkerFactory.php
│   │   ├── NoteFactory.php
│   │   ├── OrganisationFactory.php
│   │   ├── PostFactory.php
│   │   ├── PostTagFactory.php
│   │   ├── QuestElementFactory.php
│   │   ├── QuestFactory.php
│   │   ├── RaceFactory.php
│   │   ├── RelationFactory.php
│   │   ├── ReminderFactory.php
│   │   ├── TagFactory.php
│   │   ├── TimelineElementFactory.php
│   │   ├── TimelineEraFactory.php
│   │   ├── TimelineFactory.php
│   │   └── UserFactory.php
│   ├── migrations/
│   │   ├── .gitkeep
│   │   ├── 2014_04_02_193005_create_ltm_translations_table.php
│   │   ├── 2014_10_12_000000_create_users_table.php
│   │   ├── 2014_10_12_100000_create_password_resets_table.php
│   │   ├── 2016_01_01_000000_add_voyager_user_fields.php
│   │   ├── 2016_04_11_00352701_create_user_locales_table.php
│   │   ├── 2016_06_01_000001_create_oauth_auth_codes_table.php
│   │   ├── 2016_06_01_000002_create_oauth_access_tokens_table.php
│   │   ├── 2016_06_01_000003_create_oauth_refresh_tokens_table.php
│   │   ├── 2016_06_01_000004_create_oauth_clients_table.php
│   │   ├── 2016_06_01_000005_create_oauth_personal_access_clients_table.php
│   │   ├── 2016_10_21_190000_create_roles_table.php
│   │   ├── 2017_10_27_090105_create_campaign.php
│   │   ├── 2017_10_27_091125_create_characters.php
│   │   ├── 2017_10_27_091755_create_families.php
│   │   ├── 2017_10_27_102246_create_locations.php
│   │   ├── 2017_10_28_091521_update_character_with_location.php
│   │   ├── 2017_10_30_010000_create_real_visibilities_table.php
│   │   ├── 2017_10_30_010002_create_real_entities_table.php
│   │   ├── 2017_10_30_160256_create_journal_table.php
│   │   ├── 2017_10_30_160311_create_item_table.php
│   │   ├── 2017_10_30_162322_create_family_relations.php
│   │   ├── 2017_10_30_164537_add_character_family.php
│   │   ├── 2017_10_31_124138_update_user_and_campaign_link.php
│   │   ├── 2017_11_01_222903_create_organisation.php
│   │   ├── 2017_11_03_181958_create_notes.php
│   │   ├── 2017_11_12_195702_create_invite_tokens.php
│   │   ├── 2017_11_16_145219_create_events.php
│   │   ├── 2017_11_16_222319_create_campaign_settings.php
│   │   ├── 2017_11_22_111255_create_quests.php
│   │   ├── 2017_11_30_113216_create_relations_table.php
│   │   ├── 2018_01_25_112528_create_attributes_table.php
│   │   ├── 2018_02_14_102646_create_attribute_template.php
│   │   ├── 2018_03_02_163640_create_new_acl.php
│   │   ├── 2018_03_14_152413_create_notifications_table.php
│   │   ├── 2018_04_09_17054701_add_ui_settings_to_ltm_user_locales.php
│   │   ├── 2018_04_16_090159_create_calendar_table.php
│   │   ├── 2018_04_24_075544_create_entity_notes_table.php
│   │   ├── 2018_04_24_124131_create_character_traits_table.php
│   │   ├── 2018_04_24_193803_create_sections_table.php
│   │   ├── 2018_04_30_174331_create_entity_events.php
│   │   ├── 2018_05_19_091532_add_dice_rolls.php
│   │   ├── 2018_05_25_102446_update_campaign_invites.php
│   │   ├── 2018_05_25_113848_create_dice_roll_results.php
│   │   ├── 2018_05_31_121110_create_custom_menu_table.php
│   │   ├── 2018_07_17_131457_create_jobs_table.php
│   │   ├── 2018_08_15_083901_create_failed_jobs_table.php
│   │   ├── 2018_08_20_174638_create_conversations.php
│   │   ├── 2018_09_19_121625_add_calendar_date_to_quest_and_journal.php
│   │   ├── 2018_09_25_134530_create_race.php
│   │   ├── 2018_10_17_130533_create_entity_categories.php
│   │   ├── 2018_10_23_124704_create_entity_files.php
│   │   ├── 2018_11_28_125839_add_campaign_dashboard_calendar.php
│   │   ├── 2018_12_06_222045_add_campaign_permission_entity_id.php
│   │   ├── 2019_01_24_182847_create_entity_mentions.php
│   │   ├── 2019_02_22_083247_create_entity_log.php
│   │   ├── 2019_04_11_134145_create_entity_inventory.php
│   │   ├── 2019_05_03_000001_create_customer_columns.php
│   │   ├── 2019_05_03_000002_create_subscriptions_table.php
│   │   ├── 2019_05_03_000003_create_subscription_items_table.php
│   │   ├── 2019_05_10_072500_create_entities.php
│   │   ├── 2019_05_23_130252_update_attribute_templates_add_entity_type_id.php
│   │   ├── 2019_08_15_152154_create_campaign_follow.php
│   │   ├── 2019_10_02_131224_create_campaign_boosts.php
│   │   ├── 2019_10_02_191220_custom_patreon.php
│   │   ├── 2020_01_20_084615_create_calendar_weather.php
│   │   ├── 2020_03_05_174449_create_abilities_table.php
│   │   ├── 2020_03_05_221303_create_entity_abilities.php
│   │   ├── 2020_03_25_192753_add_soft_deletes.php
│   │   ├── 2020_04_10_121227_create_discord.php
│   │   ├── 2020_04_29_175303_subscription_bills.php
│   │   ├── 2020_05_08_065550_create_images.php
│   │   ├── 2020_05_10_122725_update_dashboard_widgets_add_tags.php
│   │   ├── 2020_06_02_103227_create_sessions_table.php
│   │   ├── 2020_06_06_084917_create_maps_table.php
│   │   ├── 2020_07_24_160310_add_map_groups.php
│   │   ├── 2020_08_02_125607_create_app_updates_table.php
│   │   ├── 2020_08_03_155441_create_timelines_table.php
│   │   ├── 2020_08_04_095517_create_timeline_elements.php
│   │   ├── 2020_08_10_172320_update_entity_events_add_type.php
│   │   ├── 2020_09_10_140424_add_entity_image_id.php
│   │   ├── 2020_09_22_115919_create_referral_table.php
│   │   ├── 2020_11_07_083605_create_campaign_dashboards.php
│   │   ├── 2020_11_07_095122_update_campaign_widgets_add_dashboard_id.php
│   │   ├── 2020_12_12_191426_create_entity_note_permissions.php
│   │   ├── 2021_01_03_231138_create_table_entity_links.php
│   │   ├── 2021_01_18_184615_create_campaign_gallery_folders.php
│   │   ├── 2021_01_29_003755_update_menu_links_dashboard_id.php
│   │   ├── 2021_01_30_233554_create_campaign_submissions.php
│   │   ├── 2021_04_07_230722_update_entities_add_marketplace_entity_uuid.php
│   │   ├── 2021_04_11_202656_update_relations_add_marketplace_uuid.php
│   │   ├── 2021_04_20_201015_create_quest_elements_table.php
│   │   ├── 2021_05_25_125309_update_maps_center_marker.php
│   │   ├── 2021_07_19_095244_update_entity_notes_marketplace_uuid.php
│   │   ├── 2021_09_24_175239_create_entity_user_table.php
│   │   ├── 2021_09_27_173618_create_campaign_styles_table.php
│   │   ├── 2021_10_19_151149_create_menu_link_tags_table.php
│   │   ├── 2021_11_19_031558_create_user_role_table.php
│   │   ├── 2021_11_19_034012_update_entities_add_type_id.php
│   │   ├── 2022_01_02_212212_add_character_race_table.php
│   │   ├── 2022_01_23_023952_create_entity_aliases_table.php
│   │   ├── 2022_03_07_224142_create_character_families_table.php
│   │   ├── 2022_04_27_194610_update_campaign_permissions_perf.php
│   │   ├── 2022_05_06_151813_update_users_add_card_expiration.php
│   │   ├── 2022_06_07_172445_update_maps_add_clustering_toggle.php
│   │   ├── 2022_06_23_154301_create_entity_assets_table.php
│   │   ├── 2022_08_23_005328_add_race_location_table.php
│   │   ├── 2022_09_02_191341_create_password_securities_table.php
│   │   ├── 2022_09_21_231900_refactor_user_patreon.php
│   │   ├── 2022_10_20_192238_create_creatures_table.php
│   │   ├── 2022_11_01_214611_update_entity_user_add_campaign_id_post_id_timeline_element_id_quest_element_id.php
│   │   ├── 2022_11_07_192125_update_entity_mentions_add_quest_element_id_timeline_element_id.php
│   │   ├── 2022_11_08_161937_create_presets_table.php
│   │   ├── 2022_12_08_155837_rename_entity_note_id_to_post_id.php
│   │   ├── 2023_01_04_213154_create_bragi_logs_table.php
│   │   ├── 2023_01_16_021352_create_family_tree_table.php
│   │   ├── 2023_01_19_154910_cleanup_user_date_format.php
│   │   ├── 2023_02_08_003255_update_entity_logs_add_post_id.php
│   │   ├── 2023_03_14_152925_update_subscriptions_rename_stripe_plan.php
│   │   ├── 2023_03_14_153209_update_subscription_items_rename_stripe_plan.php
│   │   ├── 2023_03_14_154115_update_users_rename_card_brand_card_last_four.php
│   │   ├── 2023_05_04_185755_update_gallery_woff2.php
│   │   ├── 2023_05_17_191929_update_images_add_focus_x_focus_y.php
│   │   ├── 2023_06_02_175012_create_image_mentions_table.php
│   │   ├── 2023_06_09_215007_update_campaign_style_add_theme.php
│   │   ├── 2023_06_10_220139_create_api_logs.php
│   │   ├── 2023_06_15_210220_create_user_logs_table.php
│   │   ├── 2023_06_21_221002_update_attributes_rename_is_star.php
│   │   ├── 2023_06_21_221208_update_relations_rename_is_star.php
│   │   ├── 2023_06_27_194149_create_genres_table.php
│   │   ├── 2023_06_27_195226_create_campaign_genre_table.php
│   │   ├── 2023_06_29_185027_create_user_flags_table.php
│   │   ├── 2023_07_13_164526_create_post_layouts_table.php
│   │   ├── 2023_07_13_172639_update_entity_notes_add_layout_id.php
│   │   ├── 2023_07_28_181821_update_calendars_add_format.php
│   │   ├── 2023_08_11_012819_reset_campaign_slug.php
│   │   ├── 2023_08_14_225219_add_new_slug.php
│   │   ├── 2023_08_16_170220_remove_campaign_export_path.php
│   │   ├── 2023_08_21_233952_create_tutorials_table.php
│   │   ├── 2023_08_30_170905_migrate_to_bookmarks.php
│   │   ├── 2023_09_12_200523_migrate_to_posts.php
│   │   ├── 2023_10_15_183420_add_image_to_entities.php
│   │   ├── 2023_10_16_202303_update_locations_rename_parent_location_id_location_id.php
│   │   ├── 2023_10_21_172645_update_entity_type_bookmark.php
│   │   ├── 2023_10_25_173253_create_campaign_exports_table.php
│   │   ├── 2023_10_28_210131_add_is_deleted_index.php
│   │   ├── 2023_11_05_174423_create_campaign_import_table.php
│   │   ├── 2023_11_07_034812_rollback_entities_deleted_index.php
│   │   ├── 2023_11_19_121322_update_campaign_exports_add_progress.php
│   │   ├── 2023_11_21_215234_update_calendars_add_show_birthdays.php
│   │   ├── 2023_11_28_121013_cleanup_entity_images.php
│   │   ├── 2023_11_28_215313_update_map_markers_add_is_popupless.php
│   │   ├── 2023_12_02_154727_remove_old_trees.php
│   │   ├── 2023_12_05_125348_create_tiers_table.php
│   │   ├── 2024_01_08_144309_create_features_table.php
│   │   ├── 2024_01_10_191244_create_game_systems_table.php
│   │   ├── 2024_01_10_191740_create_campaign_system_table.php
│   │   ├── 2024_01_11_150113_update_attributes.php
│   │   ├── 2024_01_19_024046_cleanup_reminders.php
│   │   ├── 2024_01_22_203110_create_user_validations_table.php
│   │   ├── 2024_01_25_192113_update_creatures_add_is_extinct.php
│   │   ├── 2024_01_26_194006_update_campaigns_add_is_discreet.php
│   │   ├── 2024_02_06_162941_create_feature_files.php
│   │   ├── 2024_02_27_095646_update_features_add_original.php
│   │   ├── 2024_03_07_010249_update_features_add_rejection.php
│   │   ├── 2024_03_27_173140_create_webhooks.php
│   │   ├── 2024_04_03_224729_create_webhook_tags_table.php
│   │   ├── 2024_04_15_220412_create_organisation_location_table.php
│   │   ├── 2024_04_23_062512_update_subscriptions_change_name_type.php
│   │   ├── 2024_04_24_193659_update_campaign_settings_add_assets.php
│   │   ├── 2024_05_02_162659_update_inventories_add_image_uuid.php
│   │   ├── 2024_05_28_202511_create_tier_pricing_table.php
│   │   ├── 2024_06_01_000001_create_oauth_device_codes_table.php
│   │   ├── 2024_06_04_202056_update_posts_add_deleted_at_deleted_by.php
│   │   ├── 2024_06_14_201056_update_campaigns_add_deleted_by_deleted_at.php
│   │   ├── 2024_06_22_004252_update_character_race_add_is_private.php
│   │   ├── 2024_07_02_172619_update_posts_add_is_template.php
│   │   ├── 2024_07_08_051702_update_webhooks_add_settings.php
│   │   ├── 2024_07_09_062122_update_character_family_add_is_private.php
│   │   ├── 2024_07_25_205325_update_map_layers_add_image_uuid.php
│   │   ├── 2024_07_26_160208_update_entity_assets_add_image_uuid.php
│   │   ├── 2024_07_31_215400_remove_unused_slug.php
│   │   ├── 2024_08_12_231117_update_locations_add_is_destroyed.php
│   │   ├── 2024_08_13_202759_update_creatures_add_is_dead.php
│   │   ├── 2024_08_14_145655_update_races_add_is_extinct.php
│   │   ├── 2024_08_14_164041_update_families_add_is_extinct.php
│   │   ├── 2024_08_27_175447_update_notifications_migrate_user_model.php
│   │   ├── 2025_01_09_180214_update_objects_add_weight.php
│   │   ├── 2025_01_10_175606_update_quests_add_location_id.php
│   │   ├── 2025_01_11_022946_update_modules_add_campaign_id.php
│   │   ├── 2025_01_13_064804_create_post_tag_table.php
│   │   ├── 2025_01_13_230814_update_entities_add_boilerplate.php
│   │   ├── 2025_01_14_144924_update_bookmarks_add_entity_type_id.php
│   │   ├── 2025_01_15_160953_migrate_entry_to_entities.php
│   │   ├── 2025_01_16_164318_add_dashboard_entity_type_id.php
│   │   ├── 2025_01_16_175851_migrate_widgets_to_entity_types.php
│   │   ├── 2025_01_17_161652_add_parent_to_entities.php
│   │   ├── 2025_01_27_142523_add_word_count.php
│   │   ├── 2025_02_21_204219_update_module_icon.php
│   │   ├── 2025_03_18_055651_update_features_add_message_id.php
│   │   ├── 2025_03_21_150239_rename_entity_events_to_reminders.php
│   │   ├── 2025_03_21_150723_update_entity_events_add_polymorphism.php
│   │   ├── 2025_03_21_151008_fill_entity_events.php
│   │   ├── 2025_03_21_153447_update_reminders_nullify_entity_id.php
│   │   ├── 2025_04_10_064831_update_attribute_templates_add_is_enabled.php
│   │   ├── 2025_04_21_170958_update_user_logs_add_campaign_id.php
│   │   ├── 2025_05_29_015926_update_bookmarks_add_created_by_updated_by.php
│   │   ├── 2025_05_29_161824_update_campaign_dashboard_widgets_add_created_by_updated_by.php
│   │   ├── 2025_05_29_162746_update_attributes_add_created_by_updated_by.php
│   │   ├── 2025_06_06_053052_update_reminders_remove_entity_id.php
│   │   ├── 2025_06_09_161939_cleanup_old_entry_and_type.php
│   │   ├── 2025_06_09_162836_cleanup_old_fields.php
│   │   ├── 2025_06_09_181415_rename_campaign_submissions_to_applications.php
│   │   ├── 2025_06_09_182950_cleanup_old_logs_tables.php
│   │   ├── 2025_06_16_145726_add_api_log_duration.php
│   │   ├── 2025_06_16_211604_drop_oauth_personal_access_clients.php
│   │   ├── 2025_06_24_124233_update_entity_logs_add_polymorphism.php
│   │   ├── 2025_06_24_124354_migrate_entity_logs.php
│   │   ├── 2025_06_24_124500_cleanup_entity_logs.php
│   │   ├── 2025_06_25_161814_create_campaign_flags_table.php
│   │   ├── 2025_07_03_215618_update_objects_add_creator_id.php
│   │   ├── 2025_07_03_222904_update_objects_migrate_character_id_to_creator_id.php
│   │   ├── 2025_08_14_185936_update_posts_remove_is_private.php
│   │   ├── 2025_09_04_194330_update_campaign_flags_add_value.php
│   │   ├── 2025_09_12_160608_create_whiteboards_table.php
│   │   ├── 2025_09_17_034429_update_user_flags_add_amount.php
│   │   ├── 2025_09_22_230759_update_campaign_imports_add_logs_errors.php
│   │   ├── 2025_09_29_173336_update_map_markers_add_css.php
│   │   ├── 2025_09_29_204049_update_entities_add_archived_at.php
│   │   ├── 2025_10_01_200028_update_map_groups_add_parent_id.php
│   │   ├── 2025_10_02_170514_update_campaign_settings_add_whiteboards.php
│   │   ├── 2025_11_04_205450_create_entity_locations2_table.php
│   │   ├── 2025_11_06_154720_update_entity_assets_add_updated_by.php
│   │   ├── 2025_11_19_155526_migrate_campaigns_discreet.php
│   │   ├── 2025_11_19_160105_remove_campaigns_is_discreet.php
│   │   ├── 2025_12_15_191556_add_dashboard_widget_index.php
│   │   ├── 2025_12_22_212249_migrate_character_locations_to_entity_locations.php
│   │   ├── 2026_01_14_161511_cleanup_old_referrals.php
│   │   ├── 2026_01_14_170634_create_referral_codes_table.php
│   │   ├── 2026_01_14_174144_create_referral_events_table.php
│   │   ├── 2026_01_14_174215_update_users_referred_by.php
│   │   ├── 2026_01_15_224615_create_whiteboard_shapes_table.php
│   │   ├── 2026_01_15_232603_create_whiteboard_strokes_table.php
│   │   ├── 2026_01_23_204425_create_spotlights_table.php
│   │   ├── 2026_01_23_205038_cleanup_old_spotlights.php
│   │   ├── 2026_01_23_211003_create_spotlight_survey_table.php
│   │   ├── 2026_01_30_100000_rename_description_to_entry_in_quest_elements_table.php
│   │   ├── 2026_02_03_221238_create_playstyles_table.php
│   │   ├── 2026_02_04_170050_migrate_organisation_locations_to_entity_locations.php
│   │   ├── 2026_02_04_170051_migrate_creature_locations_to_entity_locations.php
│   │   ├── 2026_02_04_170052_migrate_race_locations_to_entity_locations.php
│   │   ├── 2026_02_04_213616_create_campaign_filters_table.php
│   │   ├── 2026_02_05_074106_create_campaign_playstyle_table.php
│   │   ├── 2026_02_06_185348_update_entities_force_name.php
│   │   ├── 2026_02_06_190751_add_entity_id_index_to_entities.php
│   │   ├── 2026_02_06_190754_add_composite_index_to_entity_tags.php
│   │   ├── 2026_02_06_190757_add_deleted_at_index_to_soft_delete_tables.php
│   │   ├── 2026_02_07_072211_update_applications_add_new_fields.php
│   │   ├── 2026_02_11_162437_add_alias_config.php
│   │   ├── 2026_02_16_155432_create_campaign_events_table.php
│   │   ├── 2026_02_16_215608_update_entities_add_source.php
│   │   ├── 2026_02_16_232044_fix_users_referred_by_foreign_key.php
│   │   ├── 2026_02_23_193432_add_prioritised_to_campaigns.php
│   │   ├── 2026_03_03_225300_update_characters_is_dead_to_tinyinteger.php
│   │   ├── 2026_03_04_044125_update_quests_is_completed_to_tinyinteger.php
│   │   ├── 2026_03_05_184417_migrate_event_locations_to_entity_locations.php
│   │   ├── 2026_03_05_214251_update_characters_pinned_defaults.php
│   │   ├── 2026_03_06_140442_rename_characters_is_dead_to_status.php
│   │   ├── 2026_03_06_140443_rename_quests_is_completed_to_status.php
│   │   ├── 2026_03_09_224121_add_copy_entity_entry_to_quest_elements_table.php
│   │   ├── 2026_03_11_224335_add_icon_to_tags_table.php
│   │   ├── 2026_03_12_172704_add_title_to_locations_table.php
│   │   ├── 2026_03_16_170743_update_cancellations_add_secondary.php
│   │   ├── 2026_03_16_211952_create_entity_listing_preferences_table.php
│   │   ├── 2026_03_17_000001_migrate_parent_ids_to_entities.php
│   │   ├── 2026_03_17_000002_drop_parent_columns_from_child_tables.php
│   │   ├── 2026_03_17_092044_create_item_creator_table.php
│   │   ├── 2026_03_18_152531_add_per_page_to_entity_listing_preferences_table.php
│   │   ├── 2026_03_23_193613_convert_tag_colours_to_hex.php
│   │   ├── 2026_03_26_000001_create_category_statuses_table.php
│   │   ├── 2026_03_26_000002_add_status_id_to_entities_table.php
│   │   ├── 2026_04_03_164253_update_features_add_meta.php
│   │   ├── 2026_04_03_215445_create_campaign_descriptions_table.php
│   │   ├── 2026_05_08_181031_drop_old_status_columns.php
│   │   ├── 2026_05_08_181951_drop_audit_columns_from_creatures_races_whiteboards.php
│   │   ├── 2026_05_08_183610_drop_system_and_is_discreet_from_campaigns.php
│   │   ├── 2026_05_08_185251_drop_follower_from_campaigns.php
│   │   └── 2026_05_08_190847_drop_export_date_from_campaigns.php
│   └── seeders/
│       ├── CategoryStatusSeeder.php
│       ├── DatabaseSeeder.php
│       ├── EntityEventTypeSeeder.php
│       ├── EntityTypesTableSeeder.php
│       ├── FeatureCategorySeeder.php
│       ├── FeatureStatusSeeder.php
│       ├── GameSystemSeeder.php
│       ├── GenreTableSeeder.php
│       ├── PlaystyleSeeder.php
│       ├── PostLayoutTableSeeder.php
│       ├── PresetTypeTableSeeder.php
│       ├── RolesTableSeeder.php
│       ├── ThemesTableSeeder.php
│       ├── TierPricingSeeder.php
│       ├── TierSeeder.php
│       └── VisibilitiesTableSeeder.php
├── docker/
│   └── mysql/
│       └── create-testing-database.sh
├── docker-compose.yml
├── docs/
│   ├── api/
│   │   └── readme.md
│   ├── assets.md
│   ├── contributing.md
│   ├── debugging.md
│   ├── meilisearch.md
│   ├── running.md
│   ├── specs/
│   │   └── 2026-05-07-family-tree-cytoscape-redesign.md
│   ├── translating.md
│   ├── updating.md
│   └── websockets.md
├── lang/
│   ├── base/
│   │   ├── attributes/
│   │   │   └── .gitkeep
│   │   ├── calendars/
│   │   │   └── .gitkeep
│   │   ├── campaigns/
│   │   │   └── .gitkeep
│   │   ├── emails/
│   │   │   └── .gitkeep
│   │   ├── entities/
│   │   │   └── .gitkeep
│   │   ├── front/
│   │   │   └── .gitkeep
│   │   ├── maps/
│   │   │   └── .gitkeep
│   │   ├── readme.md
│   │   ├── settings/
│   │   │   └── .gitkeep
│   │   ├── subscriptions/
│   │   │   └── .gitkeep
│   │   ├── timelines/
│   │   │   └── .gitkeep
│   │   └── users/
│   │       └── .gitkeep
│   ├── de/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   └── social.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── setup.php
│   │   │   └── widgets/
│   │   │       ├── calendar.php
│   │   │       ├── campaign.php
│   │   │       ├── header.php
│   │   │       ├── help.php
│   │   │       ├── preview.php
│   │   │       ├── random.php
│   │   │       ├── recent.php
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── lists.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   ├── attributes.php
│   │   │   ├── characters.php
│   │   │   ├── locations.php
│   │   │   ├── posts.php
│   │   │   ├── reminders.php
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── post_layouts.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── en/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── articles.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi/
│   │   │   └── backstory.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── categories.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── defaults.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── logs.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── permissions.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── share.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   ├── visibilities.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── connections/
│   │   │   └── web.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── onboarding.php
│   │   │   ├── premium.php
│   │   │   ├── setup.php
│   │   │   └── widgets/
│   │   │       ├── calendar.php
│   │   │       ├── campaign.php
│   │   │       ├── gallery.php
│   │   │       ├── header.php
│   │   │       ├── help.php
│   │   │       ├── join.php
│   │   │       ├── onboarding.php
│   │   │       ├── preview.php
│   │   │       ├── random.php
│   │   │       ├── recent.php
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── paypal-expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── share.php
│   │   │   ├── statuses.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   ├── tooltips.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── entries/
│   │   │   ├── archetypes.php
│   │   │   ├── archive.php
│   │   │   ├── bulk.php
│   │   │   ├── fields.php
│   │   │   └── tabs.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── lists.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   ├── attributes.php
│   │   │   ├── characters.php
│   │   │   ├── locations.php
│   │   │   ├── posts.php
│   │   │   ├── reminders.php
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── playstyles.php
│   │   ├── post_layouts.php
│   │   ├── posts/
│   │   │   └── templates.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── referrals.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── api.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── spotlights.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── cancellation.php
│   │   │   ├── cancelled.php
│   │   │   ├── confirm.php
│   │   │   ├── faq.php
│   │   │   ├── finish.php
│   │   │   ├── free-trial.php
│   │   │   ├── paypal-renew.php
│   │   │   ├── paypal.php
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── tiptap.php
│   │   ├── tutorials/
│   │   │   ├── actions.php
│   │   │   ├── characters.php
│   │   │   └── home.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── en-US/
│   │   ├── bookmarks.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── campaigns/
│   │   │   └── builder.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── emails/
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   └── attributes.php
│   │   ├── entities.php
│   │   ├── front.php
│   │   ├── helpers.php
│   │   ├── items.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   └── markers.php
│   │   ├── organisations.php
│   │   ├── quests.php
│   │   └── sidebar.php
│   ├── es/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi/
│   │   │   └── backstory.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── categories.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── defaults.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── logs.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── share.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   ├── visibilities.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── connections/
│   │   │   └── web.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── onboarding.php
│   │   │   ├── setup.php
│   │   │   └── widgets/
│   │   │       ├── calendar.php
│   │   │       ├── campaign.php
│   │   │       ├── header.php
│   │   │       ├── help.php
│   │   │       ├── join.php
│   │   │       ├── onboarding.php
│   │   │       ├── preview.php
│   │   │       ├── random.php
│   │   │       ├── recent.php
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── share.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   ├── tooltips.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── entries/
│   │   │   ├── archetypes.php
│   │   │   ├── bulk.php
│   │   │   ├── fields.php
│   │   │   └── tabs.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── lists.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   ├── attributes.php
│   │   │   ├── characters.php
│   │   │   ├── locations.php
│   │   │   ├── posts.php
│   │   │   ├── reminders.php
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── playstyles.php
│   │   ├── post_layouts.php
│   │   ├── posts/
│   │   │   └── templates.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── referrals.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── api.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── spotlights.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── cancellation.php
│   │   │   ├── cancelled.php
│   │   │   ├── confirm.php
│   │   │   ├── faq.php
│   │   │   ├── finish.php
│   │   │   ├── free-trial.php
│   │   │   ├── paypal.php
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── tiptap.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── fr/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── articles.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi/
│   │   │   └── backstory.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── categories.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── defaults.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── logs.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── share.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   ├── visibilities.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── connections/
│   │   │   └── web.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── onboarding.php
│   │   │   ├── premium.php
│   │   │   ├── setup.php
│   │   │   └── widgets/
│   │   │       ├── calendar.php
│   │   │       ├── campaign.php
│   │   │       ├── gallery.php
│   │   │       ├── header.php
│   │   │       ├── help.php
│   │   │       ├── join.php
│   │   │       ├── onboarding.php
│   │   │       ├── preview.php
│   │   │       ├── random.php
│   │   │       ├── recent.php
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── paypal-expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── share.php
│   │   │   ├── statuses.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   ├── tooltips.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── entries/
│   │   │   ├── archetypes.php
│   │   │   ├── archive.php
│   │   │   ├── bulk.php
│   │   │   ├── fields.php
│   │   │   └── tabs.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── lists.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   ├── attributes.php
│   │   │   ├── characters.php
│   │   │   ├── locations.php
│   │   │   ├── posts.php
│   │   │   ├── reminders.php
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── playstyles.php
│   │   ├── post_layouts.php
│   │   ├── posts/
│   │   │   └── templates.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── referrals.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── api.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── spotlights.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── cancellation.php
│   │   │   ├── cancelled.php
│   │   │   ├── confirm.php
│   │   │   ├── faq.php
│   │   │   ├── finish.php
│   │   │   ├── free-trial.php
│   │   │   ├── paypal-renew.php
│   │   │   ├── paypal.php
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── tiptap.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── hr/
│   │   ├── abilities.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── bookmarks.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── campaigns/
│   │   │   ├── applications.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── gallery.php
│   │   │   ├── plugins.php
│   │   │   ├── recovery.php
│   │   │   └── stats.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── conversations.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── story.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   └── validation.php
│   ├── it/
│   │   ├── abilities.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── billing/
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── limits.php
│   │   │   ├── modules.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   └── widgets/
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── story.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── pins.php
│   │   ├── post_layouts.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── settings/
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   └── promos.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   └── visibilities.php
│   ├── nl/
│   │   ├── abilities.php
│   │   ├── attribute_templates.php
│   │   ├── auth.php
│   │   ├── bookmarks.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── campaigns/
│   │   │   ├── applications.php
│   │   │   ├── default-images.php
│   │   │   ├── gallery.php
│   │   │   ├── plugins.php
│   │   │   ├── recovery.php
│   │   │   └── stats.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── conversations.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── attributes.php
│   │   │   ├── events.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── notes.php
│   │   │   ├── relations.php
│   │   │   └── timelines.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   └── validation.php
│   ├── pl/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi/
│   │   │   └── backstory.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   ├── .gitkeep
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── .gitkeep
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── defaults.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── logs.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   ├── visibilities.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── connections/
│   │   │   └── web.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── onboarding.php
│   │   │   ├── setup.php
│   │   │   └── widgets/
│   │   │       ├── calendar.php
│   │   │       ├── campaign.php
│   │   │       ├── header.php
│   │   │       ├── help.php
│   │   │       ├── onboarding.php
│   │   │       ├── preview.php
│   │   │       ├── random.php
│   │   │       ├── recent.php
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── .gitkeep
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   ├── tooltips.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── lists.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── .gitkeep
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   ├── attributes.php
│   │   │   ├── characters.php
│   │   │   ├── locations.php
│   │   │   ├── posts.php
│   │   │   ├── reminders.php
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── post_layouts.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── referrals.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── api.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── spotlights.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── cancellation.php
│   │   │   ├── cancelled.php
│   │   │   ├── confirm.php
│   │   │   ├── faq.php
│   │   │   ├── finish.php
│   │   │   ├── free-trial.php
│   │   │   ├── paypal.php
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── .gitkeep
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation-inline.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── pt-BR/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── articles.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi/
│   │   │   └── backstory.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── categories.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── logs.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── premium.php
│   │   │   └── widgets/
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── entries/
│   │   │   └── tabs.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   └── characters.php
│   │   ├── organisations.php
│   │   ├── partials.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── playstyles.php
│   │   ├── post_layouts.php
│   │   ├── posts/
│   │   │   └── templates.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── cancelled.php
│   │   │   ├── confirm.php
│   │   │   ├── faq.php
│   │   │   ├── finish.php
│   │   │   ├── free-trial.php
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── tiptap.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   └── whiteboards.php
│   ├── ru/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── limits.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   └── styles.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── conversations.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   └── upcoming.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── story.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── general.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search.php
│   │   ├── settings/
│   │   │   └── boosters.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   └── promos.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── sk/
│   │   ├── abilities.php
│   │   ├── articles.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── categories.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   └── widgets/
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── story.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── playstyles.php
│   │   ├── post_layouts.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── tiptap.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   └── visibilities.php
│   └── vendor/
│       ├── backup/
│       │   ├── ar/
│       │   │   └── notifications.php
│       │   ├── ca/
│       │   │   └── notifications.php
│       │   ├── cs/
│       │   │   └── notifications.php
│       │   ├── da/
│       │   │   └── notifications.php
│       │   ├── de/
│       │   │   └── notifications.php
│       │   ├── en/
│       │   │   └── notifications.php
│       │   ├── es/
│       │   │   └── notifications.php
│       │   ├── fa/
│       │   │   └── notifications.php
│       │   ├── fi/
│       │   │   └── notifications.php
│       │   ├── fr/
│       │   │   └── notifications.php
│       │   ├── gl/
│       │   │   └── notifications.php
│       │   ├── hi/
│       │   │   └── notifications.php
│       │   ├── hr/
│       │   │   └── notifications.php
│       │   ├── id/
│       │   │   └── notifications.php
│       │   ├── it/
│       │   │   └── notifications.php
│       │   ├── ja/
│       │   │   └── notifications.php
│       │   ├── nl/
│       │   │   └── notifications.php
│       │   ├── no/
│       │   │   └── notifications.php
│       │   ├── pl/
│       │   │   └── notifications.php
│       │   ├── pt/
│       │   │   └── notifications.php
│       │   ├── pt-BR/
│       │   │   └── notifications.php
│       │   ├── ro/
│       │   │   └── notifications.php
│       │   ├── ru/
│       │   │   └── notifications.php
│       │   ├── sk/
│       │   │   └── notifications.php
│       │   ├── tr/
│       │   │   └── notifications.php
│       │   ├── uk/
│       │   │   └── notifications.php
│       │   ├── zh-CN/
│       │   │   └── notifications.php
│       │   └── zh-TW/
│       │       └── notifications.php
│       └── dnd5emonster/
│           ├── ca/
│           │   └── template.php
│           ├── cs/
│           │   └── template.php
│           ├── de/
│           │   └── template.php
│           ├── en/
│           │   └── template.php
│           ├── es/
│           │   └── template.php
│           ├── fr/
│           │   └── template.php
│           ├── gl/
│           │   └── template.php
│           ├── hu/
│           │   └── template.php
│           ├── it/
│           │   └── template.php
│           ├── pl/
│           │   └── template.php
│           ├── pt-BR/
│           │   └── template.php
│           ├── ru/
│           │   └── template.php
│           └── sk/
│               └── template.php
├── larastan.php
├── package.json
├── phpcs.xml
├── phpmd_ruleset.xml
├── phpstan.neon
├── phpunit.xml
├── pint.json
├── public/
│   ├── .well-known/
│   │   └── security.txt
│   ├── build/
│   │   ├── assets/
│   │   │   ├── Browser.vue_vue_type_script_setup_true_lang-DjY0tfEc.js
│   │   │   ├── GalleryDialog-B3Id-RLo.js
│   │   │   ├── GalleryDialog-SGgOgWve.css
│   │   │   ├── SourceEditor-BKF0zshA.css
│   │   │   ├── SourceEditor-CaEGRaAo.js
│   │   │   ├── Tiptap-B5LGKvdR.css
│   │   │   ├── Tiptap-Bd5ZGSft.js
│   │   │   ├── _commonjsHelpers-Cpj98o6Y.js
│   │   │   ├── _plugin-vue_export-helper-DlAUqK2U.js
│   │   │   ├── abilities-_1tR-hmN.js
│   │   │   ├── app-7Sr4fLAQ.css
│   │   │   ├── app-B8BXQiap.js
│   │   │   ├── app-CcekkIPy.css
│   │   │   ├── attributes-BgyqIZFe.js
│   │   │   ├── attributes-manager-Of4dtl9o.js
│   │   │   ├── auth-Bh9mDens.css
│   │   │   ├── auth-DX8SCiWG.js
│   │   │   ├── billing-CAEv3gKN.js
│   │   │   ├── calendar-9Uf0XYJF.js
│   │   │   ├── character-BYzNtBCs.js
│   │   │   ├── coloris-DsKOFKq5.js
│   │   │   ├── colours-Dh8441-n.js
│   │   │   ├── conversation-hoDojmhJ.js
│   │   │   ├── cookieconsent-DM0O5r9k.js
│   │   │   ├── cytoscape-cose-bilkent-DRrwnnKV.js
│   │   │   ├── cytoscape-panzoom-Del_Rz3u.js
│   │   │   ├── cytoscape.esm-BJ4qIETX.js
│   │   │   ├── dark-Pb_2oqsz.css
│   │   │   ├── dashboard-CsClHCyP.css
│   │   │   ├── dashboard-DzoSMhdl.js
│   │   │   ├── dialog-DkrH_pRQ.js
│   │   │   ├── explore-PT_Dl9lc.js
│   │   │   ├── family-tree-vue-BhAkMdmq.js
│   │   │   ├── front-BDaha8uH.js
│   │   │   ├── front-CZW4xdyL.css
│   │   │   ├── gallery-DqcxhMJm.js
│   │   │   ├── history-Bum1jYKg.js
│   │   │   ├── html2canvas.esm-DXEQVQnt.js
│   │   │   ├── import-CRZICNET.js
│   │   │   ├── index-Bajpoqb9.js
│   │   │   ├── index-D5GkNzM3.js
│   │   │   ├── index.es-MeewMCO3.js
│   │   │   ├── index.esm-DvuRQLEU.js
│   │   │   ├── jspdf.es.min-DI22nqbU.js
│   │   │   ├── map-v3-_JE1ac-e.js
│   │   │   ├── maps-7UR0tBUB.css
│   │   │   ├── midnight-DjmKO7Sj.css
│   │   │   ├── preload-helper-I4rgV-VL.js
│   │   │   ├── print-B43HD77n.css
│   │   │   ├── profile-D4XIj8wj.js
│   │   │   ├── purify.es-21m173o_.js
│   │   │   ├── recovery-DDbs8NlV.js
│   │   │   ├── relations-BhqWrOkS.css
│   │   │   ├── relations-DFy0TfK7.js
│   │   │   ├── settings-HvUxJh5V.js
│   │   │   ├── sortable.esm-DdTU3J9A.js
│   │   │   ├── story-CrmLJDK_.js
│   │   │   ├── subscription-BGjwpB-C.css
│   │   │   ├── subscription-CbUaAMac.js
│   │   │   ├── summernote-DpnuH_QU.js
│   │   │   ├── theme-builder-Cvbh2cpO.js
│   │   │   ├── tinymce-C7wRrakS.css
│   │   │   ├── tippy.esm-CnBRltuW.js
│   │   │   ├── tree-Dna4NG6v.css
│   │   │   ├── v-click-outside.umd-Cl-Y_A58.js
│   │   │   ├── vendor-DEuctmxo.css
│   │   │   ├── vendor-final--o6gRmZ3.js
│   │   │   ├── vendor-tiptap-D5xFoo7B.js
│   │   │   ├── vue-tippy.esm-browser-B_r0Ygiv.js
│   │   │   ├── web-C9wt4HvN.css
│   │   │   ├── web-CwwBh20P.js
│   │   │   └── whiteboards-CYwbHh4e.js
│   │   └── manifest.json
│   ├── css/
│   │   ├── bootstrap-summernote.css
│   │   ├── bootstrap.css
│   │   ├── bootstrap.css.br
│   │   └── bootstrap.min.css.br
│   ├── fonts/
│   │   └── roboto/
│   │       ├── OFL.txt
│   │       └── README.txt
│   ├── images/
│   │   └── favicon/
│   │       └── site.webmanifest
│   ├── index.php
│   ├── js/
│   │   ├── vendor.js
│   │   ├── vendor.js.LICENSE.txt
│   │   └── vendor.js.br
│   ├── main.js
│   ├── mix-manifest.json
│   ├── privacypolicy.html
│   └── vendor/
│       ├── binarytorch/
│       │   └── larecipe/
│       │       └── assets/
│       │           ├── css/
│       │           │   ├── app.css
│       │           │   ├── font-awesome-v4-shims.css
│       │           │   └── font-awesome.css
│       │           └── js/
│       │               └── app.js
│       ├── bootstrap/
│       │   ├── css/
│       │   │   ├── bootstrap-grid.css
│       │   │   ├── bootstrap-reboot.css
│       │   │   └── bootstrap.css
│       │   └── js/
│       │       ├── bootstrap.bundle.js
│       │       └── bootstrap.js
│       ├── bootstrap-switch/
│       │   ├── css/
│       │   │   ├── bootstrap2/
│       │   │   │   └── bootstrap-switch.css
│       │   │   └── bootstrap3/
│       │   │       └── bootstrap-switch.css
│       │   └── js/
│       │       └── bootstrap-switch.js
│       ├── codemirror/
│       │   ├── addon/
│       │   │   ├── comment/
│       │   │   │   ├── comment.js
│       │   │   │   └── continuecomment.js
│       │   │   ├── dialog/
│       │   │   │   ├── dialog.css
│       │   │   │   └── dialog.js
│       │   │   ├── display/
│       │   │   │   ├── autorefresh.js
│       │   │   │   ├── fullscreen.css
│       │   │   │   ├── fullscreen.js
│       │   │   │   ├── panel.js
│       │   │   │   ├── placeholder.js
│       │   │   │   └── rulers.js
│       │   │   ├── edit/
│       │   │   │   ├── closebrackets.js
│       │   │   │   ├── closetag.js
│       │   │   │   ├── continuelist.js
│       │   │   │   ├── matchbrackets.js
│       │   │   │   ├── matchtags.js
│       │   │   │   └── trailingspace.js
│       │   │   ├── fold/
│       │   │   │   ├── brace-fold.js
│       │   │   │   ├── comment-fold.js
│       │   │   │   ├── foldcode.js
│       │   │   │   ├── foldgutter.css
│       │   │   │   ├── foldgutter.js
│       │   │   │   ├── indent-fold.js
│       │   │   │   ├── markdown-fold.js
│       │   │   │   └── xml-fold.js
│       │   │   ├── hint/
│       │   │   │   ├── anyword-hint.js
│       │   │   │   ├── css-hint.js
│       │   │   │   ├── html-hint.js
│       │   │   │   ├── javascript-hint.js
│       │   │   │   ├── show-hint.css
│       │   │   │   ├── show-hint.js
│       │   │   │   ├── sql-hint.js
│       │   │   │   └── xml-hint.js
│       │   │   ├── lint/
│       │   │   │   ├── coffeescript-lint.js
│       │   │   │   ├── css-lint.js
│       │   │   │   ├── html-lint.js
│       │   │   │   ├── javascript-lint.js
│       │   │   │   ├── json-lint.js
│       │   │   │   ├── lint.css
│       │   │   │   ├── lint.js
│       │   │   │   └── yaml-lint.js
│       │   │   ├── merge/
│       │   │   │   ├── merge.css
│       │   │   │   └── merge.js
│       │   │   ├── mode/
│       │   │   │   ├── loadmode.js
│       │   │   │   ├── multiplex.js
│       │   │   │   ├── multiplex_test.js
│       │   │   │   ├── overlay.js
│       │   │   │   └── simple.js
│       │   │   ├── runmode/
│       │   │   │   ├── colorize.js
│       │   │   │   ├── runmode-standalone.js
│       │   │   │   ├── runmode.js
│       │   │   │   └── runmode.node.js
│       │   │   ├── scroll/
│       │   │   │   ├── annotatescrollbar.js
│       │   │   │   ├── scrollpastend.js
│       │   │   │   ├── simplescrollbars.css
│       │   │   │   └── simplescrollbars.js
│       │   │   ├── search/
│       │   │   │   ├── jump-to-line.js
│       │   │   │   ├── match-highlighter.js
│       │   │   │   ├── matchesonscrollbar.css
│       │   │   │   ├── matchesonscrollbar.js
│       │   │   │   ├── search.js
│       │   │   │   └── searchcursor.js
│       │   │   ├── selection/
│       │   │   │   ├── active-line.js
│       │   │   │   ├── mark-selection.js
│       │   │   │   └── selection-pointer.js
│       │   │   ├── tern/
│       │   │   │   ├── tern.css
│       │   │   │   ├── tern.js
│       │   │   │   └── worker.js
│       │   │   └── wrap/
│       │   │       └── hardwrap.js
│       │   ├── lib/
│       │   │   ├── codemirror.css
│       │   │   └── codemirror.js
│       │   ├── mode/
│       │   │   ├── css/
│       │   │   │   ├── css.js
│       │   │   │   ├── gss.html
│       │   │   │   ├── gss_test.js
│       │   │   │   ├── index.html
│       │   │   │   ├── less.html
│       │   │   │   ├── less_test.js
│       │   │   │   ├── scss.html
│       │   │   │   ├── scss_test.js
│       │   │   │   └── test.js
│       │   │   ├── htmlmixed/
│       │   │   │   ├── htmlmixed.js
│       │   │   │   └── index.html
│       │   │   └── xml/
│       │   │       ├── index.html
│       │   │       ├── test.js
│       │   │       └── xml.js
│       │   └── theme/
│       │       ├── 3024-day.css
│       │       ├── 3024-night.css
│       │       ├── abbott.css
│       │       ├── abcdef.css
│       │       ├── ambiance-mobile.css
│       │       ├── ambiance.css
│       │       ├── ayu-dark.css
│       │       ├── ayu-mirage.css
│       │       ├── base16-dark.css
│       │       ├── base16-light.css
│       │       ├── bespin.css
│       │       ├── blackboard.css
│       │       ├── cobalt.css
│       │       ├── colorforth.css
│       │       ├── darcula.css
│       │       ├── dracula.css
│       │       ├── duotone-dark.css
│       │       ├── duotone-light.css
│       │       ├── eclipse.css
│       │       ├── elegant.css
│       │       ├── erlang-dark.css
│       │       ├── gruvbox-dark.css
│       │       ├── hopscotch.css
│       │       ├── icecoder.css
│       │       ├── idea.css
│       │       ├── isotope.css
│       │       ├── juejin.css
│       │       ├── lesser-dark.css
│       │       ├── liquibyte.css
│       │       ├── lucario.css
│       │       ├── material-darker.css
│       │       ├── material-ocean.css
│       │       ├── material-palenight.css
│       │       ├── material.css
│       │       ├── mbo.css
│       │       ├── mdn-like.css
│       │       ├── midnight.css
│       │       ├── monokai.css
│       │       ├── moxer.css
│       │       ├── neat.css
│       │       ├── neo.css
│       │       ├── night.css
│       │       ├── nord.css
│       │       ├── oceanic-next.css
│       │       ├── panda-syntax.css
│       │       ├── paraiso-dark.css
│       │       ├── paraiso-light.css
│       │       ├── pastel-on-dark.css
│       │       ├── railscasts.css
│       │       ├── rubyblue.css
│       │       ├── seti.css
│       │       ├── shadowfox.css
│       │       ├── solarized.css
│       │       ├── ssms.css
│       │       ├── the-matrix.css
│       │       ├── tomorrow-night-bright.css
│       │       ├── tomorrow-night-eighties.css
│       │       ├── ttcn.css
│       │       ├── twilight.css
│       │       ├── vibrant-ink.css
│       │       ├── xq-dark.css
│       │       ├── xq-light.css
│       │       ├── yeti.css
│       │       ├── yonce.css
│       │       └── zenburn.css
│       ├── dnd5emonster/
│       │   ├── css/
│       │   │   └── template.css
│       │   └── js/
│       │       └── template.js
│       ├── fontawesome/
│       │   └── 6.0.0/
│       │       ├── LICENSE.txt
│       │       ├── css/
│       │       │   ├── all.css
│       │       │   ├── brands.css
│       │       │   ├── fontawesome.css
│       │       │   ├── regular.css
│       │       │   ├── solid.css
│       │       │   ├── svg-with-js.css
│       │       │   ├── v4-font-face.css
│       │       │   ├── v4-shims.css
│       │       │   └── v5-font-face.css
│       │       ├── js/
│       │       │   ├── all.js
│       │       │   ├── brands.js
│       │       │   ├── conflict-detection.js
│       │       │   ├── fontawesome.js
│       │       │   ├── regular.js
│       │       │   ├── solid.js
│       │       │   └── v4-shims.js
│       │       ├── less/
│       │       │   ├── _animated.less
│       │       │   ├── _bordered-pulled.less
│       │       │   ├── _core.less
│       │       │   ├── _fixed-width.less
│       │       │   ├── _icons.less
│       │       │   ├── _list.less
│       │       │   ├── _mixins.less
│       │       │   ├── _rotated-flipped.less
│       │       │   ├── _screen-reader.less
│       │       │   ├── _shims.less
│       │       │   ├── _sizing.less
│       │       │   ├── _stacked.less
│       │       │   ├── _variables.less
│       │       │   ├── brands.less
│       │       │   ├── fontawesome.less
│       │       │   ├── regular.less
│       │       │   ├── solid.less
│       │       │   └── v4-shims.less
│       │       └── scss/
│       │           ├── _animated.scss
│       │           ├── _bordered-pulled.scss
│       │           ├── _core.scss
│       │           ├── _fixed-width.scss
│       │           ├── _functions.scss
│       │           ├── _icons.scss
│       │           ├── _list.scss
│       │           ├── _mixins.scss
│       │           ├── _rotated-flipped.scss
│       │           ├── _screen-reader.scss
│       │           ├── _shims.scss
│       │           ├── _sizing.scss
│       │           ├── _stacked.scss
│       │           ├── _variables.scss
│       │           ├── brands.scss
│       │           ├── fontawesome.scss
│       │           ├── regular.scss
│       │           ├── solid.scss
│       │           └── v4-shims.scss
│       ├── laravel-translation-manager/
│       │   ├── css/
│       │   │   ├── index.css
│       │   │   └── translations.css
│       │   └── js/
│       │       ├── index.js
│       │       ├── inflection.js
│       │       ├── rails.async.js
│       │       ├── rails.js
│       │       ├── translations.js
│       │       ├── translations_page.js
│       │       └── xregexp-all.js
│       ├── leaflet/
│       │   ├── leaflet-polyline-measure.js
│       │   ├── leaflet.editable.js
│       │   ├── leaflet.layerstree.css
│       │   ├── leaflet.layerstree.js
│       │   ├── leaflet.markercluster.js
│       │   ├── leaflet.markercluster.layersupport.js
│       │   ├── leaflet.path.drag.js
│       │   ├── leaflet.ruler-kanka.js
│       │   ├── leaflet.ruler.js
│       │   ├── leaflet.zoomcss.js
│       │   └── leaflet.zoomdisplay.js
│       ├── summernote/
│       │   ├── 0.9.1/
│       │   │   ├── font/
│       │   │   │   └── summernote.hash
│       │   │   ├── lang/
│       │   │   │   ├── summernote-ar-AR.js
│       │   │   │   ├── summernote-az-AZ.js
│       │   │   │   ├── summernote-bg-BG.js
│       │   │   │   ├── summernote-bn-BD.js
│       │   │   │   ├── summernote-ca-ES.js
│       │   │   │   ├── summernote-cs-CZ.js
│       │   │   │   ├── summernote-da-DK.js
│       │   │   │   ├── summernote-de-CH.js
│       │   │   │   ├── summernote-de-DE.js
│       │   │   │   ├── summernote-el-GR.js
│       │   │   │   ├── summernote-en-US.js
│       │   │   │   ├── summernote-es-ES.js
│       │   │   │   ├── summernote-es-EU.js
│       │   │   │   ├── summernote-fa-IR.js
│       │   │   │   ├── summernote-fi-FI.js
│       │   │   │   ├── summernote-fr-FR.js
│       │   │   │   ├── summernote-gl-ES.js
│       │   │   │   ├── summernote-he-IL.js
│       │   │   │   ├── summernote-hr-HR.js
│       │   │   │   ├── summernote-hu-HU.js
│       │   │   │   ├── summernote-id-ID.js
│       │   │   │   ├── summernote-it-IT.js
│       │   │   │   ├── summernote-ja-JP.js
│       │   │   │   ├── summernote-ko-KR.js
│       │   │   │   ├── summernote-lt-LT.js
│       │   │   │   ├── summernote-lt-LV.js
│       │   │   │   ├── summernote-mn-MN.js
│       │   │   │   ├── summernote-nb-NO.js
│       │   │   │   ├── summernote-nl-NL.js
│       │   │   │   ├── summernote-pl-PL.js
│       │   │   │   ├── summernote-pt-BR.js
│       │   │   │   ├── summernote-pt-PT.js
│       │   │   │   ├── summernote-ro-RO.js
│       │   │   │   ├── summernote-ru-RU.js
│       │   │   │   ├── summernote-sk-SK.js
│       │   │   │   ├── summernote-sl-SI.js
│       │   │   │   ├── summernote-sr-RS-Latin.js
│       │   │   │   ├── summernote-sr-RS.js
│       │   │   │   ├── summernote-sv-SE.js
│       │   │   │   ├── summernote-ta-IN.js
│       │   │   │   ├── summernote-th-TH.js
│       │   │   │   ├── summernote-tr-TR.js
│       │   │   │   ├── summernote-uk-UA.js
│       │   │   │   ├── summernote-uz-UZ.js
│       │   │   │   ├── summernote-vi-VN.js
│       │   │   │   ├── summernote-zh-CN.js
│       │   │   │   └── summernote-zh-TW.js
│       │   │   ├── plugin/
│       │   │   │   ├── databasic/
│       │   │   │   │   ├── summernote-ext-databasic.css
│       │   │   │   │   └── summernote-ext-databasic.js
│       │   │   │   ├── hello/
│       │   │   │   │   └── summernote-ext-hello.js
│       │   │   │   └── specialchars/
│       │   │   │       └── summernote-ext-specialchars.js
│       │   │   ├── summernote-bs4.css
│       │   │   ├── summernote-bs4.js
│       │   │   ├── summernote-bs5.css
│       │   │   ├── summernote-bs5.js
│       │   │   ├── summernote-lite.css
│       │   │   ├── summernote-lite.js
│       │   │   ├── summernote.css
│       │   │   └── summernote.js
│       │   ├── lang/
│       │   │   ├── summernote-ar-AR.js
│       │   │   ├── summernote-ar-AR.min.js.LICENSE.txt
│       │   │   ├── summernote-az-AZ.js
│       │   │   ├── summernote-az-AZ.min.js.LICENSE.txt
│       │   │   ├── summernote-bg-BG.js
│       │   │   ├── summernote-bg-BG.min.js.LICENSE.txt
│       │   │   ├── summernote-ca-ES.js
│       │   │   ├── summernote-ca-ES.min.js.LICENSE.txt
│       │   │   ├── summernote-cs-CZ.js
│       │   │   ├── summernote-cs-CZ.min.js.LICENSE.txt
│       │   │   ├── summernote-da-DK.js
│       │   │   ├── summernote-da-DK.min.js.LICENSE.txt
│       │   │   ├── summernote-de-DE.js
│       │   │   ├── summernote-de-DE.min.js.LICENSE.txt
│       │   │   ├── summernote-el-GR.js
│       │   │   ├── summernote-el-GR.min.js.LICENSE.txt
│       │   │   ├── summernote-es-ES.js
│       │   │   ├── summernote-es-ES.min.js.LICENSE.txt
│       │   │   ├── summernote-es-EU.js
│       │   │   ├── summernote-es-EU.min.js.LICENSE.txt
│       │   │   ├── summernote-fa-IR.js
│       │   │   ├── summernote-fa-IR.min.js.LICENSE.txt
│       │   │   ├── summernote-fi-FI.js
│       │   │   ├── summernote-fi-FI.min.js.LICENSE.txt
│       │   │   ├── summernote-fr-FR.js
│       │   │   ├── summernote-fr-FR.min.js.LICENSE.txt
│       │   │   ├── summernote-gl-ES.js
│       │   │   ├── summernote-gl-ES.min.js.LICENSE.txt
│       │   │   ├── summernote-he-IL.js
│       │   │   ├── summernote-he-IL.min.js.LICENSE.txt
│       │   │   ├── summernote-hr-HR.js
│       │   │   ├── summernote-hr-HR.min.js.LICENSE.txt
│       │   │   ├── summernote-hu-HU.js
│       │   │   ├── summernote-hu-HU.min.js.LICENSE.txt
│       │   │   ├── summernote-id-ID.js
│       │   │   ├── summernote-id-ID.min.js.LICENSE.txt
│       │   │   ├── summernote-it-IT.js
│       │   │   ├── summernote-it-IT.min.js.LICENSE.txt
│       │   │   ├── summernote-ja-JP.js
│       │   │   ├── summernote-ja-JP.min.js.LICENSE.txt
│       │   │   ├── summernote-ko-KR.js
│       │   │   ├── summernote-ko-KR.min.js.LICENSE.txt
│       │   │   ├── summernote-lt-LT.js
│       │   │   ├── summernote-lt-LT.min.js.LICENSE.txt
│       │   │   ├── summernote-lt-LV.js
│       │   │   ├── summernote-lt-LV.min.js.LICENSE.txt
│       │   │   ├── summernote-mn-MN.js
│       │   │   ├── summernote-mn-MN.min.js.LICENSE.txt
│       │   │   ├── summernote-nb-NO.js
│       │   │   ├── summernote-nb-NO.min.js.LICENSE.txt
│       │   │   ├── summernote-nl-NL.js
│       │   │   ├── summernote-nl-NL.min.js.LICENSE.txt
│       │   │   ├── summernote-pl-PL.js
│       │   │   ├── summernote-pl-PL.min.js.LICENSE.txt
│       │   │   ├── summernote-pt-BR.js
│       │   │   ├── summernote-pt-BR.min.js.LICENSE.txt
│       │   │   ├── summernote-pt-PT.js
│       │   │   ├── summernote-pt-PT.min.js.LICENSE.txt
│       │   │   ├── summernote-ro-RO.js
│       │   │   ├── summernote-ro-RO.min.js.LICENSE.txt
│       │   │   ├── summernote-ru-RU.js
│       │   │   ├── summernote-ru-RU.min.js.LICENSE.txt
│       │   │   ├── summernote-sk-SK.js
│       │   │   ├── summernote-sk-SK.min.js.LICENSE.txt
│       │   │   ├── summernote-sl-SI.js
│       │   │   ├── summernote-sl-SI.min.js.LICENSE.txt
│       │   │   ├── summernote-sr-RS-Latin.js
│       │   │   ├── summernote-sr-RS-Latin.min.js.LICENSE.txt
│       │   │   ├── summernote-sr-RS.js
│       │   │   ├── summernote-sr-RS.min.js.LICENSE.txt
│       │   │   ├── summernote-sv-SE.js
│       │   │   ├── summernote-sv-SE.min.js.LICENSE.txt
│       │   │   ├── summernote-ta-IN.js
│       │   │   ├── summernote-ta-IN.min.js.LICENSE.txt
│       │   │   ├── summernote-th-TH.js
│       │   │   ├── summernote-th-TH.min.js.LICENSE.txt
│       │   │   ├── summernote-tr-TR.js
│       │   │   ├── summernote-tr-TR.min.js.LICENSE.txt
│       │   │   ├── summernote-uk-UA.js
│       │   │   ├── summernote-uk-UA.min.js.LICENSE.txt
│       │   │   ├── summernote-uz-UZ.js
│       │   │   ├── summernote-uz-UZ.min.js.LICENSE.txt
│       │   │   ├── summernote-vi-VN.js
│       │   │   ├── summernote-vi-VN.min.js.LICENSE.txt
│       │   │   ├── summernote-zh-CN.js
│       │   │   ├── summernote-zh-CN.min.js.LICENSE.txt
│       │   │   ├── summernote-zh-TW.js
│       │   │   └── summernote-zh-TW.min.js.LICENSE.txt
│       │   ├── plugin/
│       │   │   ├── databasic/
│       │   │   │   ├── summernote-ext-databasic.css
│       │   │   │   └── summernote-ext-databasic.js
│       │   │   ├── embed/
│       │   │   │   └── summernote-embed-plugin.js
│       │   │   ├── hello/
│       │   │   │   └── summernote-ext-hello.js
│       │   │   ├── rtl/
│       │   │   │   └── summernote-ext-rtl.js
│       │   │   ├── specialchars/
│       │   │   │   └── summernote-ext-specialchars.js
│       │   │   ├── summernote-aroba-kanka/
│       │   │   │   └── summernote-aroba.js
│       │   │   ├── summernote-image-attribute.js
│       │   │   ├── summernote-table-ext.js
│       │   │   ├── summernote-table-headers/
│       │   │   │   ├── Example/
│       │   │   │   │   └── example.html
│       │   │   │   ├── LICENSE
│       │   │   │   ├── README.md
│       │   │   │   └── summernote-table-headers.js
│       │   │   ├── summernote-table-styles/
│       │   │   │   ├── Example/
│       │   │   │   │   └── example.html
│       │   │   │   ├── LICENSE
│       │   │   │   ├── README.md
│       │   │   │   └── summernote-table-styles.js
│       │   │   ├── summernote-toc-kanka/
│       │   │   │   └── summernote-toc.js
│       │   │   └── summernote-toc.js
│       │   ├── summernote-bs4.css
│       │   ├── summernote-bs4.js
│       │   ├── summernote-bs4.min.js.LICENSE.txt
│       │   ├── summernote-lite.css
│       │   ├── summernote-lite.js
│       │   ├── summernote-lite.min.js.LICENSE.txt
│       │   ├── summernote.css
│       │   ├── summernote.js
│       │   └── summernote.min.js.LICENSE.txt
│       └── telescope/
│           ├── app-dark.css
│           ├── app.css
│           ├── app.js
│           └── mix-manifest.json
├── resources/
│   ├── api-docs/
│   │   └── 1.0/
│   │       ├── abilities.md
│   │       ├── archives.md
│   │       ├── attribute-templates.md
│   │       ├── bookmarks.md
│   │       ├── calendar-weathers.md
│   │       ├── calendars.md
│   │       ├── campaigns/
│   │       │   ├── applications.md
│   │       │   ├── categories.md
│   │       │   ├── dashboard-widgets.md
│   │       │   ├── default-thumbnails.md
│   │       │   ├── images.md
│   │       │   ├── members.md
│   │       │   ├── modules.md
│   │       │   ├── roles.md
│   │       │   ├── statuses.md
│   │       │   └── styles.md
│   │       ├── campaigns.md
│   │       ├── characters.md
│   │       ├── conversations.md
│   │       ├── creatures.md
│   │       ├── dice-rolls.md
│   │       ├── entities/
│   │       │   ├── attributes.md
│   │       │   ├── connections.md
│   │       │   ├── entity-abilities.md
│   │       │   ├── entity-aliases.md
│   │       │   ├── entity-assets.md
│   │       │   ├── entity-files.md
│   │       │   ├── entity-image.md
│   │       │   ├── entity-inventory.md
│   │       │   ├── entity-links.md
│   │       │   ├── entity-mentions.md
│   │       │   ├── entity-permissions.md
│   │       │   ├── entity-tags.md
│   │       │   ├── entity-types.md
│   │       │   ├── posts.md
│   │       │   ├── reminders.md
│   │       │   └── templates.md
│   │       ├── entities.md
│   │       ├── events.md
│   │       ├── families.md
│   │       ├── index.md
│   │       ├── items.md
│   │       ├── journals.md
│   │       ├── locations.md
│   │       ├── map_groups.md
│   │       ├── map_layers.md
│   │       ├── map_markers.md
│   │       ├── maps.md
│   │       ├── misc/
│   │       │   ├── filters.md
│   │       │   ├── last-sync.md
│   │       │   ├── pagination.md
│   │       │   ├── permissions-test.md
│   │       │   └── visibilities.md
│   │       ├── notes.md
│   │       ├── organisation-members.md
│   │       ├── organisations.md
│   │       ├── overview.md
│   │       ├── post-layout.md
│   │       ├── profile.md
│   │       ├── quests.md
│   │       ├── races.md
│   │       ├── relations.md
│   │       ├── search.md
│   │       ├── setup.md
│   │       ├── tags.md
│   │       ├── timeline-elements.md
│   │       ├── timeline-eras.md
│   │       ├── timelines.md
│   │       └── troubleshooting.md
│   ├── assets/
│   │   └── components/
│   │       └── rpg/
│   │           └── scss/
│   │               ├── .scss-lint.yml
│   │               ├── _bordered-pulled.scss
│   │               ├── _core.scss
│   │               ├── _fixed-width.scss
│   │               ├── _icons.scss
│   │               ├── _larger.scss
│   │               ├── _list.scss
│   │               ├── _mixins.scss
│   │               ├── _path.scss
│   │               ├── _rotated-flipped.scss
│   │               ├── _spinning.scss
│   │               ├── _stacked.scss
│   │               ├── _variables.scss
│   │               └── rpg-awesome.scss
│   ├── css/
│   │   ├── alerts.css
│   │   ├── app.css
│   │   ├── attributes/
│   │   │   └── attributes.css
│   │   ├── auth.css
│   │   ├── badge.css
│   │   ├── buttons.css
│   │   ├── calendar.css
│   │   ├── campaign.css
│   │   ├── code.css
│   │   ├── dashboard.css
│   │   ├── entity.css
│   │   ├── families/
│   │   │   └── tree.css
│   │   ├── freyja/
│   │   │   ├── freyja.css
│   │   │   ├── header.css
│   │   │   └── sidebar.css
│   │   ├── front.css
│   │   ├── html/
│   │   │   ├── dialog.css
│   │   │   ├── dl.css
│   │   │   ├── summary.css
│   │   │   └── table.css
│   │   ├── maps/
│   │   │   ├── leaflet.zoomdisplay.css
│   │   │   └── maps.css
│   │   ├── mobile.css
│   │   ├── premium.css
│   │   ├── print/
│   │   │   ├── general.css
│   │   │   └── print.css
│   │   ├── quest.css
│   │   ├── quick-creator.css
│   │   ├── range.css
│   │   ├── relations.css
│   │   ├── sortable.css
│   │   ├── subscription.css
│   │   ├── tabs.css
│   │   ├── themes/
│   │   │   ├── base.css
│   │   │   ├── colour.css
│   │   │   ├── dark.css
│   │   │   ├── light.css
│   │   │   └── midnight.css
│   │   ├── timeline.css
│   │   ├── toast.css
│   │   ├── toggle.css
│   │   ├── tooltip.css
│   │   ├── typography.css
│   │   ├── vendor.css
│   │   └── vendors/
│   │       ├── adminlte.css
│   │       ├── editor.css
│   │       └── tinymce.css
│   ├── js/
│   │   ├── abilities.js
│   │   ├── ads.js
│   │   ├── animations.js
│   │   ├── app.js
│   │   ├── attributes-manager.js
│   │   ├── attributes.js
│   │   ├── auth.js
│   │   ├── banner.js
│   │   ├── billing.js
│   │   ├── bookmarks.js
│   │   ├── calendar.js
│   │   ├── campaign.js
│   │   ├── campaigns/
│   │   │   ├── import.js
│   │   │   └── theme-builder.js
│   │   ├── clipboard.js
│   │   ├── components/
│   │   │   ├── Dropdown.vue
│   │   │   ├── abilities/
│   │   │   │   ├── Abilities.vue
│   │   │   │   ├── Ability.vue
│   │   │   │   └── Parent.vue
│   │   │   ├── attributes/
│   │   │   │   ├── Attribute.vue
│   │   │   │   ├── Form.vue
│   │   │   │   ├── Manager.vue
│   │   │   │   └── MentionField.vue
│   │   │   ├── connections/
│   │   │   │   └── Web.vue
│   │   │   ├── conversation/
│   │   │   │   ├── Conversation.vue
│   │   │   │   ├── Form.vue
│   │   │   │   ├── Message.vue
│   │   │   │   └── Messages.vue
│   │   │   ├── delete-confirm.js
│   │   │   ├── families/
│   │   │   │   ├── ChildrenLine.vue
│   │   │   │   ├── FamilyChildren.vue
│   │   │   │   ├── FamilyEntity.vue
│   │   │   │   ├── FamilyNode.vue
│   │   │   │   ├── FamilyParentChildrenLine.vue
│   │   │   │   ├── FamilyRelation.vue
│   │   │   │   ├── FamilyRelations.vue
│   │   │   │   ├── FamilyTree.vue
│   │   │   │   └── RelationLine.vue
│   │   │   ├── fields/
│   │   │   │   ├── AliasPill.vue
│   │   │   │   ├── EntityName.vue
│   │   │   │   └── SimilarEntityAlert.vue
│   │   │   ├── icons/
│   │   │   │   └── GridSvg.vue
│   │   │   ├── layout/
│   │   │   │   ├── Campaign.vue
│   │   │   │   ├── Lookup/
│   │   │   │   │   ├── EntityPreview.vue
│   │   │   │   │   ├── LookupEntity.vue
│   │   │   │   │   └── LookupPage.vue
│   │   │   │   ├── NavSearch.vue
│   │   │   │   ├── NavSwitcher.vue
│   │   │   │   ├── NavToggler.vue
│   │   │   │   ├── Notification.vue
│   │   │   │   └── Release.vue
│   │   │   ├── select2.js
│   │   │   ├── subscription/
│   │   │   │   └── BillingManagement.vue
│   │   │   └── whiteboards/
│   │   │       ├── Entity.vue
│   │   │       ├── EntitySearch.vue
│   │   │       ├── Reset.vue
│   │   │       ├── Settings.vue
│   │   │       └── Whiteboard.vue
│   │   ├── composables/
│   │   │   └── useEntitySimilarity.js
│   │   ├── connections/
│   │   │   └── web.js
│   │   ├── conversation.js
│   │   ├── cookieconsent.js
│   │   ├── crud.js
│   │   ├── dashboard.js
│   │   ├── dashboards/
│   │   │   ├── onboarding/
│   │   │   │   ├── Onboarding.vue
│   │   │   │   └── onboarding.js
│   │   │   └── widgets/
│   │   │       └── getting-started/
│   │   │           └── GettingStarted.vue
│   │   ├── datagrids.js
│   │   ├── datagrids2.js
│   │   ├── echo.js
│   │   ├── editors/
│   │   │   ├── summernote.js
│   │   │   └── tiptap/
│   │   │       ├── SourceEditor.vue
│   │   │       ├── Tiptap.vue
│   │   │       ├── bubblemenus/
│   │   │       │   ├── ColorPicker.vue
│   │   │       │   ├── ImageBubbleMenu.vue
│   │   │       │   ├── LinkBubbleMenu.vue
│   │   │       │   ├── MentionBubbleMenu.vue
│   │   │       │   ├── TableBubbleMenu.vue
│   │   │       │   └── TextBubbleMenu.vue
│   │   │       ├── extensions/
│   │   │       │   ├── CustomHeading.ts
│   │   │       │   ├── CustomImage.ts
│   │   │       │   ├── Details.ts
│   │   │       │   ├── DetailsWrapper.vue
│   │   │       │   ├── Div.ts
│   │   │       │   ├── Iframe.ts
│   │   │       │   ├── gallery/
│   │   │       │   │   ├── Gallery.ts
│   │   │       │   │   └── GalleryDialog.vue
│   │   │       │   ├── images/
│   │   │       │   │   ├── Image.ts
│   │   │       │   │   └── Images.vue
│   │   │       │   ├── mentions/
│   │   │       │   │   ├── Mention.ts
│   │   │       │   │   ├── MentionList.vue
│   │   │       │   │   ├── MentionParser.ts
│   │   │       │   │   └── suggestion.ts
│   │   │       │   ├── slashcommand/
│   │   │       │   │   ├── SlashCommand.ts
│   │   │       │   │   ├── SlashCommandList.vue
│   │   │       │   │   └── suggestion.ts
│   │   │       │   └── table/
│   │   │       │       ├── CustomTableCell.ts
│   │   │       │       ├── CustomTableHeader.ts
│   │   │       │       └── TableWithControls.ts
│   │   │       ├── index.js
│   │   │       ├── toolbar/
│   │   │       │   └── Button.vue
│   │   │       └── utils.ts
│   │   ├── entities/
│   │   │   ├── EntityAdSlot.vue
│   │   │   ├── EntityCard.vue
│   │   │   ├── EntityGrid.vue
│   │   │   ├── EntityListing.vue
│   │   │   ├── EntityRow.vue
│   │   │   ├── EntityTable.vue
│   │   │   ├── composables/
│   │   │   │   ├── useBulkActions.ts
│   │   │   │   ├── useColumns.ts
│   │   │   │   ├── useEntityApi.ts
│   │   │   │   ├── useLayout.ts
│   │   │   │   ├── useLongPress.ts
│   │   │   │   ├── useNesting.ts
│   │   │   │   ├── useOrdering.ts
│   │   │   │   └── usePerPage.ts
│   │   │   └── explore.js
│   │   ├── entities.js
│   │   ├── events.js
│   │   ├── family-tree-vue.js
│   │   ├── forms/
│   │   │   ├── calendar-date.js
│   │   │   ├── calendar.js
│   │   │   ├── character.js
│   │   │   └── entity-name.js
│   │   ├── front.js
│   │   ├── gallery/
│   │   │   ├── Browser.vue
│   │   │   ├── File.vue
│   │   │   ├── Gallery.vue
│   │   │   ├── Preview.vue
│   │   │   ├── Selection.vue
│   │   │   ├── gallery.js
│   │   │   └── selection.js
│   │   ├── header.js
│   │   ├── history.js
│   │   ├── keep-alive.js
│   │   ├── keyboard.js
│   │   ├── location/
│   │   │   └── map-v3.js
│   │   ├── maintenance.js
│   │   ├── members.js
│   │   ├── post.js
│   │   ├── profile.js
│   │   ├── quick-creator.js
│   │   ├── recovery/
│   │   │   ├── Element.vue
│   │   │   ├── Recovery.vue
│   │   │   └── recovery.js
│   │   ├── relations.js
│   │   ├── settings.js
│   │   ├── share.js
│   │   ├── story.js
│   │   ├── subscription.js
│   │   ├── tags.js
│   │   ├── timelines.js
│   │   ├── toast.js
│   │   ├── utility/
│   │   │   ├── CampaignShareModal.vue
│   │   │   ├── EntityShareModal.vue
│   │   │   ├── colour-picker.js
│   │   │   ├── colours.ts
│   │   │   ├── dialog.js
│   │   │   ├── formError.js
│   │   │   ├── sortable.js
│   │   │   └── tippy.js
│   │   ├── vendor-final.js
│   │   ├── vendor.js
│   │   ├── visibility-picker.js
│   │   ├── webhooks.js
│   │   └── whiteboards.js
│   ├── vendor/
│   │   └── tinymce/
│   │       ├── langs/
│   │       │   ├── ca.js
│   │       │   ├── de.js
│   │       │   ├── es.js
│   │       │   ├── fr.js
│   │       │   ├── he.js
│   │       │   ├── hr.js
│   │       │   ├── hu.js
│   │       │   ├── it.js
│   │       │   ├── nl.js
│   │       │   ├── pt-BR.js
│   │       │   ├── readme.md
│   │       │   ├── ru.js
│   │       │   └── sk.js
│   │       └── plugins/
│   │           └── mention/
│   │               ├── .gitignore
│   │               ├── .jshintrc
│   │               ├── .travis.yml
│   │               ├── README.md
│   │               ├── bower.json
│   │               ├── css/
│   │               │   ├── autocomplete.css
│   │               │   └── rte-content.css
│   │               ├── examples/
│   │               │   └── commonjs/
│   │               │       ├── .gitignore
│   │               │       ├── index.html
│   │               │       ├── main.js
│   │               │       ├── package.json
│   │               │       └── webpack.config.js
│   │               ├── gulpfile.js
│   │               ├── mention/
│   │               │   └── plugin.js
│   │               ├── package.json
│   │               ├── plugin.js
│   │               └── tests/
│   │                   ├── test_mention.js
│   │                   └── test_runner.html
│   └── views/
│       ├── abilities/
│       │   ├── abilities.blade.php
│       │   ├── entities/
│       │   │   ├── _form.blade.php
│       │   │   ├── actions/
│       │   │   │   └── delete.blade.php
│       │   │   └── create.blade.php
│       │   ├── entities.blade.php
│       │   ├── form/
│       │   │   └── _entry.blade.php
│       │   ├── panels/
│       │   │   ├── abilities.blade.php
│       │   │   └── entities.blade.php
│       │   └── show.blade.php
│       ├── account/
│       │   ├── billing/
│       │   │   └── information/
│       │   │       ├── _form.blade.php
│       │   │       └── form.blade.php
│       │   ├── email/
│       │   │   ├── _form.blade.php
│       │   │   └── form.blade.php
│       │   ├── password/
│       │   │   ├── _form.blade.php
│       │   │   └── form.blade.php
│       │   └── social/
│       │       └── form.blade.php
│       ├── ads/
│       │   ├── anchor.blade.php
│       │   ├── cta.blade.php
│       │   ├── inline.blade.php
│       │   ├── nitro/
│       │   │   └── styles.blade.php
│       │   ├── siderail_left.blade.php
│       │   ├── siderail_right.blade.php
│       │   ├── table.blade.php
│       │   ├── top.blade.php
│       │   └── video.blade.php
│       ├── attribute_templates/
│       │   ├── datagrid.blade.php
│       │   ├── form/
│       │   │   └── _entry.blade.php
│       │   └── show.blade.php
│       ├── auth/
│       │   ├── login.blade.php
│       │   ├── otp.blade.php
│       │   ├── passwords/
│       │   │   ├── confirm.blade.php
│       │   │   ├── email.blade.php
│       │   │   └── reset.blade.php
│       │   └── register.blade.php
│       ├── billing/
│       │   ├── history.blade.php
│       │   └── payment-method.blade.php
│       ├── bookmarks/
│       │   ├── datagrid.blade.php
│       │   ├── forms/
│       │   │   ├── _dashboard.blade.php
│       │   │   ├── _entity.blade.php
│       │   │   ├── _entry.blade.php
│       │   │   ├── _random.blade.php
│       │   │   ├── _type.blade.php
│       │   │   ├── create.blade.php
│       │   │   └── edit.blade.php
│       │   └── reorder.blade.php
│       ├── calendars/
│       │   ├── _calendar.blade.php
│       │   ├── _day.blade.php
│       │   ├── _intercalary.blade.php
│       │   ├── _week.blade.php
│       │   ├── events.blade.php
│       │   ├── form/
│       │   │   ├── _calendar.blade.php
│       │   │   ├── _entry.blade.php
│       │   │   ├── _months.blade.php
│       │   │   ├── _moons.blade.php
│       │   │   ├── _panes.blade.php
│       │   │   ├── _seasons.blade.php
│       │   │   ├── _tabs.blade.php
│       │   │   └── _weeks.blade.php
│       │   ├── panels/
│       │   │   └── events.blade.php
│       │   ├── reminders/
│       │   │   ├── _entity_form.blade.php
│       │   │   ├── _form.blade.php
│       │   │   ├── _subform.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── create_from_entity.blade.php
│       │   │   └── edit.blade.php
│       │   ├── show.blade.php
│       │   ├── weather/
│       │   │   ├── _form.blade.php
│       │   │   ├── create.blade.php
│       │   │   └── edit.blade.php
│       │   └── year-switcher/
│       │       └── _footer.blade.php
│       ├── campaigns/
│       │   ├── _overview.blade.php
│       │   ├── achievements/
│       │   │   ├── _finished.blade.php
│       │   │   ├── _locked.blade.php
│       │   │   └── index.blade.php
│       │   ├── applications/
│       │   │   ├── _apply.blade.php
│       │   │   ├── _list.blade.php
│       │   │   ├── _requirements.blade.php
│       │   │   ├── _toggle.blade.php
│       │   │   ├── _toggle_form.blade.php
│       │   │   ├── _view.blade.php
│       │   │   ├── apply.blade.php
│       │   │   ├── dashboard_widget.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── index.blade.php
│       │   │   ├── setup.blade.php
│       │   │   ├── show.blade.php
│       │   │   └── view.blade.php
│       │   ├── default-images/
│       │   │   ├── _form.blade.php
│       │   │   ├── _thumbnail.blade.php
│       │   │   ├── create.blade.php
│       │   │   └── index.blade.php
│       │   ├── defaults/
│       │   │   └── index.blade.php
│       │   ├── delete.blade.php
│       │   ├── entity-types/
│       │   │   ├── _actions.blade.php
│       │   │   ├── _form.blade.php
│       │   │   ├── box/
│       │   │   │   ├── custom.blade.php
│       │   │   │   ├── default.blade.php
│       │   │   │   └── new.blade.php
│       │   │   ├── confirm.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── max-reached.blade.php
│       │   │   └── not-premium.blade.php
│       │   ├── export.blade.php
│       │   ├── forms/
│       │   │   ├── _tabs.blade.php
│       │   │   ├── _visibility.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── dashboard-header/
│       │   │   │   ├── _form.blade.php
│       │   │   │   └── edit.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── modals/
│       │   │   │   ├── _image.blade.php
│       │   │   │   ├── _visibility-form.blade.php
│       │   │   │   ├── image.blade.php
│       │   │   │   └── visibility.blade.php
│       │   │   ├── panes/
│       │   │   │   ├── _discovery.blade.php
│       │   │   │   ├── dashboard.blade.php
│       │   │   │   ├── entry.blade.php
│       │   │   │   ├── public.blade.php
│       │   │   │   └── ui.blade.php
│       │   │   └── standard.blade.php
│       │   ├── import/
│       │   │   ├── index.blade.php
│       │   │   └── process-csv.blade.php
│       │   ├── invites/
│       │   │   ├── _form.blade.php
│       │   │   └── create.blade.php
│       │   ├── leave/
│       │   │   ├── _actions.blade.php
│       │   │   └── _body.blade.php
│       │   ├── leave.blade.php
│       │   ├── logs/
│       │   │   ├── _list.blade.php
│       │   │   └── index.blade.php
│       │   ├── markdown.blade.php
│       │   ├── members/
│       │   │   ├── _form.blade.php
│       │   │   ├── _invites.blade.php
│       │   │   ├── delete.blade.php
│       │   │   ├── index.blade.php
│       │   │   └── update.blade.php
│       │   ├── modules/
│       │   │   ├── _custom.blade.php
│       │   │   ├── _default.blade.php
│       │   │   ├── _features.blade.php
│       │   │   ├── _form.blade.php
│       │   │   ├── box.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── index.blade.php
│       │   │   └── not-premium.blade.php
│       │   ├── plugins/
│       │   │   ├── confirm.blade.php
│       │   │   ├── index.blade.php
│       │   │   └── info.blade.php
│       │   ├── plugins.blade.php
│       │   ├── recovery/
│       │   │   └── index.blade.php
│       │   ├── roles/
│       │   │   ├── _form.blade.php
│       │   │   ├── _members.blade.php
│       │   │   ├── _pretty.blade.php
│       │   │   ├── _public.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── index.blade.php
│       │   │   ├── rows/
│       │   │   │   └── permissions.blade.php
│       │   │   ├── show.blade.php
│       │   │   └── users/
│       │   │       ├── _form.blade.php
│       │   │       └── create.blade.php
│       │   ├── roles.blade.php
│       │   ├── share/
│       │   │   └── setup.blade.php
│       │   ├── show.blade.php
│       │   ├── sidebar/
│       │   │   └── index.blade.php
│       │   ├── stats/
│       │   │   └── index.blade.php
│       │   ├── styles/
│       │   │   ├── _form-footer.blade.php
│       │   │   ├── _form.blade.php
│       │   │   ├── _preview.blade.php
│       │   │   ├── _reorder.blade.php
│       │   │   ├── builder.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── index.blade.php
│       │   │   └── theme.blade.php
│       │   ├── webhooks/
│       │   │   ├── _form.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── edit.blade.php
│       │   │   └── index.blade.php
│       │   └── webhooks.blade.php
│       ├── characters/
│       │   ├── families/
│       │   │   ├── _reorder.blade.php
│       │   │   └── reorder.blade.php
│       │   ├── form/
│       │   │   ├── _entry.blade.php
│       │   │   ├── _organisations.blade.php
│       │   │   ├── _panes.blade.php
│       │   │   ├── _tabs.blade.php
│       │   │   └── _traits.blade.php
│       │   ├── organisations/
│       │   │   ├── _form.blade.php
│       │   │   ├── create.blade.php
│       │   │   └── edit.blade.php
│       │   ├── organisations.blade.php
│       │   ├── panels/
│       │   │   ├── _appearance.blade.php
│       │   │   ├── _buttons.blade.php
│       │   │   ├── _personality.blade.php
│       │   │   └── organisations.blade.php
│       │   └── races/
│       │       ├── _reorder.blade.php
│       │       └── reorder.blade.php
│       ├── components/
│       │   ├── ad.blade.php
│       │   ├── ads/
│       │   │   └── native.blade.php
│       │   ├── alert.blade.php
│       │   ├── badge.blade.php
│       │   ├── box/
│       │   │   └── footer.blade.php
│       │   ├── box.blade.php
│       │   ├── button/
│       │   │   └── delete-confirm.blade.php
│       │   ├── buttons/
│       │   │   ├── confirm-delete.blade.php
│       │   │   └── confirm.blade.php
│       │   ├── campaigns/
│       │   │   └── module-box.blade.php
│       │   ├── character-sheet.blade.php
│       │   ├── checkbox.blade.php
│       │   ├── dashboards/
│       │   │   └── widgets/
│       │   │       └── selection.blade.php
│       │   ├── date.blade.php
│       │   ├── dialog/
│       │   │   ├── article.blade.php
│       │   │   ├── close.blade.php
│       │   │   ├── footer.blade.php
│       │   │   └── header.blade.php
│       │   ├── dialog.blade.php
│       │   ├── dropdowns/
│       │   │   ├── divider.blade.php
│       │   │   ├── item.blade.php
│       │   │   └── section.blade.php
│       │   ├── entities/
│       │   │   ├── submenu.blade.php
│       │   │   └── thumbnail.blade.php
│       │   ├── entity-link.blade.php
│       │   ├── faq-element.blade.php
│       │   ├── form/
│       │   │   ├── abilities.blade.php
│       │   │   ├── characters.blade.php
│       │   │   ├── entity_types.blade.php
│       │   │   ├── families.blade.php
│       │ 

================================================
FILE CONTENTS
================================================

================================================
FILE: .claude/commands/translate.md
================================================
# Translate Missing Strings

Translate missing translations for the given locale.

Usage: /translate [locale_code] [locale_name]
Example: /translate fr French

## Steps

1. Run `php artisan translations:missing $ARG1` and capture the output
2. For each missing key/string:
    - Translate the English string to the target language naturally (not literally)
    - Preserve `:variable` placeholders, `<html>` tags, and pluralization syntax exactly
    - Match tone/formality of existing translations (check a few rows in ltm_translations first)
3. Insert each translation into `ltm_translations`. status field = 1. saved_value = null.
4. Confirm count of translations added

## Rules
- Never guess at technical terms — keep English if unsure
- Kanka-specific terms (Whiteboard) stay in English unless an equivalent already exists in the DB for that locale
```

Then invoke as:
```
/translate fr French
/translate de German
/translate es Spanish

## Locale rules

Apply these rules based on the target locale:

**fr**
- Use Swiss French spelling and idioms
- No space before `:` `!` `?` `;` (Swiss convention, unlike standard French)
- Prefer Swiss vocabulary where it differs (e.g. "septante" vs "soixante-dix" if numbers appear)

**es**
- Default to neutral Latin American Spanish unless specified otherwise


================================================
FILE: .claude/skills/livewire-development/SKILL.md
================================================
---
name: livewire-development
description: >-
  Develops reactive Livewire 3 components. Activates when creating, updating, or modifying
  Livewire components; working with wire:model, wire:click, wire:loading, or any wire: directives;
  adding real-time updates, loading states, or reactivity; debugging component behavior;
  writing Livewire tests; or when the user mentions Livewire, component, counter, or reactive UI.
---

# Livewire Development

## When to Apply

Activate this skill when:
- Creating new Livewire components
- Modifying existing component state or behavior
- Debugging reactivity or lifecycle issues
- Writing Livewire component tests
- Adding Alpine.js interactivity to components
- Working with wire: directives

## Documentation

Use `search-docs` for detailed Livewire 3 patterns and documentation.

## Basic Usage

### Creating Components

Use the `php artisan make:livewire [Posts\CreatePost]` Artisan command to create new components.

### Fundamental Concepts

- State should live on the server, with the UI reflecting it.
- All Livewire requests hit the Laravel backend; they're like regular HTTP requests. Always validate form data and run authorization checks in Livewire actions.

## Livewire 3 Specifics

### Key Changes From Livewire 2

These things changed in Livewire 3, but may not have been updated in this application. Verify this application's setup to ensure you follow existing conventions.
- Use `wire:model.live` for real-time updates, `wire:model` is now deferred by default.
- Components now use the `App\Livewire` namespace (not `App\Http\Livewire`).
- Use `$this->dispatch()` to dispatch events (not `emit` or `dispatchBrowserEvent`).
- Use the `components.layouts.app` view as the typical layout path (not `layouts.app`).

### New Directives

- `wire:show`, `wire:transition`, `wire:cloak`, `wire:offline`, `wire:target` are available for use.

### Alpine Integration

- Alpine is now included with Livewire; don't manually include Alpine.js.
- Plugins included with Alpine: persist, intersect, collapse, and focus.

## Best Practices

### Component Structure

- Livewire components require a single root element.
- Use `wire:loading` and `wire:dirty` for delightful loading states.

### Using Keys in Loops

<code-snippet name="Wire Key in Loops" lang="blade">

@foreach ($items as $item)
    <div wire:key="item-{{ $item->id }}">
        {{ $item->name }}
    </div>
@endforeach

</code-snippet>

### Lifecycle Hooks

Prefer lifecycle hooks like `mount()`, `updatedFoo()` for initialization and reactive side effects:

<code-snippet name="Lifecycle Hook Examples" lang="php">

public function mount(User $user) { $this->user = $user; }
public function updatedSearch() { $this->resetPage(); }

</code-snippet>

## JavaScript Hooks

You can listen for `livewire:init` to hook into Livewire initialization:

<code-snippet name="Livewire Init Hook Example" lang="js">

document.addEventListener('livewire:init', function () {
    Livewire.hook('request', ({ fail }) => {
        if (fail && fail.status === 419) {
            alert('Your session expired');
        }
    });

    Livewire.hook('message.failed', (message, component) => {
        console.error(message);
    });
});

</code-snippet>

## Testing

<code-snippet name="Example Livewire Component Test" lang="php">

Livewire::test(Counter::class)
    ->assertSet('count', 0)
    ->call('increment')
    ->assertSet('count', 1)
    ->assertSee(1)
    ->assertStatus(200);

</code-snippet>

<code-snippet name="Testing Livewire Component Exists on Page" lang="php">

$this->get('/posts/create')
    ->assertSeeLivewire(CreatePost::class);

</code-snippet>

## Common Pitfalls

- Forgetting `wire:key` in loops causes unexpected behavior when items change
- Using `wire:model` expecting real-time updates (use `wire:model.live` instead in v3)
- Not validating/authorizing in Livewire actions (treat them like HTTP requests)
- Including Alpine.js separately when it's already bundled with Livewire 3

================================================
FILE: .claude/skills/pest-testing/SKILL.md
================================================
---
name: pest-testing
description: >-
  Tests applications using the Pest 3 PHP framework. Activates when writing tests, creating unit or feature
  tests, adding assertions, testing Livewire components, architecture testing, debugging test failures,
  working with datasets or mocking; or when the user mentions test, spec, TDD, expects, assertion,
  coverage, or needs to verify functionality works.
---

# Pest Testing 3

## When to Apply

Activate this skill when:
- Creating new tests (unit or feature)
- Modifying existing tests
- Debugging test failures
- Working with datasets, mocking, or test organization
- Writing architecture tests

## Documentation

Use `search-docs` for detailed Pest 3 patterns and documentation.

## Basic Usage

### Creating Tests

All tests must be written using Pest. Use `php artisan make:test --pest {name}`.

### Test Organization

- Tests live in the `tests/Feature` and `tests/Unit` directories.
- Do NOT remove tests without approval - these are core application code.
- Test happy paths, failure paths, and edge cases.

### Basic Test Structure

<code-snippet name="Basic Pest Test Example" lang="php">

it('is true', function () {
    expect(true)->toBeTrue();
});

</code-snippet>

### Running Tests

- Run minimal tests with filter before finalizing: `php artisan test --compact --filter=testName`.
- Run all tests: `php artisan test --compact`.
- Run file: `php artisan test --compact tests/Feature/ExampleTest.php`.

## Assertions

Use specific assertions (`assertSuccessful()`, `assertNotFound()`) instead of `assertStatus()`:

<code-snippet name="Pest Response Assertion" lang="php">

it('returns all', function () {
    $this->postJson('/api/docs', [])->assertSuccessful();
});

</code-snippet>

| Use | Instead of |
|-----|------------|
| `assertSuccessful()` | `assertStatus(200)` |
| `assertNotFound()` | `assertStatus(404)` |
| `assertForbidden()` | `assertStatus(403)` |

## Mocking

Import mock function before use: `use function Pest\Laravel\mock;`

## Datasets

Use datasets for repetitive tests (validation rules, etc.):

<code-snippet name="Pest Dataset Example" lang="php">

it('has emails', function (string $email) {
    expect($email)->not->toBeEmpty();
})->with([
    'james' => 'james@laravel.com',
    'taylor' => 'taylor@laravel.com',
]);

</code-snippet>

## Pest 3 Features

### Architecture Testing

Pest 3 includes architecture testing to enforce code conventions:

<code-snippet name="Architecture Test Example" lang="php">

arch('controllers')
    ->expect('App\Http\Controllers')
    ->toExtendNothing()
    ->toHaveSuffix('Controller');

arch('models')
    ->expect('App\Models')
    ->toExtend('Illuminate\Database\Eloquent\Model');

arch('no debugging')
    ->expect(['dd', 'dump', 'ray'])
    ->not->toBeUsed();

</code-snippet>

### Type Coverage

Pest 3 provides improved type coverage analysis. Run with `--type-coverage` flag.

## Common Pitfalls

- Not importing `use function Pest\Laravel\mock;` before using mock
- Using `assertStatus(200)` instead of `assertSuccessful()`
- Forgetting datasets for repetitive validation tests
- Deleting tests without approval

================================================
FILE: .claude/skills/tailwindcss-development/SKILL.md
================================================
---
name: tailwindcss-development
description: >-
  Styles applications using Tailwind CSS v4 utilities. Activates when adding styles, restyling components,
  working with gradients, spacing, layout, flex, grid, responsive design, dark mode, colors,
  typography, or borders; or when the user mentions CSS, styling, classes, Tailwind, restyle,
  hero section, cards, buttons, or any visual/UI changes.
---

# Tailwind CSS Development

## When to Apply

Activate this skill when:

- Adding styles to components or pages
- Working with responsive design
- Implementing dark mode
- Extracting repeated patterns into components
- Debugging spacing or layout issues

## Documentation

Use `search-docs` for detailed Tailwind CSS v4 patterns and documentation.

## Basic Usage

- Use Tailwind CSS classes to style HTML. Check and follow existing Tailwind conventions in the project before introducing new patterns.
- Offer to extract repeated patterns into components that match the project's conventions (e.g., Blade, JSX, Vue).
- Consider class placement, order, priority, and defaults. Remove redundant classes, add classes to parent or child elements carefully to reduce repetition, and group elements logically.

## Tailwind CSS v4 Specifics

- Always use Tailwind CSS v4 and avoid deprecated utilities.
- `corePlugins` is not supported in Tailwind v4.

### CSS-First Configuration

In Tailwind v4, configuration is CSS-first using the `@theme` directive — no separate `tailwind.config.js` file is needed:

<code-snippet name="CSS-First Config" lang="css">
@theme {
  --color-brand: oklch(0.72 0.11 178);
}
</code-snippet>

### Import Syntax

In Tailwind v4, import Tailwind with a regular CSS `@import` statement instead of the `@tailwind` directives used in v3:

<code-snippet name="v4 Import Syntax" lang="diff">
- @tailwind base;
- @tailwind components;
- @tailwind utilities;
+ @import "tailwindcss";
</code-snippet>

### Replaced Utilities

Tailwind v4 removed deprecated utilities. Use the replacements shown below. Opacity values remain numeric.

| Deprecated | Replacement |
|------------|-------------|
| bg-opacity-* | bg-black/* |
| text-opacity-* | text-black/* |
| border-opacity-* | border-black/* |
| divide-opacity-* | divide-black/* |
| ring-opacity-* | ring-black/* |
| placeholder-opacity-* | placeholder-black/* |
| flex-shrink-* | shrink-* |
| flex-grow-* | grow-* |
| overflow-ellipsis | text-ellipsis |
| decoration-slice | box-decoration-slice |
| decoration-clone | box-decoration-clone |

## Spacing

Use `gap` utilities instead of margins for spacing between siblings:

<code-snippet name="Gap Utilities" lang="html">
<div class="flex gap-8">
    <div>Item 1</div>
    <div>Item 2</div>
</div>
</code-snippet>

## Dark Mode

If existing pages and components support dark mode, new pages and components must support it the same way, typically using the `dark:` variant:

<code-snippet name="Dark Mode" lang="html">
<div class="bg-white dark:bg-gray-900 text-gray-900 dark:text-white">
    Content adapts to color scheme
</div>
</code-snippet>

## Common Patterns

### Flexbox Layout

<code-snippet name="Flexbox Layout" lang="html">
<div class="flex items-center justify-between gap-4">
    <div>Left content</div>
    <div>Right content</div>
</div>
</code-snippet>

### Grid Layout

<code-snippet name="Grid Layout" lang="html">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
    <div>Card 1</div>
    <div>Card 2</div>
    <div>Card 3</div>
</div>
</code-snippet>

## Common Pitfalls

- Using deprecated v3 utilities (bg-opacity-*, flex-shrink-*, etc.)
- Using `@tailwind` directives instead of `@import "tailwindcss"`
- Trying to use `tailwind.config.js` instead of CSS `@theme` directive
- Using margins for spacing between siblings instead of gap utilities
- Forgetting to add dark mode variants when the project uses dark mode

================================================
FILE: .dockerignore
================================================
vendor
bootstrap/cache/*
**/*.log

================================================
FILE: .editorconfig
================================================
; This file is for unifying the coding style for different editors and IDEs.
; More information at http://editorconfig.org

root = true

[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2

[docker-compose.yml]
indent_size = 4


================================================
FILE: .gitattributes
================================================
* text=auto

*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php

/.github export-ignore
CHANGELOG.md export-ignore


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
Please report bugs in Discord [![Discord](https://img.shields.io/discord/413623253366603777.svg)](https://discord.gg/rhsyZJ4). This github isn't used for bug tracking. 

================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
Please send feature requests to the [Roadmap](https://app.kanka.io/roadmap). This github isn't used for feature requests. 


================================================
FILE: .github/workflows/claude.yml
================================================
name: Claude Code

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, assigned]
  pull_request_review:
    types: [submitted]

jobs:
  claude:
    if: |
      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
      (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write
      actions: read # Required for Claude to read CI results on PRs
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Run Claude Code
        id: claude
        uses: anthropics/claude-code-action@v1
        with:
          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

          # This is an optional setting that allows Claude to read CI results on PRs
          additional_permissions: |
            actions: read

          # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
          # prompt: 'Update the pull request description to include a summary of changes.'

          # Optional: Add claude_args to customize behavior and configuration
          # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
          # or https://code.claude.com/docs/en/cli-reference for available options
          # claude_args: '--allowed-tools Bash(gh pr:*)'



================================================
FILE: .github/workflows/lint.yml
================================================
name: Fix Code Style & Duplication Check

on:
  pull_request:
    branches:
      - main
      - develop
    paths:
      - '**.php'
  push:
    branches:
      - main
    paths:
      - '**.php'

jobs:
  lint:
    runs-on: ubuntu-latest

    permissions:
      # Give the default GITHUB_TOKEN write permission to commit and push the
      # added or changed files to the repository.
      contents: write

    strategy:
      fail-fast: true
      matrix:
        php: [8.4]

    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.ref }}
          repository: ${{ github.event.pull_request.head.repo.full_name }}

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          extensions: json, dom, curl, libxml, mbstring
          coverage: none

      - name: Install Pint
        run: composer global require laravel/pint

      - name: Run Pint
        run: pint

# can't run this in a github action
#      - name: Run PHPCPD
#        run: ./vendor/bin/phpcpd app/ --min-lines=5 --min-tokens=70

      - name: Auto-commit fixes
        uses: stefanzweifel/git-auto-commit-action@v6
        with:
          commit_message: Fix styling


================================================
FILE: .github/workflows/phpstan.yml
================================================
name: "Tests"

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the "develop" branch
  pull_request:
    branches: [ "develop" ]
    paths:
      - '**.php'

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

permissions:
  contents: read

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:

  # This workflow contains a single job called "build"
  build:
    runs-on: ubuntu-latest

    strategy:
      fail-fast: true
      matrix:
        php: [8.4]
        laravel: ["^11.0"]

    name: PHP ${{ matrix.php }}

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup PHP
        uses: "shivammathur/setup-php@v2"
        with:
          php-version: "${{ matrix.php }}"
          extensions: "dom, curl, libxml, mbstring, zip, fileinfo, sqlite, pdo_sqlite"
          coverage: "none"

      - name: Install Composer dependencies
        run: composer install --prefer-dist --no-interaction --no-progress

      - name: "Install highest dependencies from composer.json"
        run: "composer install --no-interaction --no-progress"

      - name: "Execute static analysis"
        run: "composer run-script test:types"

      #- name: Generate app key
      #  run: php artisan key:generate

      #- name: Execute tests
      #  run: vendor/bin/phpunit


================================================
FILE: .gitignore
================================================
/node_modules
/public/hot
/public/build/js/tinymce
/public/storage
/public/.htaccess
/public/exports
/public/info.php
/public/robots.txt
/public/ads.txt
#/public/images/defaults/patreon
/storage/*.key
/storage
/vendor
/.scannerwork
/.idea
/.vagrant
/.vscode
/.sail
/.superpowers
/.worktrees
/docs/superpowers
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
.env
.env.local
.DS_Store
.phpunit.result.cache
*.sql
package-lock.json
.phpstorm.meta.php
_ide_helper.php
test.json

================================================
FILE: .jshintrc
================================================
{
    "undef": true,
    "esversion": 11,
    "unused": true,
    "browser": true,
    "node": true,
    "globals": {
        "$": false,
        "document": false,
        "require": false,
        "jQuery": false,
        "CodeMirror": false,
        "Stripe": false
    }
}


================================================
FILE: .mariadb/10-create-logs-database.sh
================================================
#!/usr/bin/env bash

mysql --user=root --password="$MYSQL_ROOT_PASSWORD" <<-EOSQL
    CREATE DATABASE IF NOT EXISTS logs;
    GRANT ALL PRIVILEGES ON \`logs%\`.* TO '$MYSQL_USER'@'%';
EOSQL


================================================
FILE: .mariadb/conf.d/kanka.cnf
================================================
[mysqld]
max_allowed_packet=4G
net_read_timeout=600
net_write_timeout=600
wait_timeout=28800
interactive_timeout=28800
connect_timeout=3600


================================================
FILE: .mcp.json
================================================
{
    "mcpServers": {
        "laravel-boost": {
            "command": "vendor/bin/sail",
            "args": [
                "artisan",
                "boost:mcp"
            ]
        }
    }
}

================================================
FILE: .nginx/thumbor.conf
================================================


upstream thumbor  {
        server thumbor:8888;
}

server {
        listen 80 default;
        server_name localhost;

        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With';

        if ($request_method = 'OPTIONS') {
            return 204;
        }

        location ~* "^/(..)(..)(.+)?.jpg$" {
            proxy_pass http://thumbor$request_uri;
        }
        location ~* "^/(..)(..)(.+)?.jpeg$" {
            proxy_pass http://thumbor$request_uri;
        }
        location ~* "^/(..)(..)(.+)?.png" {
            proxy_pass http://thumbor$request_uri;
        }

        location ~ /\.ht { deny  all; }
        location ~ /\.hg { deny  all; }
        location ~ /\.svn { deny  all; }
}


================================================
FILE: .phpactor.json
================================================
{
    "$schema": "/phpactor.schema.json",
    "language_server_phpstan.enabled": true,
    "php_code_sniffer.enabled": true
}


================================================
FILE: CLAUDE.md
================================================
===

<laravel-boost-guidelines>
=== foundation rules ===

# Laravel Boost Guidelines

The Laravel Boost guidelines are specifically curated by Laravel maintainers for this application. These guidelines should be followed closely to ensure the best experience when building Laravel applications.

## Foundational Context

This application is a Laravel application and its main Laravel ecosystems package & versions are below. You are an expert with them all. Ensure you abide by these specific packages & versions.

- php - 8.4.14
- laravel/cashier (CASHIER) - v15
- laravel/framework (LARAVEL) - v11
- laravel/passport (PASSPORT) - v13
- laravel/prompts (PROMPTS) - v0
- laravel/reverb (REVERB) - v1
- laravel/scout (SCOUT) - v10
- laravel/socialite (SOCIALITE) - v5
- livewire/livewire (LIVEWIRE) - v3
- larastan/larastan (LARASTAN) - v3
- laravel/mcp (MCP) - v0
- laravel/pint (PINT) - v1
- laravel/sail (SAIL) - v1
- pestphp/pest (PEST) - v3
- phpunit/phpunit (PHPUNIT) - v11
- laravel-echo (ECHO) - v2
- tailwindcss (TAILWINDCSS) - v4
- vue (VUE) - v3

## Skills Activation

This project has domain-specific skills available. You MUST activate the relevant skill whenever you work in that domain—don't wait until you're stuck.

- `livewire-development` — Develops reactive Livewire 3 components. Activates when creating, updating, or modifying Livewire components; working with wire:model, wire:click, wire:loading, or any wire: directives; adding real-time updates, loading states, or reactivity; debugging component behavior; writing Livewire tests; or when the user mentions Livewire, component, counter, or reactive UI.
- `pest-testing` — No testing. No automated testing. Don't try running pest or phpunit.
- `tailwindcss-development` — Styles applications using Tailwind CSS v4 utilities. Activates when adding styles, restyling components, working with gradients, spacing, layout, flex, grid, responsive design, dark mode, colors, typography, or borders; or when the user mentions CSS, styling, classes, Tailwind, restyle, hero section, cards, buttons, or any visual/UI changes.

## Conventions

- You must follow all existing code conventions used in this application. When creating or editing a file, check sibling files for the correct structure, approach, and naming.
- Use descriptive names for variables and methods. For example, `isRegisteredForDiscounts`, not `discount()`.
- Check for existing components to reuse before writing a new one.

## Verification Scripts

- Do not create verification scripts or tinker when tests cover that functionality and prove they work. Unit and feature tests are more important.

## Application Structure & Architecture

- Stick to existing directory structure; don't create new base folders without approval.
- Do not change the application's dependencies without approval.

## Frontend Bundling

- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `vendor/bin/sail yarn run build`, `vendor/bin/sail yarn run dev`, or `vendor/bin/sail composer run dev`. Never ask them to run these commands, but remind them to do it in your closing summary.

## Documentation Files

- You must only create documentation files if explicitly requested by the user.

## Replies

- Be concise in your explanations - focus on what's important rather than explaining obvious details.

=== boost rules ===

# Laravel Boost

- Laravel Boost is an MCP server that comes with powerful tools designed specifically for this application. Use them.

## Artisan

- Use the `list-artisan-commands` tool when you need to call an Artisan command to double-check the available parameters.

## URLs

- Whenever you share a project URL with the user, you should use the `get-absolute-url` tool to ensure you're using the correct scheme, domain/IP, and port.

## Tinker / Debugging

- You should use the `tinker` tool when you need to execute PHP to debug code or query Eloquent models directly.
- Use the `database-query` tool when you only need to read from the database.

## Reading Browser Logs With the `browser-logs` Tool

- You can read browser logs, errors, and exceptions using the `browser-logs` tool from Boost.
- Only recent browser logs will be useful - ignore old logs.

## Searching Documentation (Critically Important)

- Boost comes with a powerful `search-docs` tool you should use before trying other approaches when working with Laravel or Laravel ecosystem packages. This tool automatically passes a list of installed packages and their versions to the remote Boost API, so it returns only version-specific documentation for the user's circumstance. You should pass an array of packages to filter on if you know you need docs for particular packages.
- Search the documentation before making code changes to ensure we are taking the correct approach.
- Use multiple, broad, simple, topic-based queries at once. For example: `['rate limiting', 'routing rate limiting', 'routing']`. The most relevant results will be returned first.
- Do not add package names to queries; package information is already shared. For example, use `test resource table`, not `filament 4 test resource table`.

### Available Search Syntax

1. Simple Word Searches with auto-stemming - query=authentication - finds 'authenticate' and 'auth'.
2. Multiple Words (AND Logic) - query=rate limit - finds knowledge containing both "rate" AND "limit".
3. Quoted Phrases (Exact Position) - query="infinite scroll" - words must be adjacent and in that order.
4. Mixed Queries - query=middleware "rate limit" - "middleware" AND exact phrase "rate limit".
5. Multiple Queries - queries=["authentication", "middleware"] - ANY of these terms.

=== php rules ===

# PHP

- Always use curly braces for control structures, even for single-line bodies.

## Constructors

- Use PHP 8 constructor property promotion in `__construct()`.
    - <code-snippet>public function __construct(public GitHub $github) { }</code-snippet>
- Do not allow empty `__construct()` methods with zero parameters unless the constructor is private.

## Type Declarations

- Always use explicit return type declarations for methods and functions.
- Use appropriate PHP type hints for method parameters.

<code-snippet name="Explicit Return Types and Method Params" lang="php">
protected function isAccessible(User $user, ?string $path = null): bool
{
    ...
}
</code-snippet>

## Enums

- Typically, keys in an Enum should be TitleCase. For example: `FavoritePerson`, `BestLake`, `Monthly`.

## Comments

- Prefer PHPDoc blocks over inline comments. Never use comments within the code itself unless the logic is exceptionally complex.

## PHPDoc Blocks

- Add useful array shape type definitions when appropriate.

=== sail rules ===

# Laravel Sail

- This project runs inside Laravel Sail's Docker containers. You MUST execute all commands through Sail.
- Start services using `vendor/bin/sail up -d` and stop them with `vendor/bin/sail stop`.
- Open the application in the browser by running `vendor/bin/sail open`.
- Always prefix PHP, Artisan, Composer, and Node commands with `vendor/bin/sail`. Examples:
    - Run Artisan Commands: `vendor/bin/sail artisan migrate`
    - Install Composer packages: `vendor/bin/sail composer install`
    - Execute Node commands: `vendor/bin/sail yarn run dev`
    - Execute PHP scripts: `vendor/bin/sail php [script]`
- View all available Sail commands by running `vendor/bin/sail` without arguments.

=== laravel/core rules ===

# Do Things the Laravel Way

- Use `vendor/bin/sail artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool.
- If you're creating a generic PHP class, use `vendor/bin/sail artisan make:class`.
- Pass `--no-interaction` to all Artisan commands to ensure they work without user input. You should also pass the correct `--options` to ensure correct behavior.

## Database

- Always use proper Eloquent relationship methods with return type hints. Prefer relationship methods over raw queries or manual joins.
- Use Eloquent models and relationships before suggesting raw database queries.
- Avoid `DB::`; prefer `Model::query()`. Generate code that leverages Laravel's ORM capabilities rather than bypassing them.
- Generate code that prevents N+1 query problems by using eager loading.
- Use Laravel's query builder for very complex database operations.

### Model Creation

- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `vendor/bin/sail artisan make:model`.

### APIs & Eloquent Resources

- For APIs, default to using Eloquent API Resources and API versioning unless existing API routes do not, then you should follow existing application convention.

## Controllers & Validation

- Always create Form Request classes for validation rather than inline validation in controllers. Include both validation rules and custom error messages.
- Check sibling Form Requests to see if the application uses array or string based validation rules.

## Authentication & Authorization

- Use Laravel's built-in authentication and authorization features (gates, policies, Sanctum, etc.).

## URL Generation

- When generating links to other pages, prefer named routes and the `route()` function.

## Queues

- Use queued jobs for time-consuming operations with the `ShouldQueue` interface.

## Configuration

- Use environment variables only in configuration files - never use the `env()` function directly outside of config files. Always use `config('app.name')`, not `env('APP_NAME')`.

## Vite Error

- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `vendor/bin/sail yarn run build` or ask the user to run `vendor/bin/sail yarn run dev` or `vendor/bin/sail composer run dev`.

=== laravel/v11 rules ===

# Laravel 11

- CRITICAL: ALWAYS use `search-docs` tool for version-specific Laravel documentation and updated code examples.
- This project upgraded from Laravel 10 without migrating to the new streamlined Laravel 11 file structure.
- This is perfectly fine and recommended by Laravel. Follow the existing structure from Laravel 10. We do not need to migrate to the Laravel 11 structure unless the user explicitly requests it.

## Laravel 10 Structure

- Middleware typically lives in `app/Http/Middleware/` and service providers in `app/Providers/`.
- There is no `bootstrap/app.php` application configuration in a Laravel 10 structure:
    - Middleware registration is in `app/Http/Kernel.php`
    - Exception handling is in `app/Exceptions/Handler.php`
    - Console commands and schedule registration is in `app/Console/Kernel.php`
    - Rate limits likely exist in `RouteServiceProvider` or `app/Http/Kernel.php`

## Database

- When modifying a column, the migration must include all of the attributes that were previously defined on the column. Otherwise, they will be dropped and lost.
- Laravel 11 allows limiting eagerly loaded records natively, without external packages: `$query->latest()->limit(10);`.

### Models

- Casts can and likely should be set in a `casts()` method on a model rather than the `$casts` property. Follow existing conventions from other models.

## New Artisan Commands

- List Artisan commands using Boost's MCP tool, if available. New commands available in Laravel 11:
    - `vendor/bin/sail artisan make:enum`
    - `vendor/bin/sail artisan make:class`
    - `vendor/bin/sail artisan make:interface`

=== livewire/core rules ===

# Livewire

- Livewire allows you to build dynamic, reactive interfaces using only PHP — no JavaScript required.
- Instead of writing frontend code in JavaScript frameworks, you use Alpine.js to build the UI when client-side interactions are required.
- State lives on the server; the UI reflects it. Validate and authorize in actions (they're like HTTP requests).
- IMPORTANT: Activate `livewire-development` every time you're working with Livewire-related tasks.

=== pint/core rules ===

# Laravel Pint Code Formatter

- You must run `vendor/bin/sail bin pint --dirty --format agent` before finalizing changes to ensure your code matches the project's expected style.
- Do not run `vendor/bin/sail bin pint --test --format agent`, simply run `vendor/bin/sail bin pint --format agent` to fix any formatting issues.

=== pest/core rules ===

## Pest

- This project has no automated tests. Don't bother with them.

=== tailwindcss/core rules ===

# Tailwind CSS

- Always use existing Tailwind conventions; check project patterns before adding new ones.
- IMPORTANT: Always use `search-docs` tool for version-specific Tailwind CSS documentation and updated code examples. Never rely on training data.
- IMPORTANT: Activate `tailwindcss-development` every time you're working with a Tailwind CSS or styling-related task.
</laravel-boost-guidelines>

# i18n

The app is translated in several languages by community members, but is developed in english. Never hardcode translations; use the `__()` function instead.

================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
 advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
 address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
 professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at hello@kanka.io. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq


================================================
FILE: LICENSE
================================================
“Commons Clause” License Condition v1.0

The Software is provided to you by the Licensor under the License, as defined below, subject to the following condition.

Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software.

For purposes of the foregoing, “Sell” means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration (including without limitation fees for hosting or consulting/ support services related to the Software), a product or service whose value derives, entirely or substantially, from the functionality of the Software. Any license notice or attribution required by the License must also include this Commons Clause License Condition notice.

Software: Kanka

Licensor: Owlchester SNC


================================================
FILE: README.md
================================================
# Kanka
# [![Kanka](./.github/logo.png)](https://kanka.io/en-US)

[![Minimum PHP Version](http://img.shields.io/badge/php-%3E%3D%208.0-8892BF.svg)](https://php.net/)
[![Discord](https://img.shields.io/discord/413623253366603777.svg)](https://kanka.io/go/discord)

[Kanka](https://kanka.io/en-US) is a **source available** collaborative world building and campaign management tool tailored for tabletop RPG players and storytellers. This repository is the primary source for development of the Kanka platform. It's written in PHP, a mix of VueJS and jQuery, and runs with a MySQL database. A new version is released on average every a month.

<img width="900" alt="kanka-hero" src="https://th.kanka.io/Vg8GkfblEvh1Z4HhO2Cwr4hzuCs=/900x562/smart/src/app/front/devices-preview-hd.png">

This repository hosts the core Kanka web application.

## Install Kanka

- [Installing & Running Kanka](./docs/running.md).

## Getting involved

- [Contribute to Kanka](./docs/contributing.md)
- [Translating Kanka](./docs/translating.md)

## Technical guides

- [Compiling assets](./docs/assets.md)

## Support and Community

Issues are inevitable. When you encounter one when using Kanka, our team and community is here to help.

💬 Ask for help on [Discord](https://kanka.io/go/discord)

🏛️ Find a solution in our [Documentation](https://docs.kanka.io)

📧 Shoot us an email at [hello@kanka.io](mailto:hello@kanka.io)



================================================
FILE: app/Auth/PassportTokenGuard.php
================================================
<?php

namespace App\Auth;

use Illuminate\Contracts\Auth\Authenticatable;
use Laravel\Passport\AccessToken;
use Laravel\Passport\Guards\TokenGuard;
use Laravel\Passport\Token;

/**
 * Workaround for a Passport 13.7 bug where personal access tokens are rejected
 * when the user's ID matches the OAuth client's ID. The upstream check assumes
 * equal IDs means a client credentials token, but this is a false positive.
 *
 * @see https://github.com/laravel/passport/blob/master/src/Guards/TokenGuard.php
 */
class PassportTokenGuard extends TokenGuard
{
    protected function authenticateViaBearerToken(): ?Authenticatable
    {
        if (! $psr = $this->getPsrRequestViaBearerToken()) {
            return null;
        }

        $client = $this->clients->findActive(
            $psr->getAttribute('oauth_client_id')
        );

        if (! $client ||
            ($client->provider &&
             $client->provider !== $this->provider->getProviderName())) {
            return null;
        }

        $this->setClient($client);

        $oauthUserId = $psr->getAttribute('oauth_user_id');

        if (empty($oauthUserId)) {
            return null;
        }

        // Passport 13.7 added a check: if oauth_user_id === oauth_client_id, reject
        // as a client credentials token. However, this is a false positive when the
        // user's primary key happens to equal the client's ID. We verify via the DB.
        if ($oauthUserId === $psr->getAttribute('oauth_client_id')) {
            $tokenId = $psr->getAttribute('oauth_access_token_id');
            $token = Token::find($tokenId);

            if (! $token || $token->user_id === null) {
                return null;
            }
        }

        try {
            $user = $this->provider->retrieveById($oauthUserId);
        } catch (\Exception) {
            return null;
        }

        return $user?->withAccessToken(AccessToken::fromPsrRequest($psr));
    }
}


================================================
FILE: app/Console/Commands/Campaigns/CleanupCommand.php
================================================
<?php

namespace App\Console\Commands\Campaigns;

use App\Models\Campaign;
use App\Observers\CampaignObserver;
use App\Services\Campaign\PurgeService;
use Carbon\Carbon;
use Illuminate\Console\Command;

class CleanupCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'campaigns:cleanup {dry=1}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Delete empty campaigns';

    public function __construct(protected PurgeService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $this->info(Carbon::now());
        Campaign::observe(CampaignObserver::class);

        $dry = $this->argument('dry');
        if ($dry === '0') {
            $this->service->real();
        }

        $count = $this->service->purgeEmpty();

        if ($dry === '0') {
            $this->info(Carbon::now() . ': Deleted ' . $count . ' empty campaigns.');
        } else {
            $this->info(Carbon::now() . ': There are ' . $count . ' empty campaigns that can be deleted.');
        }
    }
}


================================================
FILE: app/Console/Commands/Campaigns/DeleteCommand.php
================================================
<?php

namespace App\Console\Commands\Campaigns;

use App\Jobs\Campaigns\Delete;
use App\Jobs\DeletedCampaignCleanupJob;
use App\Models\Campaign;
use Illuminate\Console\Command;

class DeleteCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'campaigns:delete {campaign}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Delete a specified campaign';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $campaignId = $this->argument('campaign');
        $campaign = Campaign::where('id', $campaignId)->first();
        if ($campaign) {
            Delete::dispatch($campaign);
            DeletedCampaignCleanupJob::dispatch($campaign);
            $this->info('Queued campaign #' . $campaignId . ' for deletion');
        } else {
            $this->info('Invalid campaign ID');
        }

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Campaigns/DummyEntities.php
================================================
<?php

namespace App\Console\Commands\Campaigns;

use App\Facades\CampaignCache;
use App\Facades\CampaignLocalization;
use App\Facades\CharacterCache;
use App\Facades\EntityCache;
use App\Facades\QuestCache;
use App\Models\Ability;
use App\Models\Attribute;
use App\Models\Calendar;
use App\Models\Campaign;
use App\Models\Character;
use App\Models\EntityAbility;
use App\Models\Event;
use App\Models\Family;
use App\Models\Item;
use App\Models\Journal;
use App\Models\Location;
use App\Models\Note;
use App\Models\Organisation;
use App\Models\Quest;
use App\Models\QuestElement;
use App\Models\Race;
use App\Models\Relation;
use App\Models\Tag;
use App\Observers\AbilityObserver;
use App\Observers\CalendarObserver;
use App\Observers\EntityAbilityObserver;
use App\Observers\EventObserver;
use App\Observers\JournalObserver;
use App\Observers\LocationObserver;
use App\Observers\NoteObserver;
use App\Observers\QuestElementObserver;
use App\Observers\QuestObserver;
use App\Observers\RaceObserver;
use App\Observers\RelationObserver;
use App\Observers\TagObserver;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Factories\Sequence;

class DummyEntities extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'campaigns:populate {campaign}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Generate dummy entities in a specified campaign';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $campaignId = (int) $this->argument('campaign');
        $campaign = Campaign::findOrFail($campaignId);

        CampaignCache::campaign($campaign);
        EntityCache::campaign($campaign);
        CharacterCache::campaign($campaign);
        QuestCache::campaign($campaign);

        $this->loadObservers($campaign);

        // Generate Characters Abilities and Locations
        $firstLocation = Location::factory()
            ->state(['name' => 'Thaelia', 'campaign_id' => $campaign->id])
            ->has(
                Character::factory()->state(['campaign_id' => $campaign->id])
                    ->has(Item::factory()->state(['name' => 'Sword of Cebolla', 'campaign_id' => $campaign->id, 'price' => rand(1, 15) . 'g']))
            )
            ->has(Location::factory()
                ->state(['name' => 'March', 'campaign_id' => $campaign->id])
                ->has(Location::factory()
                    ->state(['name' => 'Adestry', 'campaign_id' => $campaign->id])))
            ->has(Location::factory()
                ->state(['name' => 'Tilley', 'campaign_id' => $campaign->id])
                ->has(Location::factory()
                    ->state(['name' => 'Carrothead', 'campaign_id' => $campaign->id])))
            ->has(Character::factory()->state(['campaign_id' => $campaign->id])->count(2))
            ->has(Location::factory()->state(['name' => 'Orlene', 'campaign_id' => $campaign->id]))
            ->has(Location::factory()
                ->state(['name' => 'Owlchester', 'campaign_id' => $campaign->id]))
            ->create();

        $secondLocation = Location::factory()
            ->state(['name' => 'Medina', 'campaign_id' => $campaign->id])
            ->has(Location::factory()->count(2)->state(new Sequence(
                ['name' => 'Torchio', 'campaign_id' => $campaign->id],
                ['name' => 'Urdino', 'campaign_id' => $campaign->id]
            )))
            ->has(Character::factory()->state(['campaign_id' => $campaign->id]))
            ->has(Character::factory()->state(['campaign_id' => $campaign->id])
                ->has(Item::factory()->state(['name' => 'Dagger of Longaniza', 'campaign_id' => $campaign->id, 'price' => rand(1, 15) . 'g'])))
            ->create();
        $thirdLocation = Location::factory()->state(['campaign_id' => $campaign->id, 'name' => 'Middle Earth'])->create();

        // Generate Characters
        $firstCharacter = Character::factory()->state(['campaign_id' => $campaign->id, 'name' => 'Biblo Swaggins'])->create();
        $secondCharacter = Character::factory()->state(['campaign_id' => $campaign->id])->create();
        $thirdCharacter = Character::factory()->state(['campaign_id' => $campaign->id])->create();
        $fourthCharacter = Character::factory()->state(['campaign_id' => $campaign->id])->create();
        $fifthCharacter = Character::factory()->state(['campaign_id' => $campaign->id])->create();

        Ability::factory()->state(['name' => 'Loud shout', 'campaign_id' => $campaign->id])->has(EntityAbility::factory()->state(['entity_id' => $firstCharacter->entity->id]), 'ability')->create();
        Attribute::factory()->count(7)->state(
            new Sequence(
                ['name' => 'Population', 'entity_id' => $firstLocation->entity->id, 'is_pinned' => 1],
                ['name' => 'Population', 'entity_id' => $secondLocation->entity->id, 'is_pinned' => 1],
                ['name' => 'Population', 'entity_id' => $thirdLocation->entity->id, 'is_pinned' => 1],
                ['name' => 'HP', 'value' => rand(1, 20), 'entity_id' => $firstCharacter->entity->id, 'is_pinned' => 1],
                ['name' => 'Level', 'value' => rand(1, 20), 'entity_id' => $firstCharacter->entity->id, 'is_pinned' => 1],
                ['name' => 'HP', 'value' => rand(1, 20), 'entity_id' => $secondCharacter->entity->id, 'is_pinned' => 1],
                ['name' => 'Level', 'value' => rand(1, 20), 'entity_id' => $secondCharacter->entity->id, 'is_pinned' => 1],
            )
        )
            ->create();

        // Generate Families
        Family::factory()
            ->state(['name' => 'Graff', 'campaign_id' => $campaign->id])
            ->has(Family::factory()->state(['name' => 'Market', 'campaign_id' => $campaign->id]))
            ->create();
        Family::factory()->state(['name' => 'Joren', 'campaign_id' => $campaign->id])->create();

        // Generate Organisations
        Organisation::factory()
            ->state(['name' => 'Kankappy Cult', 'campaign_id' => $campaign->id])
            ->has(Organisation::factory()->state(['name' => 'Fun Police', 'campaign_id' => $campaign->id]))
            ->create();
        Organisation::factory()->state(['name' => 'Great Reset', 'campaign_id' => $campaign->id])->create();

        // Generate Events
        Event::factory()->count(4)->state(
            new Sequence(
                ['name' => 'The Great War', 'campaign_id' => $campaign->id],
                ['name' => 'Northern Rebellion', 'campaign_id' => $campaign->id],
                ['name' => 'Peace of the Sea', 'campaign_id' => $campaign->id],
                ['name' => 'Royal Wedding', 'campaign_id' => $campaign->id],
            )
        )
            ->create();

        // Generate Items
        Item::factory()->count(5)->state(
            new Sequence(
                ['name' => 'Bow', 'campaign_id' => $campaign->id],
                ['name' => 'Crowbar', 'campaign_id' => $campaign->id],
                ['name' => 'Shield', 'campaign_id' => $campaign->id],
                ['name' => 'Sword', 'campaign_id' => $campaign->id],
                ['name' => 'Potion', 'campaign_id' => $campaign->id],
            )
        )
            ->create();

        // Generate Notes
        Note::factory()->count(3)->state(
            new Sequence(
                ['name' => 'Aromas of Geneva', 'campaign_id' => $campaign->id],
                ['name' => 'Pottery Stacking', 'campaign_id' => $campaign->id],
                ['name' => 'Making Friends', 'campaign_id' => $campaign->id],
            )
        )
            ->create();

        // Generate Races
        Race::factory()
            ->state(['name' => 'Elf', 'campaign_id' => $campaign->id])
            ->has(Race::factory()
                ->state(['name' => 'Wood elf', 'campaign_id' => $campaign->id])
                ->has(Race::factory()
                    ->state(['name' => 'Leaf elf', 'campaign_id' => $campaign->id])))
            ->has(Race::factory()->state(['name' => 'High elf', 'campaign_id' => $campaign->id]))
            ->create();

        Race::factory()->count(2)->state(
            new Sequence(
                ['name' => 'Human', 'campaign_id' => $campaign->id],
                ['name' => 'Owlbear', 'campaign_id' => $campaign->id],
            )
        )
            ->create();

        // Generate Tags
        Tag::factory()->count(3)->state(
            new Sequence(
                ['name' => '🧛🏻‍♂️', 'colour' => 'maroon', 'campaign_id' => $campaign->id],
                ['name' => 'Important', 'colour' => 'aqua', 'campaign_id' => $campaign->id],
                ['name' => 'NPC', 'colour' => 'grey', 'campaign_id' => $campaign->id],
            )
        )
            ->create();

        // Generate Quests
        $itemFirstQuest = Item::factory()->state(['campaign_id' => $campaign->id])->create();
        Quest::factory()->state(['name' => 'Salary Negotiations', 'campaign_id' => $campaign->id])
            ->has(QuestElement::factory()->state(['name' => 'Main Character', 'entity_id' => $firstCharacter->entity->id, 'created_by' => $campaign->created_by]), 'elements')
            ->has(QuestElement::factory()->state(['name' => 'MacGuffin', 'entity_id' => $itemFirstQuest->entity->id, 'created_by' => $campaign->created_by]), 'elements')
            ->create();

        Quest::factory()->state(['name' => 'Fixin Bugs', 'campaign_id' => $campaign->id])
            ->create();

        // Generate Journals
        Journal::factory()->count(2)->state(
            new Sequence(
                ['name' => 'Bilbo\'s journey to middle earth', 'campaign_id' => $campaign->id, 'author_id' => $firstCharacter->entity->id],
                ['name' => 'The tree rings', 'campaign_id' => $campaign->id],
            )
        )
            ->create();

        // Generate Calendars
        Calendar::factory()->state([
            'name' => 'Gregorian', 'campaign_id' => $campaign->id,
            'months' => '[{"name":"January","length":31,"type":"standard","alias":""},{"name":"February","length":28,"type":"standard","alias":""},{"name":"March","length":31,"type":"standard","alias":""},{"name":"April","length":30,"type":"standard","alias":""},{"name":"Mai","length":31,"type":"standard","alias":""},{"name":"June","length":30,"type":"standard","alias":""},{"name":"July","length":31,"type":"standard","alias":""},{"name":"August","length":31,"type":"standard","alias":""},{"name":"September","length":30,"type":"standard","alias":""},{"name":"October","length":31,"type":"standard","alias":""},{"name":"November","length":30,"type":"standard","alias":""},{"name":"December","length":31,"type":"standard","alias":""}]',
            'weekdays' => '["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]',
            'seasons' => '[{"name":"Spring","month":3,"day":21},{"name":"Summer","month":6,"day":21},{"name":"Autumn","month":9,"day":21},{"name":"Winter","month":12,"day":21}]',
            'suffix' => 'AD',
            'has_leap_year' => 1,
            'leap_year_amount' => 1,
            'leap_year_month' => 2,
            'leap_year_offset' => 4,
            'leap_year_start' => 4,
            'start_offset' => 5,
            'is_incrementing' => 1,
            'date' => Carbon::now()->toDateString(),
        ])
            ->create();

        // Generate Relations
        $firstRelation = Relation::factory()->state(['relation' => 'Best Friend', 'campaign_id' => $campaign->id, 'owner_id' => $secondCharacter->entity->id, 'target_id' => $thirdCharacter->entity->id])->create();
        Relation::factory()->state(['relation' => 'Mortal Enemy', 'campaign_id' => $campaign->id, 'owner_id' => $thirdCharacter->entity->id, 'target_id' => $secondCharacter->entity->id])->for($firstRelation, 'mirror')->create();

        $secondRelation = Relation::factory()->state(['relation' => 'Best Friend', 'campaign_id' => $campaign->id, 'owner_id' => $secondCharacter->entity->id, 'target_id' => $thirdCharacter->entity->id])->create();
        Relation::factory()->state(['relation' => 'Mortal Enemy', 'campaign_id' => $campaign->id, 'owner_id' => $thirdCharacter->entity->id, 'target_id' => $secondCharacter->entity->id])->for($secondRelation, 'mirror')->create();

        return 0;
    }

    /**
     * Load observers.
     */
    private function loadObservers(Campaign $campaign)
    {
        CampaignLocalization::forceCampaign($campaign);
        Ability::observe(AbilityObserver::class);
        Location::observe(LocationObserver::class);
        Calendar::observe(CalendarObserver::class);
        Quest::observe(QuestObserver::class);
        QuestElement::observe(QuestElementObserver::class);
        Relation::observe(RelationObserver::class);
        Journal::observe(JournalObserver::class);
        Event::observe(EventObserver::class);
        Tag::observe(TagObserver::class);
        Race::observe(RaceObserver::class);
        Note::observe(NoteObserver::class);
        EntityAbility::observe(EntityAbilityObserver::class);
    }
}


================================================
FILE: app/Console/Commands/Campaigns/ExportCommand.php
================================================
<?php

namespace App\Console\Commands\Campaigns;

use App\Models\Campaign;
use App\Models\User;
use App\Services\Campaign\ExportService;
use Carbon\Carbon;
use Illuminate\Console\Command;

class ExportCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'campaigns:export {campaign}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Export a campaign';

    public function __construct(protected ExportService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $this->info(Carbon::now());

        $campaignID = $this->argument('campaign');
        $campaign = Campaign::find($campaignID);
        $user = User::find(1);

        $this->service
            ->campaign($campaign)
            ->user($user)
            ->queue();

        $this->info(Carbon::now() . ': Queues campaign #' . $campaign->id . ' export.');
    }
}


================================================
FILE: app/Console/Commands/Campaigns/ImportCommand.php
================================================
<?php

namespace App\Console\Commands\Campaigns;

use App\Enums\CampaignImportStatus;
use App\Jobs\Campaigns\Import;
use App\Models\Campaign;
use App\Models\CampaignImport;
use Illuminate\Console\Command;

class ImportCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'campaigns:import {campaign}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Re-run an import job';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $campaignID = $this->argument('campaign');
        $campaign = Campaign::find($campaignID);

        $job = CampaignImport::where('campaign_id', $campaign->id)->orderBy('created_at', 'DESC')->
        where('status_id', '<>', 1)->first();
        if (! $job) {
            $this->info('No job for campaign ' . $campaign->id);

            return;
        }

        $job->status_id = CampaignImportStatus::QUEUED;
        $job->saveQuietly();

        Import::dispatch($job);
        $this->info('Re-queued campaign ' . $campaign->id);
    }
}


================================================
FILE: app/Console/Commands/Campaigns/PermissionsSyncCommand.php
================================================
<?php

namespace App\Console\Commands\Campaigns;

use App\Models\Campaign;
use App\Models\CampaignPermission;
use App\Models\CampaignRole;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Collection;

class PermissionsSyncCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'campaigns:permissions {campaign}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Sync permissions from one campaign role to another';

    /**
     * Execute the console command.
     */
    public function handle(): int
    {
        $campaign = Campaign::find($this->argument('campaign'));

        if (! $campaign) {
            $this->error('Campaign not found.');

            return 1;
        }

        $this->info("Campaign: {$campaign->name}");

        /** @var Collection<int, CampaignRole> $roles */
        $roles = CampaignRole::where('campaign_id', $campaign->id)->get();

        if ($roles->count() < 2) {
            $this->error('Campaign must have at least two roles to sync permissions.');

            return 1;
        }

        $roleChoices = $roles->mapWithKeys(fn (CampaignRole $role) => [$role->id => $role->name])->all();

        $sourceName = $this->choice('Select the source role (permissions will be copied from)', $roleChoices);
        $sourceRole = $roles->firstWhere('name', $sourceName);

        $targetName = $this->choice('Select the target role (permissions will be copied to)', $roleChoices);
        $targetRole = $roles->firstWhere('name', $targetName);

        if ($sourceRole->id === $targetRole->id) {
            $this->error('Source and target roles must be different.');

            return 1;
        }

        $existingPermissionsCount = CampaignPermission::where('campaign_role_id', $targetRole->id)->count();

        if ($existingPermissionsCount > 0) {
            if (! $this->confirm("The target role \"{$targetRole->name}\" already has {$existingPermissionsCount} permission(s). Clear them before syncing?")) {
                $this->info('Sync cancelled.');

                return 0;
            }

            CampaignPermission::where('campaign_role_id', $targetRole->id)->delete();
            $this->info("Cleared {$existingPermissionsCount} existing permission(s) from \"{$targetRole->name}\".");
        }

        $sourceRole->duplicate($targetRole);

        $createdCount = CampaignPermission::where('campaign_role_id', $targetRole->id)->count();

        $this->info("Successfully copied {$createdCount} permission(s) from \"{$sourceRole->name}\" to \"{$targetRole->name}\".");

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Campaigns/PopulateCommand.php
================================================
<?php

namespace App\Console\Commands\Campaigns;

use App\Jobs\Campaigns\Populate;
use App\Models\Campaign;
use App\Services\StarterService;
use Illuminate\Console\Command;

class PopulateCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'campaigns:populate {campaign}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Populate a campaign with the starter kit';

    protected StarterService $starterService;

    public function __construct(StarterService $starterService)
    {
        $this->starterService = $starterService;
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $campaignId = $this->argument('campaign');
        $campaign = Campaign::where('id', $campaignId)->first();
        if ($campaign) {
            Populate::dispatch($campaign);
        } else {
            $this->info('Invalid campaign ID');
        }
    }
}


================================================
FILE: app/Console/Commands/Campaigns/VisibileEntityCountCommand.php
================================================
<?php

namespace App\Console\Commands\Campaigns;

use App\Models\Campaign;
use App\Services\Campaign\Counters\VisibleEntityCountService;
use App\Traits\HasJobLog;
use Illuminate\Console\Command;

class VisibileEntityCountCommand extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'campaigns:public';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Update the visible entity count for public campaigns';

    /** @var int Number of processed elements */
    protected int $count = 0;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct(protected VisibleEntityCountService $countService)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle(): void
    {
        Campaign::public()->chunk(1000, function ($campaigns): void {
            /** @var Campaign $campaign */
            foreach ($campaigns as $campaign) {
                $this->count++;
                $this->countService->campaign($campaign)->process();
            }
        });
        $log = "Updated {$this->count} public campaigns.";
        $this->info($log);
        $this->log($log);
    }
}


================================================
FILE: app/Console/Commands/Cleanup/AnonymiseUserLogs.php
================================================
<?php

namespace App\Console\Commands\Cleanup;

use App\Services\Users\UserLogService;
use App\Traits\HasJobLog;
use Illuminate\Console\Command;

class AnonymiseUserLogs extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'cleanup:anonymise-user-logs';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Anonymise User logs older than 30 days';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct(protected UserLogService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $this->service->anonymize();

        $log = 'Cleaned up ' . $this->service->count() . ' logs PII.';
        $this->info($log);
        $this->log($log);

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Cleanup/CleanupEntityLogs.php
================================================
<?php

namespace App\Console\Commands\Cleanup;

use App\Models\EntityLog;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class CleanupEntityLogs extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'cleanup:entity-logs';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Cleanup entity log details';

    /** @var int number of cleaned up logs */
    protected int $count = 0;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $amount = config('entities.logs');

        /**
         * We don't delete logs here (that's handled by the MassPrunable trait), but instead, we remove
         * the changelogs that are available to superboosted campaigns for up to $amount(30) days.
         */
        EntityLog::where('created_at', '<=', Carbon::now()->subDays($amount)->toDateString())
            ->whereNotNull('changes')
            ->chunkById(100, function ($models): void {
                $entityIds = [];
                foreach ($models as $model) {
                    $entityIds[] = $model->id;
                    $this->count++;
                }

                $statement = 'UPDATE entity_logs SET changes = null WHERE id in(' .
                    implode(', ', $entityIds) .
                ') limit ' . count($entityIds);
                DB::statement($statement);
            });
        $log = "Cleaned up {$this->count} entity logs.";
        $this->info($log);
        $this->log($log);

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Cleanup/CleanupImages.php
================================================
<?php

namespace App\Console\Commands\Cleanup;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;

class CleanupImages extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'cleanup:images {folder=w} {max=500} {dry=0}';

    protected bool $dry = true;

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Delete old images from s3';

    protected int $count = 0;

    protected int $max = 0;

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $folder = $this->argument('folder');
        $this->max = (int) $this->argument('max');

        $dry = $this->argument('dry');
        if ($dry === '1') {
            $this->dry = false;
        }

        $this->info('Cleaning up ' . $folder . '/');
        if ($this->dry) {
            $this->warn('This is a dry run. Nothing will get deleted.');
        }
        $directories = Storage::directories($folder . '/');
        $chunks = array_chunk($directories, 500);
        foreach ($chunks as $chunk) {
            $ids = [];
            foreach ($chunk as $path) {
                $ids[] = Str::after($path, $folder . '/');
            }

            // Get ids where a left join on the campaigns table has no result
            $select = 'with u(id) as (values (' . implode('), (', $ids) . ')) ' .
                'select u.id from u ' .
                'left join campaigns as c on c.id = u.id ' .
                'where c.id is null';
            $db = DB::select($select);
            $nullCampaigns = [];
            foreach ($db as $campaign) {
                $nullCampaigns[] = $campaign->id;
            }

            if (empty($nullCampaigns)) {
                continue;
            }
            foreach ($nullCampaigns as $id) {
                if (empty($id)) {
                    continue;
                }
                if (! $this->dry) {
                    $files = Storage::allFiles($folder . '/' . $id);
                    if (! empty($files)) {
                        Storage::delete($files);
                    }
                    Storage::deleteDirectory($folder . '/' . $id);
                }
                $this->count++;
            }
            if ($this->dry) {
                $this->info('Would delete ' . $this->count . ' images/folders.');
                $this->info(implode(',', $nullCampaigns));
            }
            if ($this->count > $this->max) {
                $this->info('Reached max amount of ' . $this->max);

                return;
            }
        }

        if ($this->dry) {
            return;
        }
        $this->info('Deleted ' . $this->count . ' images/folders.');
    }
}


================================================
FILE: app/Console/Commands/Cleanup/CleanupTrashed.php
================================================
<?php

namespace App\Console\Commands\Cleanup;

use App\Models\Entity;
use App\Models\Post;
use App\Services\Entity\PurgeService;
use App\Services\Posts\PurgeService as PostPurgeService;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use Exception;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class CleanupTrashed extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'cleanup:trashed';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Delete old trashed entities';

    /**
     * The recovery service
     */
    protected PurgeService $service;

    protected PostPurgeService $postService;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct(PurgeService $service, PostPurgeService $postService)
    {
        parent::__construct();
        $this->service = $service;
        $this->postService = $postService;
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $delay = Carbon::now()->subDays(config('entities.hard_delete'))->toDateString();
        $log = '';
        $this->info('Looking to purge entities and posts deleted since ' . $delay);

        DB::beginTransaction();
        try {
            Entity::onlyTrashed()
                ->where('deleted_at', '<=', $delay)
                ->allCampaigns()
                ->with(['campaign', 'entityType'])
                ->has('campaign')
                ->chunkById(1000, function ($entities): void {
                    $this->info('Chunk deleting ' . count($entities) . ' entities.');
                    foreach ($entities as $entity) {
                        // dump($entity->name . ' (' . $entity->entityType->code . ')');
                        $this->service->trash($entity);
                    }
                });
            Post::onlyTrashed()
                ->where('deleted_at', '<=', $delay)
                ->chunkById(1000, function ($posts): void {
                    $this->info('Chunk deleting ' . count($posts) . ' posts.');
                    /** @var Post $post */
                    foreach ($posts as $post) {
                        $this->postService->trash($post);
                    }
                });
            DB::commit();
        } catch (Exception $e) {
            $this->error($e->getMessage());
            $log .= '<br />' . $e->getMessage();
            DB::rollBack();
        }

        $this->info('');
        $this->info('Deleted ' . $this->service->count() . ' trashed entities.');
        $log .= "\n" . 'Deleted ' . $this->service->count() . ' trashed entities.';

        $this->info('Deleted ' . $this->postService->count() . ' trashed posts.');
        $log .= "\n" . 'Deleted ' . $this->postService->count() . ' trashed posts.';
        $this->log($log);

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Cleanup/CleanupTrashedCampaigns.php
================================================
<?php

namespace App\Console\Commands\Cleanup;

use App\Models\Campaign;
use App\Observers\CampaignObserver;
use App\Services\Campaign\PurgeService;
use App\Traits\HasJobLog;
use Illuminate\Console\Command;

class CleanupTrashedCampaigns extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'cleanup:trashed-campaigns';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Delete old trashed campaigns';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct(protected PurgeService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        Campaign::observe(CampaignObserver::class);

        $count = $this->service->purgeDeleted();
        $log = 'Deleted ' . $count . ' trashed campaigns.';
        $this->info($log);
        $this->log($log . ' ' . implode(',', $this->service->ids()));

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Cleanup/CleanupUsers.php
================================================
<?php

namespace App\Console\Commands\Cleanup;

use App\Services\Users\PurgeService;
use Carbon\Carbon;
use Illuminate\Console\Command;

class CleanupUsers extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'users:purge {dry=0} {limit=1000}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Purge accounts';

    public function __construct(protected PurgeService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle(): void
    {
        $this->info(Carbon::now());

        $dry = $this->argument('dry');
        if ($dry === '0') {
            $this->service->real();
        }
        $limit = (int) $this->argument('limit');
        $this->service->limit($limit);

        /*
        $cutoff = Carbon::now()->subYears(1);

        $count = $service->date($cutoff)->empty();
        $this->info(Carbon::now() . ': Empty scheduled ' . $count . ' users for cleanup.');

        $cutoff = Carbon::now()->subYears(2);
        $count = $service->date($cutoff)->example();
        $this->info(Carbon::now() . ': Example  scheduled ' . $count . ' users for cleanup.');
         */

        $count = $this->service->firstWarning();
        $this->info(Carbon::now() . ': ' . $count . ' inactive users notified (first warning)');

        $count = $this->service->secondWarning();
        $this->info(Carbon::now() . ': ' . $count . ' inactive users notified (second warning)');

        $count = $this->service->purge();
        $this->info(Carbon::now() . ': ' . $count . ' inactive users purged');
    }
}


================================================
FILE: app/Console/Commands/Entities/CalendarAdvancer.php
================================================
<?php

namespace App\Console\Commands\Entities;

use App\Jobs\CalendarsClearElapsed;
use App\Models\Calendar;
use App\Services\Calendars\AdvancerService;
use App\Traits\HasJobLog;
use Exception;
use Illuminate\Console\Command;

class CalendarAdvancer extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'calendar:advance';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Increment the date of all advancing calendars.';

    /** Calendars that were advanced */
    protected int $count = 0;

    /** Errors that happened */
    protected array $errors = [];

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct(protected AdvancerService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        Calendar::where('is_incrementing', true)->chunkById(500, function ($calendars): void {
            /** @var Calendar $calendar */
            foreach ($calendars as $calendar) {
                try {
                    $this->service->calendar($calendar)->advance();
                    // Consoles don't have observers at the moment because Jay makes terrible life choices
                    CalendarsClearElapsed::dispatch($calendar);
                    $this->count++;
                } catch (Exception $e) {
                    $this->errors[$calendar->id] = $e->getMessage();
                }
            }
        });

        $log = "Advanced {$this->count} calendars.";
        $this->info($log);

        if (! empty($this->errors)) {
            $this->error('Errors for ' . count($this->errors) . ' calendars.');
            $this->error(implode(', ', array_keys($this->errors)));

            $log .= "\n" . 'Errors for ' . count($this->errors) . ' calendars.';
            $log .= "\n" . implode(', ', array_keys($this->errors));
        }
        $this->log($log);

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Entities/ChildlessEntities.php
================================================
<?php

namespace App\Console\Commands\Entities;

use App\Models\Entity;
use Illuminate\Console\Command;
use Illuminate\Support\Str;

class ChildlessEntities extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'entities:childless';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Find entities with no children';

    protected $traces = [];

    protected $total = 0;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $entities = [];
        $types = config('entities.ids');
        foreach ($types as $type => $id) {
            $entities[] = $type;
        }

        foreach ($entities as $type) {
            $plural = Str::plural($type);
            $this->info('checking ' . $plural);

            Entity::select('entities.*')
                ->where('entities.type', $type)
                ->leftJoin($plural . ' as f', 'f.id', 'entities.entity_id')
                ->whereNull('f.id')
                ->with(Str::camel($type))
                ->chunk(1000, function ($models) use ($type): void {
                    foreach ($models as $model) {
                        $this->trace($model, $type);
                    }

                    if (! empty($this->traces)) {
                        $this->info(implode(', ', $this->traces));
                        $this->traces = [];
                    }
                });

            $this->info('');
        }

        $this->warn('Found ' . $this->total . ' childless entities.');

        return 0;
    }

    protected function trace(Entity $entity, string $type): void
    {
        $this->traces[] = $entity->id;
        $this->total++;

        /*if (count($this->traces) > 100) {
            $this->info(implode(', ', $this->traces));
            $this->traces = [];
        }*/
    }
}


================================================
FILE: app/Console/Commands/Entities/MapChunk.php
================================================
<?php

namespace App\Console\Commands\Entities;

use App\Jobs\ChunkMapJob;
use App\Models\Map;
use Illuminate\Console\Command;
use Illuminate\Foundation\Bus\PendingDispatch;

class MapChunk extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'map:chunk {map : The map ID}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Chunks a map\'s image into tiles.';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * @return int
     */
    public function handle()
    {
        $mapID = (int) $this->argument('map');
        $map = Map::find($mapID);
        if (empty($map)) {
            $this->error('Unknown map #' . $mapID);

            return 0;
        }

        $this->dispatch($mapID);
        $this->info('ChunkMapJob queues for map #' . $mapID);

        return 0;
    }

    /**
     * @return PendingDispatch
     */
    protected function dispatch(int $mapID)
    {
        return ChunkMapJob::dispatch($mapID);
    }
}


================================================
FILE: app/Console/Commands/InstallCommand.php
================================================
<?php

namespace App\Console\Commands;

use App\Models\EntityType;
use Exception;
use Illuminate\Console\Command;

class InstallCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'kanka:install';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Set up Kanka\'s boilerplate';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        try {
            if (EntityType::find(1)) {
                $this->error('Kanka has already been installed.');
                $this->info('Check it out at ' . config('app.url') . ':' . env('APP_PORT'));

                return;
            }
        } catch (Exception) {
        }
        $this->call('key:generate');
        $this->call('migrate');
        $this->call('db:seed');
        $this->call('passport:install');

        $this->info('Kanka successfully installed.');
        $this->info('Check it out at ' . config('app.url') . ':' . env('APP_PORT'));
    }
}


================================================
FILE: app/Console/Commands/Metrics/MetricsGa4.php
================================================
<?php

namespace App\Console\Commands\Metrics;

use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Filter;
use Google\Analytics\Data\V1beta\Filter\InListFilter;
use Google\Analytics\Data\V1beta\Filter\StringFilter;
use Google\Analytics\Data\V1beta\Filter\StringFilter\MatchType;
use Google\Analytics\Data\V1beta\FilterExpression;
use Google\Analytics\Data\V1beta\FilterExpressionList;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\OrderBy;
use Google\Analytics\Data\V1beta\OrderBy\DimensionOrderBy;
use Google\Analytics\Data\V1beta\OrderBy\DimensionOrderBy\OrderType;
use Google\Analytics\Data\V1beta\OrderBy\MetricOrderBy;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;

class MetricsGa4 extends Command
{
    protected $signature = 'metrics:ga4 {--days=28 : Number of days to look back}';

    protected $description = 'Pull GA4 metrics and save as a markdown report to storage/app/metrics/';

    public function handle(): int
    {
        $days = (int) $this->option('days');
        $credentialsPath = config('tracking.ga_credential_path');
        $propertyId = config('tracking.ga_property_id');

        if (empty($credentialsPath) || empty($propertyId)) {
            $this->error('GA4_CREDENTIALS_PATH and GA4_PROPERTY_ID must be configured.');

            return Command::FAILURE;
        }

        $client = new BetaAnalyticsDataClient(['credentials' => $credentialsPath]);
        $property = "properties/{$propertyId}";
        $dateRange = new DateRange([
            'start_date' => "{$days}daysAgo",
            'end_date' => 'today',
        ]);

        $startDate = now()->subDays($days)->format('Y-m-d');
        $endDate = now()->format('Y-m-d');

        $sections = [
            '# GA4 Metrics Report',
            "_Date range: {$startDate} — {$endDate} ({$days} days)_",
            $this->homepageSessions($client, $property, $dateRange),
            $this->registerPageSources($client, $property, $dateRange),
            $this->registerCtaClicks($client, $property, $dateRange),
            $this->scrollDepth($client, $property, $dateRange),
        ];

        $report = implode("\n\n", $sections);
        $filename = 'metrics/ga4-' . now()->format('Y-m-d') . '.md';

        Storage::put($filename, $report);

        $this->line($report);
        $this->newLine();
        $this->info("Saved to storage/app/{$filename}");

        return Command::SUCCESS;
    }

    private function homepageSessions(BetaAnalyticsDataClient $client, string $property, DateRange $dateRange): string
    {
        $response = $client->runReport(new RunReportRequest([
            'property' => $property,
            'date_ranges' => [$dateRange],
            'metrics' => [
                new Metric(['name' => 'sessions']),
                new Metric(['name' => 'engagementRate']),
            ],
            'dimension_filter' => new FilterExpression([
                'and_group' => new FilterExpressionList([
                    'expressions' => [
                        new FilterExpression([
                            'filter' => new Filter([
                                'field_name' => 'pagePath',
                                'string_filter' => new StringFilter([
                                    'match_type' => MatchType::EXACT,
                                    'value' => '/',
                                ]),
                            ]),
                        ]),
                        new FilterExpression([
                            'not_expression' => new FilterExpression([
                                'filter' => new Filter([
                                    'field_name' => 'country',
                                    'in_list_filter' => new InListFilter([
                                        'values' => ['China', 'Singapore', 'Vietnam'],
                                    ]),
                                ]),
                            ]),
                        ]),
                    ],
                ]),
            ]),
        ]));

        $lines = [
            '## Homepage Sessions (`/`)',
            '_Excludes traffic from China, Singapore, and Vietnam._',
            '',
            '| Sessions | Engagement Rate |',
            '| --- | --- |',
        ];

        if ($response->getRowCount() === 0) {
            $lines[] = '| — | — |';
        } else {
            foreach ($response->getRows() as $row) {
                $sessions = $row->getMetricValues()[0]->getValue();
                $engagementRate = round((float) $row->getMetricValues()[1]->getValue() * 100, 2);
                $lines[] = "| {$sessions} | {$engagementRate}% |";
            }
        }

        return implode("\n", $lines);
    }

    private function registerPageSources(BetaAnalyticsDataClient $client, string $property, DateRange $dateRange): string
    {
        $response = $client->runReport(new RunReportRequest([
            'property' => $property,
            'date_ranges' => [$dateRange],
            'dimensions' => [
                new Dimension(['name' => 'sessionSource']),
            ],
            'metrics' => [
                new Metric(['name' => 'activeUsers']),
            ],
            'dimension_filter' => new FilterExpression([
                'filter' => new Filter([
                    'field_name' => 'pagePath',
                    'string_filter' => new StringFilter([
                        'match_type' => MatchType::EXACT,
                        'value' => '/register',
                    ]),
                ]),
            ]),
            'order_bys' => [
                new OrderBy([
                    'metric' => new MetricOrderBy(['metric_name' => 'activeUsers']),
                    'desc' => true,
                ]),
            ],
        ]));

        $lines = [
            '## Register Page Active Users by Session Source (`/register`)',
            '',
            '| Source | Active Users |',
            '| --- | --- |',
        ];

        if ($response->getRowCount() === 0) {
            $lines[] = '| — | — |';
        } else {
            foreach ($response->getRows() as $row) {
                $source = $row->getDimensionValues()[0]->getValue();
                $users = $row->getMetricValues()[0]->getValue();
                $lines[] = "| {$source} | {$users} |";
            }
        }

        return implode("\n", $lines);
    }

    private function registerCtaClicks(BetaAnalyticsDataClient $client, string $property, DateRange $dateRange): string
    {
        $response = $client->runReport(new RunReportRequest([
            'property' => $property,
            'date_ranges' => [$dateRange],
            'dimensions' => [
                new Dimension(['name' => 'customEvent:cta_location']),
            ],
            'metrics' => [
                new Metric(['name' => 'eventCount']),
            ],
            'dimension_filter' => new FilterExpression([
                'filter' => new Filter([
                    'field_name' => 'eventName',
                    'string_filter' => new StringFilter([
                        'match_type' => MatchType::EXACT,
                        'value' => 'register_cta_click',
                    ]),
                ]),
            ]),
            'order_bys' => [
                new OrderBy([
                    'metric' => new MetricOrderBy(['metric_name' => 'eventCount']),
                    'desc' => true,
                ]),
            ],
        ]));

        $lines = [
            '## `register_cta_click` Events by CTA Location',
            '',
            '| CTA Location | Event Count |',
            '| --- | --- |',
        ];

        if ($response->getRowCount() === 0) {
            $lines[] = '| — | — |';
        } else {
            foreach ($response->getRows() as $row) {
                $location = $row->getDimensionValues()[0]->getValue();
                $count = $row->getMetricValues()[0]->getValue();
                $lines[] = "| {$location} | {$count} |";
            }
        }

        return implode("\n", $lines);
    }

    private function scrollDepth(BetaAnalyticsDataClient $client, string $property, DateRange $dateRange): string
    {
        $response = $client->runReport(new RunReportRequest([
            'property' => $property,
            'date_ranges' => [$dateRange],
            'dimensions' => [
                new Dimension(['name' => 'percentScrolled']),
            ],
            'metrics' => [
                new Metric(['name' => 'sessions']),
            ],
            'dimension_filter' => new FilterExpression([
                'filter' => new Filter([
                    'field_name' => 'pagePath',
                    'string_filter' => new StringFilter([
                        'match_type' => MatchType::EXACT,
                        'value' => '/',
                    ]),
                ]),
            ]),
            'order_bys' => [
                new OrderBy([
                    'dimension' => new DimensionOrderBy([
                        'dimension_name' => 'percentScrolled',
                        'order_type' => OrderType::NUMERIC,
                    ]),
                    'desc' => false,
                ]),
            ],
        ]));

        $lines = [
            '## Scroll Depth Distribution (`/`)',
            '',
            '| Scroll Depth | Sessions |',
            '| --- | --- |',
        ];

        if ($response->getRowCount() === 0) {
            $lines[] = '| — | — |';
        } else {
            foreach ($response->getRows() as $row) {
                $depth = $row->getDimensionValues()[0]->getValue();
                $sessions = $row->getMetricValues()[0]->getValue();
                $lines[] = "| {$depth}% | {$sessions} |";
            }
        }

        return implode("\n", $lines);
    }
}


================================================
FILE: app/Console/Commands/Migrations/BookmarkEntityType.php
================================================
<?php

namespace App\Console\Commands\Migrations;

use App\Models\EntityType;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class BookmarkEntityType extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'migrate:bookmarks';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Migrate bookmarks to the new entity type id foreign key';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $this->info('Migrating bookmarks to the new entity_type_id property');
        $entityTypes = EntityType::default()->get();
        foreach ($entityTypes as $entityType) {
            $statement = 'UPDATE bookmarks SET entity_type_id = ' . $entityType->id . ' WHERE type = \'' . $entityType->code . '\'';
            DB::statement($statement);
        }
        $this->info('Finished');
    }
}


================================================
FILE: app/Console/Commands/Migrations/Cdn.php
================================================
<?php

namespace App\Console\Commands\Migrations;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class Cdn extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'cdn:migrate';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Migrate cdn urls';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $tables = [
            //            'posts' => 'entry',
            //            'timeline_eras' => 'entry',
            //            'timeline_elements' => 'entry',
            //            'quest_elements' => 'entry',
            //            'attributes' => 'value',
            //            'campaigns' => 'entry',
            //            'entities' => 'entry',
            //            'map_layers' => 'entry',
            //            'character_traits' => 'entry',
            'plugin_versions' => 'content',
        ];
        $old = 'https://kanka-user-assets.s3.eu-central-1.amazonaws.com/';
        $new = 'https://cdn-ugc.kanka.io/';
        $batchSize = 1000;

        foreach ($tables as $tableName => $column) {
            $this->info("Migrating $tableName ($column)...");
            do {
                $affected = DB::update("
            UPDATE `$tableName`
            SET `$column` = REPLACE(`$column`, ?, ?)
            WHERE `$column` LIKE ?
            LIMIT $batchSize
        ", [$old, $new, "%$old%"]);

                $this->info(" Updated $affected rows...");

            } while ($affected > 0);

        }

        $tableName = 'plugin_versions';
        $column = 'json';
        $old = 'kanka-user-assets.s3.eu-central-1.amazonaws.com';
        $new = 'cdn-ugc.kanka.io';
        $this->info("Migrating $tableName ($column)...");
        do {
            $affected = DB::update("

                UPDATE `$tableName`
                SET `$column` = REPLACE(`$column`, ?, ?)
                WHERE `$column` LIKE ?
                LIMIT $batchSize
            ", [$old, $new, "%$old%"]);
            $this->info(" Updated $affected rows...");
        } while ($affected > 0);

        $this->info('URL replacement completed.');
    }
}


================================================
FILE: app/Console/Commands/Migrations/MigrateEntityStatuses.php
================================================
<?php

namespace App\Console\Commands\Migrations;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class MigrateEntityStatuses extends Command
{
    protected $signature = 'migrate:entity-statuses';

    protected $description = 'Migrate statuses from child tables to the entities table';

    public function handle(): void
    {
        $this->migrateCharacters();
        $this->migrateQuests();

        $this->migrateBooleans('creature', 'creatures', [
            'is_dead' => 'dead',
            'is_extinct' => 'extinct',
        ]);
        $this->migrateBooleans('location', 'locations', [
            'is_destroyed' => 'destroyed',
        ]);
        $this->migrateBooleans('organisation', 'organisations', [
            'is_defunct' => 'defunct',
        ]);
        $this->migrateBooleans('race', 'races', [
            'is_extinct' => 'extinct',
        ]);
        $this->migrateBooleans('family', 'families', [
            'is_extinct' => 'extinct',
        ]);

        $this->info('Finished migrating entity statuses.');
    }

    /**
     * Migrate character statuses (0=alive, 1=dead, 2=missing) to entities.status_id.
     */
    protected function migrateCharacters(): void
    {
        $characterTypeId = config('entities.ids.character');

        $mapping = [
            0 => 'alive',
            1 => 'dead',
            2 => 'missing',
        ];

        $statusIds = $this->getCategoryStatusIds($characterTypeId, $mapping);

        foreach ($mapping as $oldValue => $key) {
            if (! isset($statusIds[$key])) {
                $this->warn("Category status '{$key}' not found for characters, skipping.");

                continue;
            }

            $updated = DB::table('entities')
                ->join('characters', function ($join) use ($characterTypeId) {
                    $join->on('entities.entity_id', '=', 'characters.id')
                        ->where('entities.type_id', '=', $characterTypeId);
                })
                ->where('characters.status_id', $oldValue)
                ->update(['entities.status_id' => $statusIds[$key]]);

            $this->info("Characters [{$key}]: {$updated} entities updated.");
        }
    }

    /**
     * Migrate quest statuses (0=notStarted, 1=ongoing, 2=completed, 3=abandoned) to entities.status_id.
     */
    protected function migrateQuests(): void
    {
        $questTypeId = config('entities.ids.quest');

        $mapping = [
            0 => 'not_started',
            1 => 'ongoing',
            2 => 'completed',
            3 => 'abandoned',
        ];

        $statusIds = $this->getCategoryStatusIds($questTypeId, $mapping);

        foreach ($mapping as $oldValue => $key) {
            if (! isset($statusIds[$key])) {
                $this->warn("Category status '{$key}' not found for quests, skipping.");

                continue;
            }

            $updated = DB::table('entities')
                ->join('quests', function ($join) use ($questTypeId) {
                    $join->on('entities.entity_id', '=', 'quests.id')
                        ->where('entities.type_id', '=', $questTypeId);
                })
                ->where('quests.status_id', $oldValue)
                ->update(['entities.status_id' => $statusIds[$key]]);

            $this->info("Quests [{$key}]: {$updated} entities updated.");
        }
    }

    /**
     * Migrate boolean columns (is_dead, is_extinct, etc.) to entities.status_id.
     *
     * @param  array<string, string>  $columns  [boolean_column => status_key]
     */
    protected function migrateBooleans(string $entityTypeKey, string $table, array $columns): void
    {
        $typeId = config('entities.ids.' . $entityTypeKey);
        $statusIds = $this->getCategoryStatusIds($typeId, $columns);

        foreach ($columns as $column => $key) {
            if (! isset($statusIds[$key])) {
                $this->warn("Category status '{$key}' not found for {$table}, skipping.");

                continue;
            }

            $updated = DB::table('entities')
                ->join($table, function ($join) use ($table, $typeId) {
                    $join->on('entities.entity_id', '=', $table . '.id')
                        ->where('entities.type_id', '=', $typeId);
                })
                ->where($table . '.' . $column, true)
                ->whereNull('entities.status_id')
                ->update(['entities.status_id' => $statusIds[$key]]);

            $this->info(ucfirst($entityTypeKey) . " [{$key}]: {$updated} entities updated.");
        }
    }

    /**
     * Get category_statuses.id keyed by status key for a given entity type.
     *
     * @param  array<int|string, string>  $mapping
     * @return array<string, int>
     */
    protected function getCategoryStatusIds(int $categoryId, array $mapping): array
    {
        return DB::table('category_statuses')
            ->where('category_id', $categoryId)
            ->whereIn('key', array_values($mapping))
            ->pluck('id', 'key')
            ->toArray();
    }
}


================================================
FILE: app/Console/Commands/Migrations/MigrateStatusFilters.php
================================================
<?php

namespace App\Console\Commands\Migrations;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class MigrateStatusFilters extends Command
{
    protected $signature = 'migrate:status-filters';

    protected $description = 'Migrate old status filter params in bookmarks and dashboard widgets to the new status_id format';

    /** @var array<string, array<string, string>> Old boolean column → status key, keyed by entity type code */
    protected array $booleanMap = [
        'creature' => ['is_dead' => 'dead', 'is_extinct' => 'extinct'],
        'location' => ['is_destroyed' => 'destroyed'],
        'organisation' => ['is_defunct' => 'defunct'],
        'race' => ['is_extinct' => 'extinct'],
        'family' => ['is_extinct' => 'extinct'],
    ];

    /** @var array<int, string> Character old enum value → status key */
    protected array $characterMap = [0 => 'alive', 1 => 'dead', 2 => 'missing'];

    /** @var array<int, string> Quest old enum value → status key */
    protected array $questMap = [0 => 'not_started', 1 => 'ongoing', 2 => 'completed', 3 => 'abandoned'];

    /** @var array<int, array<string, int>> Cached category_status IDs keyed by entity_type_id then status key */
    protected array $statusCache = [];

    public function handle(): void
    {
        $this->migrateBookmarks();
        $this->migrateWidgets();

        $this->info('Finished migrating status filters.');
    }

    protected function migrateBookmarks(): void
    {
        $bookmarks = DB::table('bookmarks')
            ->whereNotNull('filters')
            ->where('filters', '!=', '')
            ->whereNotNull('entity_type_id')
            ->get(['id', 'filters', 'entity_type_id']);

        $updated = 0;
        foreach ($bookmarks as $bookmark) {
            $params = $this->parseFilterString($bookmark->filters);
            if ($this->migrateFilterParams($params, $bookmark->entity_type_id)) {
                DB::table('bookmarks')
                    ->where('id', $bookmark->id)
                    ->update(['filters' => $this->buildFilterString($params)]);
                $updated++;
            }
        }

        $this->info("Bookmarks: {$updated} updated.");
    }

    protected function migrateWidgets(): void
    {
        $widgets = DB::table('campaign_dashboard_widgets')
            ->whereNotNull('entity_type_id')
            ->whereNotNull('config')
            ->get(['id', 'config', 'entity_type_id']);

        $updated = 0;
        foreach ($widgets as $widget) {
            $config = json_decode($widget->config, true);
            if (empty($config['filters']) || ! is_string($config['filters'])) {
                continue;
            }

            $params = $this->parseFilterString($config['filters']);
            if ($this->migrateFilterParams($params, $widget->entity_type_id)) {
                $config['filters'] = $this->buildFilterString($params);
                DB::table('campaign_dashboard_widgets')
                    ->where('id', $widget->id)
                    ->update(['config' => json_encode($config)]);
                $updated++;
            }
        }

        $this->info("Widgets: {$updated} updated.");
    }

    /**
     * Replace old status filter params with the new status_id param.
     *
     * @return bool True if any changes were made
     */
    protected function migrateFilterParams(array &$params, int $entityTypeId): bool
    {
        $changed = false;

        // Handle character/quest enum status_id values
        $characterTypeId = config('entities.ids.character');
        $questTypeId = config('entities.ids.quest');

        if (isset($params['status_id']) && ($entityTypeId === $characterTypeId || $entityTypeId === $questTypeId)) {
            $oldValue = (int) $params['status_id'];
            $map = $entityTypeId === $characterTypeId ? $this->characterMap : $this->questMap;

            if (isset($map[$oldValue])) {
                $statusId = $this->resolveStatusId($entityTypeId, $map[$oldValue]);
                if ($statusId !== null) {
                    $params['status_id'] = (string) $statusId;
                    $changed = true;
                }
            }
        }

        // Handle boolean columns (is_dead, is_defunct, is_destroyed, is_extinct)
        $entityTypeCode = $this->resolveEntityTypeCode($entityTypeId);
        if ($entityTypeCode === null || ! isset($this->booleanMap[$entityTypeCode])) {
            return $changed;
        }

        foreach ($this->booleanMap[$entityTypeCode] as $oldParam => $statusKey) {
            if (! isset($params[$oldParam])) {
                continue;
            }

            $oldValue = (int) $params[$oldParam];
            unset($params[$oldParam]);
            $changed = true;

            // Value of 0 means "not this status", just remove the old param
            if ($oldValue === 0) {
                continue;
            }

            $statusId = $this->resolveStatusId($entityTypeId, $statusKey);
            if ($statusId !== null) {
                $params['status_id'] = (string) $statusId;
            }
        }

        return $changed;
    }

    protected function resolveStatusId(int $entityTypeId, string $key): ?int
    {
        if (! isset($this->statusCache[$entityTypeId])) {
            $this->statusCache[$entityTypeId] = DB::table('category_statuses')
                ->where('category_id', $entityTypeId)
                ->pluck('id', 'key')
                ->toArray();
        }

        return $this->statusCache[$entityTypeId][$key] ?? null;
    }

    protected function resolveEntityTypeCode(int $entityTypeId): ?string
    {
        $ids = config('entities.ids');
        foreach ($ids as $code => $id) {
            if ($id === $entityTypeId) {
                return $code;
            }
        }

        return null;
    }

    /**
     * @return array<string, string>
     */
    protected function parseFilterString(string $filters): array
    {
        parse_str($filters, $params);

        return $params;
    }

    /**
     * @param  array<string, string>  $params
     */
    protected function buildFilterString(array $params): string
    {
        return http_build_query($params);
    }
}


================================================
FILE: app/Console/Commands/Migrations/MigrateSubMentions.php
================================================
<?php

namespace App\Console\Commands\Migrations;

use App\Models\EntityMention;
use Carbon\Carbon;
use Illuminate\Console\Command;

class MigrateSubMentions extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'mentions:migrate-sub';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Update mentions linked to quest elements, timelines and posts to be sortable by name';

    protected int $count = 0;

    /**
     * Execute the console command.
     */
    public function handle(): void
    {
        $start = Carbon::now();
        $this->warn('Start at ' . $start);

        EntityMention::with([
            'questElement' => function ($sub) {
                $sub->select('id', 'name', 'quest_id');
            },
            'questElement.quest' => function ($sub) {
                $sub->select('id', 'name', 'is_private');
            },
            'questElement.quest.entity' => function ($sub) {
                $sub->select('id', 'entity_id', 'type_id');
            }])
            ->whereNotNull('quest_element_id')
            ->whereNull('entity_id')
            ->has('questElement')
            ->has('questElement.quest')
            ->has('questElement.quest.entity')
            ->chunkById(500, function ($mentions) {
                foreach ($mentions as $mention) {
                    $mention->entity_id = $mention->questElement->quest->entity->id;
                    $mention->saveQuietly();
                    $this->count++;
                }
            });
        $this->info('Migrated ' . $this->count . ' quest element mentions.');

        $this->count = 0;
        EntityMention::with([
            'timelineElement' => function ($sub) {
                $sub->select('id', 'name', 'timeline_id');
            },
            'timelineElement.timeline' => function ($sub) {
                $sub->select('id', 'name', 'is_private');
            },
            'timelineElement.timeline.entity' => function ($sub) {
                $sub->select('id', 'entity_id', 'type_id');
            }])
            ->whereNotNull('timeline_element_id')
            ->whereNull('entity_id')
            ->has('timelineElement')
            ->has('timelineElement.timeline')
            ->has('timelineElement.timeline.entity')
            ->chunkById(500, function ($mentions) {
                foreach ($mentions as $mention) {
                    $mention->entity_id = $mention->timelineElement->timeline->entity->id;
                    $mention->saveQuietly();
                    $this->count++;
                }
            });
        $this->info('Migrated ' . $this->count . ' timeline element mentions.');

        $this->count = 0;
        EntityMention::with([
            'post' => function ($sub) {
                $sub->select('id', 'entity_id');
            }])
            ->whereNotNull('post_id')
            ->whereNull('entity_id')
            ->has('post')
            ->has('post.entity')
            ->chunkById(5000, function ($mentions) {
                foreach ($mentions as $mention) {
                    $mention->entity_id = $mention->post->entity_id;
                    $mention->saveQuietly();
                    $this->count++;
                }
            });
        $this->info('Migrated ' . $this->count . ' post mentions.');

        $now = Carbon::now();
        $this->warn('End in ' . $now->diffInSeconds($start) . ' seconds at ' . $now);
    }
}


================================================
FILE: app/Console/Commands/Migrations/NewsletterSubCommand.php
================================================
<?php

namespace App\Console\Commands\Migrations;

use App\Models\User;
use App\Services\NewsletterService;
use Illuminate\Console\Command;

class NewsletterSubCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'migrate:newsletter-sub';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Update users who are subbed and want the newsletter to be in the correct mailerlite group';

    protected int $count = 0;

    public function __construct(protected NewsletterService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        User::whereNotNull('pledge')
            ->where('pledge', '<>', '')
            ->where('settings', 'like', '%mail_release%')
            ->chunk(100, function ($users) {
                foreach ($users as $user) {
                    if (! $user->mail_release) {
                        continue;
                    }
                    $options = [
                        'releases' => (bool) $user->mail_release,
                    ];
                    if ($this->service->user($user)->update($options)) {
                        $this->count++;

                        continue;
                    }
                    $this->error($this->service->error()->getMessage());
                }
                sleep(60);
            });

        $this->info('Processed ' . $this->count . ' users.');
    }
}


================================================
FILE: app/Console/Commands/Report/Accounts.php
================================================
<?php

namespace App\Console\Commands\Report;

use App\Jobs\Discord\ReportJob;
use App\Services\Report\AccountsReportService;
use Illuminate\Console\Command;

class Accounts extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'report:accounts {--days=7}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Generate a new accounts report';

    /**
     * Execute the console command.
     */
    public function handle(AccountsReportService $service): void
    {
        $days = (int) $this->option('days');

        $current = $service->getStats(now()->subDays($days), now());
        $previous = $service->getStats(now()->subDays($days * 2), now()->subDays($days));

        $title = "{$service->name()} (Last {$days} days)";

        $this->info($title);
        $this->info(str_repeat('=', 60));
        $this->newLine();

        foreach ($service->buildTerminalLines($current, $previous) as $line) {
            $this->line($line);
        }

        ReportJob::dispatch($title, $service->buildDiscordBody($current, $previous));
    }
}


================================================
FILE: app/Console/Commands/Report/Churn.php
================================================
<?php

namespace App\Console\Commands\Report;

use App\Jobs\Discord\ReportJob;
use App\Services\Report\ChurnReportService;
use Illuminate\Console\Command;

class Churn extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'report:churn {--days=7}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Generate churn report';

    /**
     * Execute the console command.
     */
    public function handle(ChurnReportService $service): void
    {
        $days = (int) $this->option('days');

        $current = $service->getStats(now()->subDays($days), now());
        $previous = $service->getStats(now()->subDays($days * 2), now()->subDays($days));

        $title = "{$service->name()} (Last {$days} days)";

        $this->info($title);
        $this->info(str_repeat('=', 60));
        $this->newLine();

        foreach ($service->buildTerminalLines($current, $previous) as $line) {
            $this->line($line);
        }

        ReportJob::dispatch($title, $service->buildDiscordBody($current, $previous));
    }
}


================================================
FILE: app/Console/Commands/Report/Onboarding.php
================================================
<?php

namespace App\Console\Commands\Report;

use App\Jobs\Discord\ReportJob;
use App\Services\Report\OnboardingReportService;
use Illuminate\Console\Command;

class Onboarding extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'report:onboarding {--days=7}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Generate onboarding funnel report';

    /**
     * Execute the console command.
     */
    public function handle(OnboardingReportService $service): void
    {
        $days = (int) $this->option('days');

        $current = $service->getStats(now()->subDays($days), now());
        $previous = $service->getStats(now()->subDays($days * 2), now()->subDays($days));

        $title = "{$service->name()} (Last {$days} days)";

        $this->info($title);
        $this->info(str_repeat('=', 60));
        $this->newLine();

        foreach ($service->buildTerminalLines($current, $previous) as $line) {
            $this->line($line);
        }

        ReportJob::dispatch($title, $service->buildDiscordBody($current, $previous));
    }
}


================================================
FILE: app/Console/Commands/Report/Weekly.php
================================================
<?php

namespace App\Console\Commands\Report;

use App\Jobs\Discord\ReportJob;
use App\Services\Report\WeeklyReportService;
use Illuminate\Console\Command;

class Weekly extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'report:weekly {--days=7}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Generate a new weekly report';

    /**
     * Execute the console command.
     */
    public function handle(WeeklyReportService $service): void
    {
        $days = (int) $this->option('days');

        // Ex: Feb 10-16, 2026
        $period = now()->subDays($days)->format('M j') . '-' . now()->format('j, Y');

        $current = $service->getStats(now()->subDays($days), now());
        $previous = $service->getStats(now()->subDays($days * 2), now()->subDays($days));

        $title = "**{$service->name()}** - $period";

        $this->info($title);
        $this->info(str_repeat('=', 60));
        $this->newLine();

        foreach ($service->buildTerminalLines($current, $previous) as $line) {
            $this->line($line);
        }

        ReportJob::dispatch($title, $service->buildDiscordBody($current, $previous));
    }
}


================================================
FILE: app/Console/Commands/SetupMeilisearch.php
================================================
<?php

namespace App\Console\Commands;

use App\Models\Attribute;
use App\Models\Entity;
use App\Models\Post;
use App\Models\QuestElement;
use App\Models\TimelineElement;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Number;
use Meilisearch\Client;

class SetupMeilisearch extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'setup:meilisearch
        {--c|chunk= : The number of records to import at a time (Defaults to configuration value: `scout.chunk.searchable`)}
    ';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Setup meilisearch';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        if (config('app.lazy')) {
            $this->error('Config error:');
            $this->error('Temporarily remove APP_LAZY=true from your .env file.');

            return;
        }

        // Update Non Separator Tokens for entity mentions
        $start = Carbon::now();
        $this->info('Meilisearch import started at ' . date('H:i:s'));
        $client = new Client(config('scout.meilisearch.host'), config('scout.meilisearch.key'));
        $client->getKeys();
        $client->deleteIndex('entities');
        $client->index('entities')->resetSeparatorTokens();
        $client->index('entities')->updateNonSeparatorTokens([':']);
        $client->index('entities')->updateFilterableAttributes(['campaign_id']);

        $models = [
            Attribute::class,
            Entity::class,
            Post::class,
            QuestElement::class,
            TimelineElement::class,
        ];
        foreach ($models as $model) {
            $time = Carbon::now();
            $object = new $model;
            $this->info('Importing ' . Number::format($object->count()) . ' [' . $model . '] at ' . date('H:i:s'));
            $object::makeAllSearchable($this->option('chunk'));
            $this->info('- Done in ' . round($time->diffInMinutes(), 4) . ' min');
            Log::info('Meilisearch', ['model' => $model]);
        }
        $this->info('Ended at ' . date('H:i:s') . ' after ' . round($start->diffInMinutes(), 3) . ' min');

        if (config('scout.queue')) {
            $this->newLine();
            $this->warn('Meilisearch seeding has been queued.');
            $this->warn('Now run `sail artisan queue:work` to finish importing.');
        }
    }
}


================================================
FILE: app/Console/Commands/SubscriptionEndPaypalFix.php
================================================
<?php

namespace App\Console\Commands;

use App\Jobs\SubscriptionEndJob;
use App\Models\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Laravel\Cashier\Subscription;

class SubscriptionEndPaypalFix extends Command
{
    protected $signature = 'subscriptions:end-paypal-fix
                            {--dry-run : List affected users without dispatching jobs}';

    protected $description = 'One-time fix: dispatch SubscriptionEndJob for users with expired PayPal subs that still have an active pledge';

    public function handle(): int
    {
        $subscriptions = Subscription::with('user')
            ->where('stripe_price', 'like', 'paypal_%')
            ->where('stripe_status', 'canceled')
            ->where('ends_at', '<', now())
            ->whereHas('user', fn ($q) => $q->whereNotNull('pledge')->where('pledge', '<>', ''))
            ->whereNotExists(function ($sub) {
                $sub->select(DB::raw(1))
                    ->from('subscriptions as s2')
                    ->whereColumn('s2.user_id', 'subscriptions.user_id')
                    ->whereColumn('s2.id', '<>', 'subscriptions.id')
                    ->whereColumn('s2.created_at', '>', 'subscriptions.ends_at');
            })
            ->get();

        $count = $subscriptions->count();
        $this->info("Found {$count} affected users.");

        if ($count === 0) {
            return self::SUCCESS;
        }

        if ($this->option('dry-run')) {
            $this->table(
                ['User ID', 'Name', 'Email', 'Pledge', 'Ended At'],
                $subscriptions->map(fn (Subscription $sub) => [
                    $sub->user->id,
                    $sub->user->name,
                    $sub->user->email,
                    $sub->user->pledge,
                    $sub->ends_at,
                ])
            );

            return self::SUCCESS;
        }

        foreach ($subscriptions as $subscription) {
            /** @var User $user */
            $user = $subscription->user;
            SubscriptionEndJob::dispatch($user);
            $this->line("Dispatched for user {$user->id} ({$user->name})");
        }

        $this->info("Dispatched {$count} jobs.");

        return self::SUCCESS;
    }
}


================================================
FILE: app/Console/Commands/Subscriptions/EndFreeTrials.php
================================================
<?php

namespace App\Console\Commands\Subscriptions;

use App\Services\Subscription\FreeTrialEndService;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use Illuminate\Console\Command;

class EndFreeTrials extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'subscriptions:end-free-trials';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'End free trials';

    public function __construct(protected FreeTrialEndService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $count = $this->service->run();
        // $this->info(Carbon::now()->subMinute()->startOfMinute() . ' and ' . Carbon::now()->subMinute()->endOfMinute());
        $log = 'Ended ' . $count . ' free trials.';
        $this->info($log);
        $this->log($log . ' ' . implode(',', $this->service->ids()));

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Subscriptions/EndSubscriptions.php
================================================
<?php

namespace App\Console\Commands\Subscriptions;

use App\Services\Subscription\SubscriptionEndService;
use App\Traits\HasJobLog;
use Illuminate\Console\Command;

class EndSubscriptions extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'subscriptions:end {fake=false}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'End custom subscriptions (sofort) that have expired';

    public function __construct(protected SubscriptionEndService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $fake = $this->argument('fake');

        $count = $this->service->run($fake === 'false');
        $log = 'Ended ' . $count . ' subscriptions.';
        $this->info($log);
        $this->log($log . ' ' . implode(', ', $this->service->ids()));

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Subscriptions/ExpiringCardCommand.php
================================================
<?php

namespace App\Console\Commands\Subscriptions;

use App\Jobs\Emails\Subscriptions\ExpiringCardAlert;
use App\Models\User;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use Illuminate\Console\Command;

class ExpiringCardCommand extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'subscriptions:expiring-card';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Alert subscribers who have an old card set up in their settings';

    /** @var int Number of alerts sent */
    protected int $count = 0;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $now = Carbon::now()->endOfMonth();
        $log = "Looking for cards expiring on {$now->format('Y-m-d')}";
        $this->info($log);

        User::where('card_expires_at', $now)
            ->with('subscriptions')
            ->chunk(100, function ($users): void {
                foreach ($users as $user) {
                    $this->notify($user);
                }
            });

        $this->info('Alerted ' . $this->count . ' subscribers.');
        $log .= '<br />' . 'Alerted ' . $this->count . ' subscribers.';

        $this->log($log);

        return 0;
    }

    protected function notify(User $user): void
    {
        // Check the user has a card
        if (! $user->subscribed('kanka')) {
            // Has a card but isn't subbed, ignore
            $this->warn('Expired card but unsubbed user');

            return;
        }

        // Notify the user about their soon expiring card
        ExpiringCardAlert::dispatch($user);
        $this->count++;
    }
}


================================================
FILE: app/Console/Commands/Subscriptions/PaypalExpiringCommand.php
================================================
<?php

namespace App\Console\Commands\Subscriptions;

use App\Jobs\Emails\Subscriptions\PaypalExpiringAlert;
use App\Models\User;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use Illuminate\Console\Command;

class PaypalExpiringCommand extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'subscriptions:paypal-expiring';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Alert PayPal subscribers whose subscription expires in 14 days';

    /** @var int Number of alerts sent */
    protected int $count = 0;

    public function handle(): int
    {
        $target = Carbon::now()->addDays(14)->toDateString();
        $log = "Looking for PayPal subscriptions expiring on {$target}";
        $this->info($log);

        User::whereHas('subscriptions', function ($query) use ($target): void {
            $query->where('stripe_price', 'like', 'paypal_%')
                ->whereDate('ends_at', $target);
        })
            ->chunk(100, function ($users): void {
                foreach ($users as $user) {
                    $this->notify($user);
                }
            });

        $this->info('Alerted ' . $this->count . ' subscribers.');
        $log .= '<br />' . 'Alerted ' . $this->count . ' subscribers.';

        $this->log($log);

        return 0;
    }

    protected function notify(User $user): void
    {
        if (! $user->subscribed('kanka')) {
            return;
        }

        PaypalExpiringAlert::dispatch($user);
        $this->count++;
    }
}


================================================
FILE: app/Console/Commands/Subscriptions/SubCleanupCommand.php
================================================
<?php

namespace App\Console\Commands\Subscriptions;

use App\Jobs\SubscriptionEndJob;
use App\Models\User;
use Illuminate\Console\Command;

class SubCleanupCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'subscriptions:cleanup {user}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Cleanup the sub';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $userID = $this->argument('user');

        /** @var User $user */
        $user = User::findOrFail($userID);

        SubscriptionEndJob::dispatch($user);

        $this->info('Sub cleaned up for user ' . $user->name . '#' . $user->id . '.');

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Tests/Mailerlite.php
================================================
<?php

namespace App\Console\Commands\Tests;

use App\Models\User;
use App\Services\NewsletterService;
use Illuminate\Console\Command;

class Mailerlite extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'test:mailerlite';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Test the mailerlite integration';

    public function __construct(protected NewsletterService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $user = User::findorFail(13);

        if ($this->service->user($user)->isSubscribed()) {
            $this->service->remove();
        } else {
            $options = [
                'releases' => (bool) $user->mail_release,
            ];

            $this->service->update($options);
        }

        return Command::SUCCESS;
    }
}


================================================
FILE: app/Console/Commands/Tests/SendNotification.php
================================================
<?php

namespace App\Console\Commands\Tests;

use App\Models\User;
use App\Notifications\Header;
use Illuminate\Console\Command;

class SendNotification extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'test:notify {user=1} {url=0}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Send a test notification';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $userID = $this->argument('user');
        $url = $this->argument('url');

        if ($url !== '0') {
            $url = config('app.url') . '/pricing';
        }

        /** @var User $user */
        $user = User::findOrFail($userID);
        $user->notify(new Header('campaign.application.approved', 'download', 'info', ['link' => $url, 'campaign' => 'Fun & Games']));

        $this->info('User ' . $user->name . '#' . $user->id . ' notified.');

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Tests/SignImageCommand.php
================================================
<?php

namespace App\Console\Commands\Tests;

use App\Facades\Img;
use Illuminate\Console\Command;
use Illuminate\Support\Str;

class SignImageCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     *
     * @example php artisan img:sign images/tiers/xxx-325.png app 200
     * @example php artisan img:sign locations/xxx.png user 200x304
     * @example php artisan img:sign images/features/kanka-feature-dashboard.jpg app
     */
    protected $signature = 'img:sign {img} {base=user} {size=200}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Sign an image for thumbor';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $img = $this->argument('img');
        $base = $this->argument('base');
        $width = $height = $this->argument('size');
        if (Str::contains($width, 'x')) {
            $full = $width;
            $width = Str::before($full, 'x');
            $height = Str::after($full, 'x');
        }
        $width = (int) $width;
        $height = (int) $height;

        if (! empty($height)) {
            $url = Img::console()->base($base)->crop($width, $height)->url($img);
        } else {
            $url = Img::console()->base($base)->url($img);
        }

        $this->info("Base: {$base}");
        $this->info("Size: {$width} x {$height}");
        $this->info('' . $url);

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Tests/TestEmail.php
================================================
<?php

namespace App\Console\Commands\Tests;

use App\Events\FeatureCreated;
use App\Jobs\Emails\Purge\FirstWarningJob;
use App\Jobs\Emails\Purge\SecondWarningJob;
use App\Jobs\Emails\SubscriptionCancelEmailJob;
use App\Jobs\Emails\SubscriptionDowngradedEmailJob;
use App\Jobs\Emails\SubscriptionFailedEmailJob;
use App\Jobs\Emails\Subscriptions\ExpiringCardAlert;
use App\Jobs\Emails\Subscriptions\UpcomingYearlyAlert;
use App\Jobs\Emails\Subscriptions\WelcomeSubscriptionEmailJob;
use App\Jobs\Emails\WelcomeEmailJob;
use App\Jobs\Users\NewPassword;
use App\Models\Feature;
use App\Models\Tier;
use App\Models\User;
use Illuminate\Console\Command;

class TestEmail extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'test:email {user} {template=welcome}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Send a test email to a user';

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $userId = $this->argument('user');
        $user = User::findOrFail($userId);

        $template = $this->argument('template');
        if ($template === 'welcome') {
            WelcomeEmailJob::dispatch($user, 'en');
        } elseif ($template === 'cancelled') {
            SubscriptionCancelEmailJob::dispatch($user, null, 'custom text');
        } elseif ($template === 'downgrade') {
            SubscriptionDowngradedEmailJob::dispatch($user);
        } elseif ($template === 'elemental') {
            WelcomeSubscriptionEmailJob::dispatch($user, Tier::where('name', 'elemental')->first());
        } elseif ($template === 'wyvern') {
            WelcomeSubscriptionEmailJob::dispatch($user, Tier::where('name', 'wyvern')->first());
        } elseif ($template === 'owlbear') {
            WelcomeSubscriptionEmailJob::dispatch($user, Tier::where('name', 'owlbear')->first());
        } elseif ($template === 'expiring') {
            ExpiringCardAlert::dispatch($user);
        } elseif ($template === 'failed') {
            SubscriptionFailedEmailJob::dispatch($user);
        } elseif ($template === 'upcoming') {
            UpcomingYearlyAlert::dispatch($user);
        } elseif ($template === 'password') {
            NewPassword::dispatch($user);
        } elseif ($template === 'first') {
            FirstWarningJob::dispatch($user->id);
        } elseif ($template === 'second') {
            SecondWarningJob::dispatch($user->id);
        } elseif ($template === 'feature') {
            $feature = Feature::latest()->first();
            FeatureCreated::dispatch($feature);
        } else {
            $this->warn('Unknown template ' . $template);
        }

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Tests/TestWhiteboards.php
================================================
<?php

namespace App\Console\Commands\Tests;

use App\Events\WhiteboardUpdated;
use Illuminate\Console\Command;

class TestWhiteboards extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'test:whiteboards {id}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Send a websocket test event to a given whiteboard ID';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $id = (int) $this->argument('id');

        broadcast(new WhiteboardUpdated($id, [
            'test' => true,
            'message' => "Test event sent to whiteboard {$id}",
        ]));

        $this->info("Broadcasted test event to whiteboard.{$id}");

        return Command::SUCCESS;
    }
}


================================================
FILE: app/Console/Commands/Translations/Missing.php
================================================
<?php

namespace App\Console\Commands\Translations;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class Missing extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'translations:missing {locale : The target locale to find missing translations for}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Export missing translations for a given locale.';

    protected string $prompt;

    /**
     * Execute the console command.
     */
    public function handle(): void
    {
        $locale = $this->argument('locale');

        $this->prompt = '';

        $translations = DB::select(
            "select * from ltm_translations where locale = 'en' and not exists(select t.* from ltm_translations as t where t.locale = ? and t.group = ltm_translations.group and t.key = ltm_translations.key) order by ltm_translations.group ASC, ltm_translations.key ASC",
            [$locale]
        );

        $groups = [];
        foreach ($translations as $translation) {
            if (! isset($groups[$translation->group])) {
                $groups[$translation->group] = [];
                $this->prompt .= "\n#" . $translation->group . "\n";
            }
            $this->prompt .= ' - ' . $translation->value . "\n";
        }
        $this->info($this->prompt);
    }
}


================================================
FILE: app/Console/Commands/Users/OfferFreeTrial.php
================================================
<?php

namespace App\Console\Commands\Users;

use App\Services\Users\OfferTrialService;
use App\Traits\HasJobLog;
use Illuminate\Console\Command;

class OfferFreeTrial extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'users:trial';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Offer a free trial to some users';

    public function __construct(protected OfferTrialService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $count = $this->service->run();
        $log = 'Offered free trial to ' . $count . ' users.';
        $this->info($log);
        $this->log($log . ' ' . implode(',', $this->service->ids()));
    }
}


================================================
FILE: app/Console/Commands/Users/RegenerateDiscordToken.php
================================================
<?php

namespace App\Console\Commands\Users;

use App\Jobs\Users\UnsyncDiscord;
use App\Models\UserApp;
use App\Services\DiscordService;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use GuzzleHttp\Exception\ClientException;
use Illuminate\Console\Command;
use Illuminate\Support\Str;

class RegenerateDiscordToken extends Command
{
    use HasJobLog;

    /**
     * The name and signature of the console command.
     */
    protected $signature = 'users:renew-discord-tokens';

    /**
     * The console command description.
     */
    protected $description = 'Renew a user\'s discord api token.';

    public function __construct(protected DiscordService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $tokens = UserApp::select(['id', 'user_id', 'access_token', 'refresh_token', 'expires_at', 'updated_at', 'settings'])
            ->with('user')
            ->where('app', '=', 'discord')
            ->where('expires_at', '<=', Carbon::now()->toDateString())
            ->get();

        if ($tokens->count() === 0) {
            $this->error('No tokens to renew');

            return 0;
        }

        $count = 0;
        foreach ($tokens as $token) {
            try {
                $this->service->app($token)->refresh();
                $count++;
            } catch (ClientException $e) {
                if (Str::contains($e->getResponse()->getBody()->getContents(), 'invalid_grant')) {
                    UnsyncDiscord::dispatch($token);
                }
            } catch (\Exception $e) {
                report($e);
                // Silence errors and ignore
            }
        }

        $log = 'Renewed ' . $count . ' tokens.';
        $this->info($log);
        $this->log($log . ' ' . implode(',', $this->service->ids()));

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Users/ResetUserPassword.php
================================================
<?php

namespace App\Console\Commands\Users;

use App\Enums\UserAction;
use App\Models\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;

class ResetUserPassword extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'users:reset-password {user} {password=auto}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Reset a user password';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $userID = $this->argument('user');
        $user = User::find($userID);
        if (empty($user)) {
            $this->error('Invalid user id ' . $userID);

            return 0;
        }

        $password = $this->argument('password');
        if ($password == 'auto') {
            $password = Str::random();
        }

        $hash = Hash::make($password);
        $user->update(['password' => $hash]);
        $user->log(UserAction::passwordAdminUpdate);

        $this->info('User ' . $userID . ' updated to new password ' . $password);

        return 0;
    }
}


================================================
FILE: app/Console/Commands/Users/SyncUserRoles.php
================================================
<?php

namespace App\Console\Commands\Users;

use App\Models\User;
use App\Services\DiscordService;
use Illuminate\Console\Command;

class SyncUserRoles extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'users:sync-discord {user}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Sync a user\'s discord roles.';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct(protected DiscordService $service)
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $userID = $this->argument('user');

        /** @var User $user */
        $user = User::find($userID);

        if ($user->apps()->app('discord')->count() === 0) {
            $this->error('User has no discord sync.');

            return 0;
        }

        $this->service->user($user)
            ->addRoles();

        $logs = $this->service->logs();
        foreach ($logs as $log) {
            $this->info($log);
        }

        return 0;
    }
}


================================================
FILE: app/Console/Commands/VerifyParentIds.php
================================================
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class VerifyParentIds extends Command
{
    protected $signature = 'parent:verify';

    protected $description = 'Report mismatches between child table parent keys and entities.parent_id';

    public function handle(): int
    {
        $models = [
            'abilities' => ['key' => 'ability_id',            'type_id' => config('entities.ids.ability')],
            'attribute_templates' => ['key' => 'attribute_template_id', 'type_id' => config('entities.ids.attribute_template')],
            'calendars' => ['key' => 'calendar_id',           'type_id' => config('entities.ids.calendar')],
            'creatures' => ['key' => 'creature_id',           'type_id' => config('entities.ids.creature')],
            'events' => ['key' => 'event_id',              'type_id' => config('entities.ids.event')],
            'families' => ['key' => 'family_id',             'type_id' => config('entities.ids.family')],
            'items' => ['key' => 'item_id',               'type_id' => config('entities.ids.item')],
            'journals' => ['key' => 'journal_id',            'type_id' => config('entities.ids.journal')],
            'locations' => ['key' => 'location_id',           'type_id' => config('entities.ids.location')],
            'maps' => ['key' => 'map_id',                'type_id' => config('entities.ids.map')],
            'notes' => ['key' => 'note_id',               'type_id' => config('entities.ids.note')],
            'organisations' => ['key' => 'organisation_id',       'type_id' => config('entities.ids.organisation')],
            'quests' => ['key' => 'quest_id',              'type_id' => config('entities.ids.quest')],
            'races' => ['key' => 'race_id',               'type_id' => config('entities.ids.race')],
            'tags' => ['key' => 'tag_id',                'type_id' => config('entities.ids.tag')],
            'timelines' => ['key' => 'timeline_id',           'type_id' => config('entities.ids.timeline')],
        ];

        $totalMismatches = 0;

        foreach ($models as $table => $config) {
            // Find entities where child has a parent but entities.parent_id doesn't match
            $mismatches = DB::select("
                SELECT e.id AS entity_id, e.name, e.parent_id AS entity_parent_id,
                       c.{$config['key']} AS child_parent_id,
                       parent_entity.id AS expected_parent_id
                FROM entities e
                JOIN {$table} c ON e.entity_id = c.id AND e.type_id = {$config['type_id']}
                LEFT JOIN entities parent_entity ON parent_entity.entity_id = c.{$config['key']}
                    AND parent_entity.type_id = {$config['type_id']}
                WHERE (
                    (c.{$config['key']} IS NOT NULL AND (e.parent_id IS NULL OR e.parent_id != parent_entity.id))
                    OR (c.{$config['key']} IS NULL AND e.parent_id IS NOT NULL)
                )
                AND e.deleted_at IS NULL
            ");

            if (count($mismatches) > 0) {
                $this->warn("{$table}: " . count($mismatches) . ' mismatches');
                foreach ($mismatches as $row) {
                    $this->line("  Entity #{$row->entity_id} ({$row->name}): entity.parent_id={$row->entity_parent_id}, child.{$config['key']}={$row->child_parent_id}, expected={$row->expected_parent_id}");
                }
                $totalMismatches += count($mismatches);
            } else {
                $this->info("{$table}: OK");
            }
        }

        if ($totalMismatches === 0) {
            $this->info('All parent IDs are in sync.');

            return self::SUCCESS;
        }

        $this->error("Total mismatches: {$totalMismatches}");

        return self::FAILURE;
    }
}


================================================
FILE: app/Console/Commands/WordCount.php
================================================
<?php

namespace App\Console\Commands;

use App\Models\CharacterTrait;
use App\Models\Entity;
use App\Models\MapLayer;
use App\Models\MapMarker;
use App\Models\Post;
use App\Models\QuestElement;
use App\Models\TimelineElement;
use App\Models\TimelineEra;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class WordCount extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'app:word-count';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Count the words in every entity';

    /**
     * Execute the console command.
     */
    public function handle()
    {

        $start = Carbon::now();
        $this->info('Started at ' . date('H:i:s'));

        $this->process(Entity::class);
        $this->process(Post::class);
        $this->process(TimelineElement::class);
        $this->process(TimelineEra::class);
        $this->process(QuestElement::class);
        $this->process(MapMarker::class);
        $this->process(MapLayer::class);
        $this->process(CharacterTrait::class);
        $this->info('Ended at ' . date('H:i:s') . ' after ' . round($start->diffInMinutes(), 3) . ' min');
    }

    protected function process(string $className, string $field = 'entry')
    {
        $model = app()->make($className);
        $table = $model->getTable();

        // DB::statement('UPDATE ' . $model->getTable() . ' SET words = null');
        $this->info($className);
        $total = $model::whereNull('words')->whereNotNull($field)->count();
        $progressBar = $this->output->createProgressBar($total);

        $batchSize = 5000;
        $processed = 0;

        do {
            // Process in batches using LIMIT/OFFSET or better yet, use a cursor approach
            $updated = DB::table($table)
                ->whereNotNull($field)
                ->whereNull('words')
                ->limit($batchSize)
                ->update([
                    'words' => DB::raw("
                    CASE
                        WHEN TRIM(REGEXP_REPLACE($field, '<[^>]*>', '')) = '' THEN 0
                        ELSE (
                            LENGTH(TRIM(REGEXP_REPLACE($field, '<[^>]*>', ''))) -
                            LENGTH(REPLACE(TRIM(REGEXP_REPLACE($field, '<[^>]*>', '')), ' ', '')) + 1
                        )
                    END
                "),
                ]);

            $processed += $updated;
            $progressBar->advance($updated);

            // Small delay to prevent overwhelming the database
            usleep(10000); // 10ms delay

        } while ($updated > 0);

        $progressBar->finish();
        $this->newLine();

        $this->info("Processed {$processed} records total");

    }
}


================================================
FILE: app/Console/Kernel.php
================================================
<?php

namespace App\Console;

use App\Console\Commands\Campaigns\VisibileEntityCountCommand;
use App\Console\Commands\Cleanup\AnonymiseUserLogs;
use App\Console\Commands\Cleanup\CleanupEntityLogs;
use App\Console\Commands\Cleanup\CleanupTrashed;
use App\Console\Commands\Cleanup\CleanupTrashedCampaigns;
use App\Console\Commands\Cleanup\CleanupUsers;
use App\Console\Commands\Entities\CalendarAdvancer;
use App\Console\Commands\Report\Accounts;
use App\Console\Commands\Report\Churn;
use App\Console\Commands\Report\Onboarding;
use App\Console\Commands\Report\Weekly;
use App\Console\Commands\Subscriptions\EndFreeTrials;
use App\Console\Commands\Subscriptions\EndSubscriptions;
use App\Console\Commands\Subscriptions\ExpiringCardCommand;
use App\Console\Commands\Subscriptions\PaypalExpiringCommand;
use App\Console\Commands\Users\RegenerateDiscordToken;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [

    ];

    /**
     * Define the application's command schedule.
     */
    protected function schedule(Schedule $schedule): void
    {
        $schedule->command(ExpiringCardCommand::class)->onOneServer()->monthly();
        $schedule->command('model:prune')->onOneServer()->daily();
        $schedule->command(CalendarAdvancer::class)->onOneServer()->daily();
        $schedule->command(AnonymiseUserLogs::class)->onOneServer()->daily();
        $schedule->command(EndSubscriptions::class)->onOneServer()->dailyAt('00:05')->sentryMonitor();
        $schedule->command(EndFreeTrials::class)->onOneServer()->dailyAt('00:01');
        $schedule->command(PaypalExpiringCommand::class)->onOneServer()->dailyAt('06:30');
        $schedule->command(RegenerateDiscordToken::class)->onOneServer()->dailyAt('00:15');
        $schedule->command(VisibileEntityCountCommand::class)->onOneServer()->dailyAt('01:00');
        $schedule->command(CleanupTrashed::class)->onOneServer()->dailyAt('01:15');
        $schedule->command('backup:clean')->onOneServer()->dailyAt('01:20');
        $schedule->command(CleanupEntityLogs::class)->onOneServer()->dailyAt('01:30');
        $schedule->command(CleanupTrashedCampaigns::class)->onOneServer()->dailyAt('01:45');
        // $schedule->command(CleanupUsers::class)->onOneServer()->dailyAt('01:50');
        $schedule->command('backup:run')->onOneServer()->twiceDaily(2, 14);

        $schedule->command(Onboarding::class)->onOneServer()->weekly();
        $schedule->command(Churn::class)->onOneServer()->weekly();
        // $schedule->command(Accounts::class)->onOneServer()->weekly();
        $schedule->command(Weekly::class)->onOneServer()->weekly();

        // $schedule->command('backup:monitor')->daily()->at('03:00');

    }

    /**
     * Register the commands for the application.
     */
    protected function commands(): void
    {
        $this->load(__DIR__ . '/Commands');

        require base_path('routes/console.php');
    }
}


================================================
FILE: app/Datagrids/Actions/BookmarkDatagridActions.php
================================================
<?php

namespace App\Datagrids\Actions;

/**
 * Menu links aren't real entities, meaning that they don't get a lot of actions
 */
class BookmarkDatagridActions extends DatagridActions
{
    public $bulkPermissions = false;

    public $bulkCopyToCampaign = false;

    public $bulkTransform = false;

    public $bulkPrint = false;

    public $bulkTemplate = false;
}


================================================
FILE: app/Datagrids/Actions/DatagridActions.php
================================================
<?php

namespace App\Datagrids\Actions;

/**
 * Datagrids
 *
 * This abstract class controls parameters that are available to the datagrid bulk actions.
 * For example, to disable the bulk setting of permissions, set $bulkPermissions to false.
 * You can also add custom fields in the bulk delete modal by then testing on
 */
abstract class DatagridActions
{
    /** @var bool */
    public $bulkPermissions = true;

    /** @var bool */
    public $bulkCopyToCampaign = true;

    /** @var bool */
    public $bulkTransform = true;

    /** @var bool */
    public $bulkPrint = true;

    /** @var bool */
    public $bulkTemplate = true;

    /** @var bool */
    public $bulkEditing = true;

    /**
     * Determine if the datagrid has bulk permissions.
     */
    public function hasBulkPermissions(): bool
    {
        return $this->bulkPermissions;
    }

    /**
     * Determine if the datagrid has bulk permissions.
     */
    public function hasBulkEditing(): bool
    {
        return $this->bulkEditing;
    }

    /**
     * Determine if the datagrid has bulk copy to campaign.
     */
    public function hasBulkCopy(): bool
    {
        return $this->bulkCopyToCampaign;
    }

    /**
     * Determine if the datagrid has bulk transforming entities.
     */
    public function hasBulkTransform(): bool
    {
        return $this->bulkTransform;
    }

    /**
     * Determine if the datagrid has bulk transforming entities.
     */
    public function hasBulkTemplate(): bool
    {
        return $this->bulkTemplate;
    }

    /**
     * Determine if the datagrid has bulk entity printing.
     */
    public function hasBulkPrint(): bool
    {
        return $this->bulkPrint;
    }
}


================================================
FILE: app/Datagrids/Actions/DefaultDatagridActions.php
================================================
<?php

namespace App\Datagrids\Actions;

/**
 * By default, allow all datagrid actions
 */
class DefaultDatagridActions extends DatagridActions {}


================================================
FILE: app/Datagrids/Actions/DeprecatedDatagridActions.php
================================================
<?php

namespace App\Datagrids\Actions;

/**
 * For conversations, we don't want to bulk copy them to other campaigns, nor transform
 * them into other entity types.
 */
class DeprecatedDatagridActions extends DatagridActions
{
    public $bulkCopyToCampaign = false;

    public $bulkTransform = false;
}


================================================
FILE: app/Datagrids/Actions/HistoryActions.php
================================================
<?php

namespace App\Datagrids\Actions;

/**
 * Relations heavily restrict options because they aren't entities.
 */
class HistoryActions extends DatagridActions
{
    public $bulkPermissions = false;

    public $bulkCopyToCampaign = false;

    public $bulkPrint = false;

    public $bulkTransform = false;

    public $bulkTemplate = false;
}


================================================
FILE: app/Datagrids/Actions/NoDatagridActions.php
================================================
<?php

namespace App\Datagrids\Actions;

/**
 * Catch all datagrid that disabled everything.
 * Used by dice results interface
 */
class NoDatagridActions extends DatagridActions
{
    public $bulkCopyToCampaign = false;

    public $bulkTransform = false;

    public $bulkPermissions = false;

    public $bulkPrint = false;

    public $bulkEditing = false;
}


================================================
FILE: app/Datagrids/Actions/RelationDatagridActions.php
================================================
<?php

namespace App\Datagrids\Actions;

/**
 * Relations heavily restrict options because they aren't entities.
 */
class RelationDatagridActions extends DatagridActions
{
    public $bulkPermissions = false;

    public $bulkCopyToCampaign = false;

    public $bulkPrint = false;

    public $bulkTransform = false;

    public $bulkTemplate = false;
}


================================================
FILE: app/Datagrids/Bulks/AbilityBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class AbilityBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/AttributeTemplateBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class AttributeTemplateBulk extends Bulk
{
    protected array $fields = [
        'name',
        // 'attribute_template_id',
        // 'tags',
        'parent_id',
        'entity_type_id',
        'private_choice',
        'enabled_choice',
        'entity_image',
        'entity_header',
    ];

    protected array $booleans = [
        'is_enabled',
    ];
}


================================================
FILE: app/Datagrids/Bulks/BookmarkBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class BookmarkBulk extends Bulk
{
    protected array $fields = [
        'name',
        'icon',
        // 'position',
        'private_choice',
        'is_active',
    ];
}


================================================
FILE: app/Datagrids/Bulks/Bulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

/**
 * Class Bulk
 *
 * This abstract class allows each sub object to define which fields are available in the
 * bulk edit interface from the main entity type's datagrid.
 */
abstract class Bulk
{
    /**
     * The fields available for bulk edit, fallsback to a set of defaults
     */
    public function fields(): array
    {
        if (isset($this->fields)) {
            return $this->fields;
        }

        return $this->defaults();
    }

    /**
     * The mapping, used for is_/has_ fields to be able to unset a value. For example a character's is_dead status
     */
    public function booleans(): array
    {
        if (isset($this->booleans)) {
            return $this->booleans;
        }

        return [];
    }

    /**
     * The list of fields that are foreign fields, to be able to properly unset(detach) them if needed
     */
    public function foreignRelations(): array
    {
        if (isset($this->foreignRelations)) {
            return $this->foreignRelations;
        }

        return [];
    }

    /**
     * Attributes that can support basic math
     */
    public function maths(): array
    {
        if (isset($this->maths)) {
            return $this->maths;
        }

        return [];
    }

    /**
     * Default fields that are available in the bulk edit interface if no other are defined.
     */
    protected function defaults(): array
    {
        return [
            'name',
            'type',
            'tags',
            'private_choice',
            'entity_image',
            'entity_header',
        ];
    }
}


================================================
FILE: app/Datagrids/Bulks/CalendarBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class CalendarBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'tags',
        'private_choice',
        'format',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/CharacterBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class CharacterBulk extends Bulk
{
    protected array $fields = [
        'name',
        'title',
        'families',
        'entity_locations',
        'races',
        'type',
        'sex',
        'status_id',
        'age',
        'organisations',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];

    protected array $maths = [
        'age',
    ];

    protected array $foreignRelations = [
        'races',
        'families',
        'organisations',
    ];
}


================================================
FILE: app/Datagrids/Bulks/ConversationBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class ConversationBulk extends Bulk
{
    protected array $fields = [
        'name',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/CreatureBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class CreatureBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'locations',
        'status_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/DefaultBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

/**
 * Class DefaultBulk
 */
class DefaultBulk extends Bulk {}


================================================
FILE: app/Datagrids/Bulks/DiceRollBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class DiceRollBulk extends Bulk
{
    protected array $fields = [
        'name',
        'character_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/EntityBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class EntityBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'locations',
        'status_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/EventBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class EventBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'entity_locations',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/FamilyBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class FamilyBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'location_id',
        'status_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/ItemBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class ItemBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'price',
        'size',
        'weight',
        'parent_id',
        'location_id',
        'creators',
        'status_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/JournalBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class JournalBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'author_id',
        'date',
        'location_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/LocationBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class LocationBulk extends Bulk
{
    protected array $fields = [
        'name',
        'title',
        'type',
        'status_id',
        'parent_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/MapBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class MapBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'location_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/NoteBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class NoteBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/OrganisationBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class OrganisationBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'locations',
        'status_id',
        'parent_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/QuestBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class QuestBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'instigator_id',
        'date',
        'locations',
        'status_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/RaceBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class RaceBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'locations',
        'status_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Bulks/RelationBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class RelationBulk extends Bulk
{
    protected array $fields = [
        'owner_id',
        'target_id',
        'relation',
        'attitude',
        'colour_picker',
        'pinned_choice',
        'visibility_id',
        'update_mirrored',
        'unmirror',
    ];

    protected array $booleans = [
        'colour',
        'is_pinned',
    ];
}


================================================
FILE: app/Datagrids/Bulks/TagBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class TagBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'colour_picker',
        'parent_id',
        'private_choice',
        'auto_applied_choice',
        'hide_choice',
        'tags',
        'entity_image',
        'entity_header',
    ];

    protected array $booleans = [
        'colour',
        'is_auto_applied',
        'is_hidden',
    ];
}


================================================
FILE: app/Datagrids/Bulks/TimelineBulk.php
================================================
<?php

namespace App\Datagrids\Bulks;

class TimelineBulk extends Bulk
{
    protected array $fields = [
        'name',
        'type',
        'parent_id',
        'tags',
        'private_choice',
        'entity_image',
        'entity_header',
    ];
}


================================================
FILE: app/Datagrids/Datagrid.php
================================================
<?php

namespace App\Datagrids;

/**
 * Datagrids
 *
 * This abstract class controls parameters that are available to the datagrid bulk actions.
 * For example, to disable the bulk setting of permissions, set $bulkPermissions to false.
 * You can also add custom fields in the bulk delete modal by then testing on
 */
abstract class Datagrid
{
    /** The entities can have permissions applied to them */
    public bool $bulkPermissions = true;

    /** The entities can be copied to other campaigns */
    public bool $bulkCopyToCampaign = true;

    /** The entities can be transformed */
    public bool $bulkTransform = true;

    /** The entities can be printed */
    public bool $bulkPrint = true;

    /** The entities can have templates applied to them */
    public bool $bulkTemplate = true;

    /**
     * Determine if the datagrid has bulk permissions.
     */
    public function hasBulkPermissions(): bool
    {
        return $this->bulkPermissions;
    }

    /**
     * Determine if the datagrid has bulk copy to campaign.
     */
    public function hasBulkCopy(): bool
    {
        return $this->bulkCopyToCampaign;
    }

    /**
     * Determine if the datagrid has bulk transforming entities.
     */
    public function hasBulkTransform(): bool
    {
        return $this->bulkTransform;
    }

    /**
     * Determine if the datagrid has bulk transforming entities.
     */
    public function hasBulkTemplate(): bool
    {
        return $this->bulkTemplate;
    }

    /**
     * Determine if the datagrid has bulk entity printing.
     */
    public function hasBulkPrint(): bool
    {
        return $this->bulkPrint;
    }
}


================================================
FILE: app/Datagrids/Filters/AbilityFilter.php
================================================
<?php

namespace App\Datagrids\Filters;

class AbilityFilter extends DatagridFilter
{
    /**
     * Filters available for abilities
     */
    public function build()
    {
        $this
            ->add('name')
            ->add('type')
            ->parent(config('entities.ids.ability'))
            ->isPrivate()
            ->template()
            ->archived()
            ->hasImage()
            ->hasEntry()
            ->hasPosts()
            ->hasEntityFiles()
            ->hasAttributes()
            ->tags()
            ->attributes()
            ->connections();
    }
}


================================================
FILE: app/Datagrids/Filters/AttributeTemplateFilter.php
================================================
<?php

namespace App\Datagrids\Filters;

class AttributeTemplateFilter extends DatagridFilter
{
    /**
     * Filters available for attribute templates
     */
    public function build()
    {
        $this
            ->add('name')
            ->parent(config('entities.ids.attribute_template'))
            ->add('is_enabled')
            ->isPrivate()
            ->template()
            ->archived()
            ->hasAttributes()
            ->tags()
            ->attributes()
            ->connections();
    }
}


================================================
FILE: app/Datagrids/Filters/CalendarFilter.php
================================================
<?php

namespace App\Datagrids\Filters;

class CalendarFilter extends DatagridFilter
{
    /**
     * Filters available for calendars
     */
    public function build()
    {
        $this
            ->add('name')
            ->add('type')
            ->parent(config('entities.ids.calendar'))
            ->isPrivate()
            ->template()
            ->archived()
            ->hasImage()
            ->hasEntry()
            ->hasPosts()
            ->hasEntityFiles()
            ->hasAttributes()
            ->tags()
            ->attributes()
            ->connections();
    }
}


================================================
FILE: app/Datagrids/Filters/CharacterFilter.php
================================================
<?php

namespace App\Datagrids\Filters;

class CharacterFilter extends DatagridFilter
{
    /**
     * Filters available for characters
     */
    public function build()
    {
        $this
            ->add('name')
            ->add('title')
            ->families()
            ->locations()
            ->races()
            ->organisations()
            ->add('type')
            ->add('age')
            ->add('sex')
            ->add('pronouns')
            ->add('status_id')
            ->isPrivate()
            ->template()
            ->archived()
            ->hasImage()
            ->hasEntry()
            ->hasPosts()
            ->hasEntityFiles()
            ->hasAttributes()
            ->tags()
            ->attributes()
            ->connections();
    }
}


================================================
FILE: app/Datagrids/Filters/ConversationFilter.php
================================================
<?php

namespace App\Datagrids\Filters;

class ConversationFilter extends DatagridFilter
{
    /**
     * Filters available for conversations
     */
    public function build()
    {
        $this
            ->add('name')
            ->add('type')
//            ->add([
//                'field' => 'target',
//                'label' => __('conversations.fields.target'),
//                'valueKey' => 'conversations.targets.',
//                'type' => 'select',
//                'placeholder' =>  __('conversations.placeholders.target'),
//                'data' => __('conversations.targets')
//            ])
            ->add('is_closed')
            ->isPrivate()
            ->archived()
            ->tags();
    }
}


================================================
FILE: app/Datagrids/Filters/CreatureFilter.php
================================================
<?php

namespace App\Datagrids\Filters;

class CreatureFilter extends DatagridFilter
{
    /**
     * Filters available for creatures
     */
    public function build()
    {
        $this
            ->add('name')
            ->add('type')
            ->parent(config('entities.ids.creature'))
            ->locations()
            ->add('status_id')
            ->isPrivate()
            ->template()
            ->archived()
            ->hasImage()
            ->hasEntry()
            ->hasPosts()
            ->hasEntityFiles()
            ->hasAttributes()
            ->tags()
            ->attributes()
            ->connections();
    }
}


================================================
FILE: app/Datagrids/Filters/CustomEntityFilter.php
================================================
<?php

namespace App\Datagrids\Filters;

class CustomEntityFilter extends DatagridFilter
{
    /**
     * Filters available for races
     */
    public function build()
    {
        $this
            ->add('name')
            ->add('type')
            ->parent($this->entityType->id)
            ->location()
            ->isPrivate()
            ->template()
            ->archived()
            ->hasImage()
            ->hasEntry()
            ->hasPosts()
            ->hasEntityFiles()
            ->hasAttributes()
            ->tags()
            ->attributes()
            ->connections();
    }
}


================================================
FILE: app/Datagrids/Filters/DatagridFilter.php
================================================
<?php

namespace App\Datagrids\Filters;

use App\Facades\Module;
use App\Models\Character;
use App\Models\Entity;
use App\Models\Family;
use App\Models\Journal;
use App\Models\Location;
use App\Models\Organisation;
use App\Models\Race;
use App\Models\Tag;
use App\Models\User;
use App\Traits\CampaignAware;
use App\Traits\EntityTypeAware;
use Illuminate\Support\Facades\Auth;

/**
 * This abstract class sets up all the stuff needed for rendering filters on entity datagrids.
 * Each entity has a class that extends this class and in the constructor sets the fields available.
 * Filters that are re-used multiple times or have their own rendering logic are added as functions
 * directly on this class.
 */
abstract class DatagridFilter
{
    use CampaignAware;
    use EntityTypeAware;

    /** @var array Filters to be rendered */
    protected array $filters = [];

    public function build() {}

    /**
     * Get the filters
     */
    public function filters(): array
    {
        return $this->filters;
    }

    /**
     * @param  string|array  $name
     */
    protected function add($name): self
    {
        $this->filters[] = $name;

        return $this;
    }

    /**
     * Add the location filters
     */
    protected function location(): self
    {
        $name = Module::singular(config('entities.ids.location'));
        $placeholder = __('crud.placeholders.location');
        if (! empty($name)) {
            $placeholder = __('crud.placeholders.fallback', ['module' => $name]);
        }
        $this->filters[] = [
            'field' => 'location_id',
            'label' => Module::singular(config('entities.ids.location'), __('entities.location')),
            'type' => 'select2',
            'route' => route('search-list', [$this->campaign, config('entities.ids.location')]),
            'placeholder' => $placeholder,
            'model' => Location::class,
            'withChildren' => true,
        ];

        return $this;
    }

    /**
     * Add the locations filters
     */
    protected function locations(): self
    {
        $name = Module::plural(config('entities.ids.location'));
        $placeholder = __('crud.placeholders.search');
        if (! empty($name)) {
            $placeholder = __('crud.placeholders.fallback', ['module' => $name]);
        }
        $this->filters[] = [
            'field' => 'locations',
            'label' => Module::plural(config('entities.ids.location'), __('entities.locations')),
            'type' => 'selectMultiple',
            'route' => route('search-list', [$this->campaign, config('entities.ids.location')]),
            'placeholder' => $placeholder,
            'model' => Location::class,
            'multiple' => true,
            'withChildren' => true,
        ];

        return $this;
    }

    /**
     * Add the races filters
     */
    protected function races(): self
    {
        $name = Module::plural(config('entities.ids.race'));
        $placeholder = __('crud.placeholders.search');
        if (! empty($name)) {
            $placeholder = __('crud.placeholders.fallback', ['module' => $name]);
        }
        $this->filters[] = [
            'field' => 'races',
            'label' => Module::plural(config('entities.ids.race'), __('entities.races')),
            'type' => 'selectMultiple',
            'route' => route('search-list', [$this->campaign, config('entities.ids.race')]),
            'placeholder' => $placeholder,
            'model' => Race::class,
            'multiple' => true,
            'withChildren' => true,
        ];

        return $this;
    }

    /**
     * Add the organisations filters
     */
    protected function organisations(): self
    {
        $name = Module::plural(config('entities.ids.organisation'));
        $placeholder = __('crud.placeholders.search');
        if (! empty($name)) {
            $placeholder = __('crud.placeholders.fallback', ['module' => $name]);
        }
        $this->filters[] = [
            'field' => 'organisations',
            'label' => Module::plural(config('entities.ids.organisation'), __('entities.organisations')),
            'type' => 'selectMultiple',
            'route' => route('search-list', [$this->campaign, config('entities.ids.organisation')]),
            'placeholder' => $placeholder,
            'model' => Organisation::class,
            'multiple' => true,
            'withChildren' => true,
        ];

        return $this;
    }

    /**
     * Add the families filters
     */
    protected function families(): self
    {
        $name = Module::plural(config('entities.ids.family'));
        $placeholder = __('crud.placeholders.search');
        if (! empty($name)) {
            $placeholder = __('crud.placeholders.fallback', ['module' => $name]);
        }
        $this->filters[] = [
            'field' => 'families',
            'label' => Module::plural(config('entities.ids.family'), __('entities.families')),
            'type' => 'selectMultiple',
            'route' => route('search-list', [$this->campaign, config('entities.ids.family')]),
            'placeholder' => $placeholder,
            'model' => Family::class,
            'multiple' => true,
            'withChildren' => true,
        ];

        return $this;
    }

    /**
     * Add the character filters
     */
    protected function character(string $field = 'character_id'): self
    {
        $name = Module::singular(config('entities.ids.character'));
        $placeholder = __('crud.placeholders.search');
        if (! empty($name)) {
            $placeholder = __('crud.placeholders.fallback', ['module' => $name]);
        }
        $this->filters[] = [
            'field' => $field,
            'label' => Module::singular(config('entities.ids.character'), __('entities.character')),
            'type' => 'select2',
            'route' => route('search-list', [$this->campaign, config('entities.ids.character')]),
            'placeholder' => $placeholder,
            'model' => Character::class,
        ];

        return $this;
    }

    /**
     * Add the character filters
     */
    protected function journal(): self
    {
        $name = Module::singular(config('entities.ids.journal'));
        $placeholder = __('crud.placeholders.journal');
        if (! empty($name)) {
            $placeholder = __('crud.placeholders.fallback', ['module' => $name]);
        }
        $this->filters[] = [
            'field' => 'journal_id',
            'label' => Module::singular(config('entities.ids.journal'), __('entities.journal')),
            'type' => 'select2',
            'route' => route('search-list', [$this->campaign, config('entities.ids.journal')]),
            'placeholder' => $placeholder,
            'model' => Journal::class,
        ];

        return $this;
    }

    /**
     * Add the tags filters
     */
    protected function tags(): self
    {
        $name = Module::singular(config('entities.ids.tag'));
        $placeholder = __('crud.placeholders.tag');
        if (! empty($name)) {
            $placeholder = __('crud.placeholders.fallback', ['module' => $name]);
        }
        $this->filters[] = [
            'field' => 'tags',
            'label' => Module::plural(config('entities.ids.tag'), __('entities.tags')),
            'type' => 'tag',
            'route' => route('search-list', [$this->campaign, config('entities.ids.tag')]),
            'placeholder' => $placeholder,
            'model' => Tag::class,
        ];

        return $this;
    }

    /**
     * Add the is_private
     */
    protected function isPrivate(): self
    {
        // Add the is_private filter only for admins.
        if (Auth::check() && Auth::user()->isAdmin()) {
            $this->filters[] = 'is_private';
        }

        return $this;
    }

    /**
     * Add the entity has an image
     */
    protected function hasImage(): self
    {
        $this->filters[] = 'has_image';

        return $this;
    }

    /**
     * Add the entity parent filter as a select2 for the given entity type
     */
    protected function parent(int $entityTypeId): self
    {
        $this->filters[] = [
            'field' => 'parent_id',
            'label' => __('crud.fields.parent'),
            'type' => 'select2',
            'route' => route('search-list', [$this->campaign, $entityTypeId, 'entity' => true]),
            'placeholder' => __('crud.placeholders.search'),
            'model' => Entity::class,
        ];

        return $this;
    }

    /**
     * Add the entity has posts
     */
    protected function hasPosts(): self
    {
        $this->filters[] = 'has_posts';

        return $this;
    }

    /**
     * Add the entity has entry
     */
    protected function hasEntry(): self
    {
        $this->filters[] = 'has_entry';

        return $this;
    }

    /**
     * Add the entity has attributes
     */
    protected function hasAttributes(): self
    {
        $this->filters[] = 'has_attributes';

        return $this;
    }

    /**
     * Add the has image
     */
    protected function hasEntityFiles(): self
    {
        $this->filters[] = 'has_entity_files';

        return $this;
    }

    /**
     * Add the (real) date filter
     */
    protected function date(): self
    {
        $this->filters[] = 'date';

        return $this;
    }

    /**
     * Add the attributes selector
     */
    protected function attributes(): self
    {
        $this->filters[] = 'attributes';

        return $this;
    }

    /**
     * Add the connection selector
     */
    protected function connections(): self
    {
        $this->filters[] = 'connections';

        return $this;
    }

    /**
     * Add the created by selector
     */
    protected function createdBy(): self
    {
        $this->filters[] = [
            'field' => 'created_by',
            'label' => __('crud.fields.created_by'),
            'type' => 'select2',
            'route' => route('find.members', [$this->campaign]),
            'placeholder' => __('crud.placeholders.user'),
            'model' => User::class,
        ];

        return $this;
    }

    /**
     * Add the updated by selector
     */
    protected function updatedBy(): self
    {
        $this->filters[] = [
            'field' => 'updated_by',
            'label' => __('crud.fields.updated_by'),
            'type' => 'select2',
            'route' => route('find.members', [$this->campaign]),
            'placeholder' => __('crud.placeholders.user'),
            'model' => User::class,
        ];

        return $this;
    }

    /**
     * Add the date range filter
     */
    protected function dateRange(): self
    {
        $this->filters[] = 'date_range';

        return $this;
    }

    /**
     * Add the is template filter
     */
    protected function template(): self
    {
        $this->filters[] = 'template';

        return $this;
    }

    /**
     * Add the is archived filter
     */
    protected function archived(): self
    {
        $this->filters[] = 'archived';

        return $this;
    }
}


================================================
FILE: app/Datagrids/Filters/DiceRollFilter.php
================================================
<?php

namespace App\Datagrids\Filters;

class DiceRollFilter extends DatagridFilter
{
    /**
     * Filters available for dice rolls
     */
    public function build()
    {
        $this
            ->add('name')
            ->character()
            ->isPrivate()
            ->archived()
            ->tags();
    }
}


================================================
FILE: app/Datagrids/Filters/EventFilter.php
================================================
<?php

namespace App\Data
Download .txt
Showing preview only (333K chars total). Download the full file or copy to clipboard to get everything.
gitextract_tqacef9c/

├── .claude/
│   ├── commands/
│   │   └── translate.md
│   └── skills/
│       ├── livewire-development/
│       │   └── SKILL.md
│       ├── pest-testing/
│       │   └── SKILL.md
│       └── tailwindcss-development/
│           └── SKILL.md
├── .dockerignore
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   └── workflows/
│       ├── claude.yml
│       ├── lint.yml
│       └── phpstan.yml
├── .gitignore
├── .jshintrc
├── .mariadb/
│   ├── 10-create-logs-database.sh
│   └── conf.d/
│       └── kanka.cnf
├── .mcp.json
├── .nginx/
│   └── thumbor.conf
├── .phpactor.json
├── CLAUDE.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── app/
│   ├── Auth/
│   │   └── PassportTokenGuard.php
│   ├── Console/
│   │   ├── Commands/
│   │   │   ├── Campaigns/
│   │   │   │   ├── CleanupCommand.php
│   │   │   │   ├── DeleteCommand.php
│   │   │   │   ├── DummyEntities.php
│   │   │   │   ├── ExportCommand.php
│   │   │   │   ├── ImportCommand.php
│   │   │   │   ├── PermissionsSyncCommand.php
│   │   │   │   ├── PopulateCommand.php
│   │   │   │   └── VisibileEntityCountCommand.php
│   │   │   ├── Cleanup/
│   │   │   │   ├── AnonymiseUserLogs.php
│   │   │   │   ├── CleanupEntityLogs.php
│   │   │   │   ├── CleanupImages.php
│   │   │   │   ├── CleanupTrashed.php
│   │   │   │   ├── CleanupTrashedCampaigns.php
│   │   │   │   └── CleanupUsers.php
│   │   │   ├── Entities/
│   │   │   │   ├── CalendarAdvancer.php
│   │   │   │   ├── ChildlessEntities.php
│   │   │   │   └── MapChunk.php
│   │   │   ├── InstallCommand.php
│   │   │   ├── Metrics/
│   │   │   │   └── MetricsGa4.php
│   │   │   ├── Migrations/
│   │   │   │   ├── BookmarkEntityType.php
│   │   │   │   ├── Cdn.php
│   │   │   │   ├── MigrateEntityStatuses.php
│   │   │   │   ├── MigrateStatusFilters.php
│   │   │   │   ├── MigrateSubMentions.php
│   │   │   │   └── NewsletterSubCommand.php
│   │   │   ├── Report/
│   │   │   │   ├── Accounts.php
│   │   │   │   ├── Churn.php
│   │   │   │   ├── Onboarding.php
│   │   │   │   └── Weekly.php
│   │   │   ├── SetupMeilisearch.php
│   │   │   ├── SubscriptionEndPaypalFix.php
│   │   │   ├── Subscriptions/
│   │   │   │   ├── EndFreeTrials.php
│   │   │   │   ├── EndSubscriptions.php
│   │   │   │   ├── ExpiringCardCommand.php
│   │   │   │   ├── PaypalExpiringCommand.php
│   │   │   │   └── SubCleanupCommand.php
│   │   │   ├── Tests/
│   │   │   │   ├── Mailerlite.php
│   │   │   │   ├── SendNotification.php
│   │   │   │   ├── SignImageCommand.php
│   │   │   │   ├── TestEmail.php
│   │   │   │   └── TestWhiteboards.php
│   │   │   ├── Translations/
│   │   │   │   └── Missing.php
│   │   │   ├── Users/
│   │   │   │   ├── OfferFreeTrial.php
│   │   │   │   ├── RegenerateDiscordToken.php
│   │   │   │   ├── ResetUserPassword.php
│   │   │   │   └── SyncUserRoles.php
│   │   │   ├── VerifyParentIds.php
│   │   │   └── WordCount.php
│   │   └── Kernel.php
│   ├── Datagrids/
│   │   ├── Actions/
│   │   │   ├── BookmarkDatagridActions.php
│   │   │   ├── DatagridActions.php
│   │   │   ├── DefaultDatagridActions.php
│   │   │   ├── DeprecatedDatagridActions.php
│   │   │   ├── HistoryActions.php
│   │   │   ├── NoDatagridActions.php
│   │   │   └── RelationDatagridActions.php
│   │   ├── Bulks/
│   │   │   ├── AbilityBulk.php
│   │   │   ├── AttributeTemplateBulk.php
│   │   │   ├── BookmarkBulk.php
│   │   │   ├── Bulk.php
│   │   │   ├── CalendarBulk.php
│   │   │   ├── CharacterBulk.php
│   │   │   ├── ConversationBulk.php
│   │   │   ├── CreatureBulk.php
│   │   │   ├── DefaultBulk.php
│   │   │   ├── DiceRollBulk.php
│   │   │   ├── EntityBulk.php
│   │   │   ├── EventBulk.php
│   │   │   ├── FamilyBulk.php
│   │   │   ├── ItemBulk.php
│   │   │   ├── JournalBulk.php
│   │   │   ├── LocationBulk.php
│   │   │   ├── MapBulk.php
│   │   │   ├── NoteBulk.php
│   │   │   ├── OrganisationBulk.php
│   │   │   ├── QuestBulk.php
│   │   │   ├── RaceBulk.php
│   │   │   ├── RelationBulk.php
│   │   │   ├── TagBulk.php
│   │   │   └── TimelineBulk.php
│   │   ├── Datagrid.php
│   │   ├── Filters/
│   │   │   ├── AbilityFilter.php
│   │   │   ├── AttributeTemplateFilter.php
│   │   │   ├── CalendarFilter.php
│   │   │   ├── CharacterFilter.php
│   │   │   ├── ConversationFilter.php
│   │   │   ├── CreatureFilter.php
│   │   │   ├── CustomEntityFilter.php
│   │   │   ├── DatagridFilter.php
│   │   │   ├── DiceRollFilter.php
│   │   │   ├── EventFilter.php
│   │   │   ├── FamilyFilter.php
│   │   │   ├── HistoryFilter.php
│   │   │   ├── ItemFilter.php
│   │   │   ├── JournalFilter.php
│   │   │   ├── LocationFilter.php
│   │   │   ├── MapFilter.php
│   │   │   ├── NoteFilter.php
│   │   │   ├── OrganisationFilter.php
│   │   │   ├── QuestFilter.php
│   │   │   ├── RaceFilter.php
│   │   │   ├── RelationFilter.php
│   │   │   ├── TagFilter.php
│   │   │   ├── TimelineFilter.php
│   │   │   └── WhiteboardFilter.php
│   │   └── Sorters/
│   │       ├── DatagridSorter.php
│   │       └── QuestElementSorter.php
│   ├── Definitions/
│   │   ├── CustomCssDefinitions.php
│   │   └── CustomDefinitions.php
│   ├── Enums/
│   │   ├── AppReleaseCategory.php
│   │   ├── ApplicationStatus.php
│   │   ├── AttributeType.php
│   │   ├── CampaignExportStatus.php
│   │   ├── CampaignFilterType.php
│   │   ├── CampaignFlags.php
│   │   ├── CampaignImportStatus.php
│   │   ├── CampaignVisibility.php
│   │   ├── CharacterStatus.php
│   │   ├── ConversationTarget.php
│   │   ├── Descendants.php
│   │   ├── EntityAssetType.php
│   │   ├── EntityEventTypes.php
│   │   ├── FeatureStatus.php
│   │   ├── FilterOption.php
│   │   ├── MapMarkerShape.php
│   │   ├── OrganisationMemberPin.php
│   │   ├── OrganisationMemberStatus.php
│   │   ├── Permission.php
│   │   ├── PricingPeriod.php
│   │   ├── QuestStatus.php
│   │   ├── ReferralEventType.php
│   │   ├── SpotlightContentStatus.php
│   │   ├── SpotlightStatus.php
│   │   ├── Tier.php
│   │   ├── UserAction.php
│   │   ├── UserFlags.php
│   │   ├── Visibility.php
│   │   ├── WebhookAction.php
│   │   └── Widget.php
│   ├── Events/
│   │   ├── AdminInviteCreated.php
│   │   ├── Campaigns/
│   │   │   ├── Applications/
│   │   │   │   ├── Accepted.php
│   │   │   │   └── Rejected.php
│   │   │   ├── Dashboards/
│   │   │   │   ├── DashboardCreated.php
│   │   │   │   ├── DashboardDeleted.php
│   │   │   │   └── DashboardUpdated.php
│   │   │   ├── Deleted.php
│   │   │   ├── EntityTypes/
│   │   │   │   ├── EntityTypeCreated.php
│   │   │   │   ├── EntityTypeDeleted.php
│   │   │   │   ├── EntityTypeToggled.php
│   │   │   │   └── EntityTypeUpdated.php
│   │   │   ├── Exports/
│   │   │   │   └── ExportCreated.php
│   │   │   ├── Followers/
│   │   │   │   ├── FollowerCreated.php
│   │   │   │   └── FollowerRemoved.php
│   │   │   ├── Invites/
│   │   │   │   ├── InviteCreated.php
│   │   │   │   └── InviteDeleted.php
│   │   │   ├── Members/
│   │   │   │   ├── RoleUserAdded.php
│   │   │   │   ├── RoleUserRemoved.php
│   │   │   │   ├── Switched.php
│   │   │   │   ├── UserJoined.php
│   │   │   │   └── UserLeft.php
│   │   │   ├── Plugins/
│   │   │   │   ├── PluginDeleted.php
│   │   │   │   ├── PluginImported.php
│   │   │   │   └── PluginUpdated.php
│   │   │   ├── Roles/
│   │   │   │   ├── RoleCreated.php
│   │   │   │   ├── RoleDeleted.php
│   │   │   │   └── RoleUpdated.php
│   │   │   ├── Saved.php
│   │   │   ├── SettingsSaved.php
│   │   │   ├── Sidebar/
│   │   │   │   ├── SidebarReset.php
│   │   │   │   └── SidebarSaved.php
│   │   │   ├── Styles/
│   │   │   │   ├── StyleCreated.php
│   │   │   │   ├── StyleDeleted.php
│   │   │   │   └── StyleUpdated.php
│   │   │   ├── Thumbnails/
│   │   │   │   ├── ThumbnailCreated.php
│   │   │   │   ├── ThumbnailDeleted.php
│   │   │   │   └── ThumbnailsDeleted.php
│   │   │   ├── Updated.php
│   │   │   └── Webhooks/
│   │   │       ├── WebhookCreated.php
│   │   │       ├── WebhookDeleted.php
│   │   │       ├── WebhookTested.php
│   │   │       └── WebhookUpdated.php
│   │   ├── Entities/
│   │   │   └── EntityRestored.php
│   │   ├── FeatureCreated.php
│   │   ├── Posts/
│   │   │   ├── PostCreated.php
│   │   │   ├── PostDeleted.php
│   │   │   ├── PostRestored.php
│   │   │   └── PostUpdated.php
│   │   ├── SpotlightSubmitted.php
│   │   ├── Subscriptions/
│   │   │   ├── AutoRemove.php
│   │   │   ├── Boost.php
│   │   │   ├── Disable.php
│   │   │   ├── Premium.php
│   │   │   ├── SuperBoost.php
│   │   │   └── Upgrade.php
│   │   ├── Users/
│   │   │   └── EmailChanged.php
│   │   ├── WhiteboardUpdated.php
│   │   └── Whiteboards/
│   │       └── Updated.php
│   ├── Exceptions/
│   │   ├── Campaign/
│   │   │   ├── AlreadyBoostedException.php
│   │   │   ├── ExhaustedBoostsException.php
│   │   │   ├── ExhaustedSuperboostsException.php
│   │   │   └── ImportException.php
│   │   ├── Handler.php
│   │   ├── OpenAiException.php
│   │   ├── RequireLoginException.php
│   │   └── TranslatableException.php
│   ├── Facades/
│   │   ├── AdCache.php
│   │   ├── ApiLog.php
│   │   ├── Attributes.php
│   │   ├── Avatar.php
│   │   ├── BookmarkCache.php
│   │   ├── Breadcrumb.php
│   │   ├── CampaignCache.php
│   │   ├── CampaignLocalization.php
│   │   ├── CharacterCache.php
│   │   ├── Dashboard.php
│   │   ├── DataLayer.php
│   │   ├── Datagrid.php
│   │   ├── Domain.php
│   │   ├── EntityAssetCache.php
│   │   ├── EntityCache.php
│   │   ├── EntityLogger.php
│   │   ├── EntityPermission.php
│   │   ├── FormCopy.php
│   │   ├── Identity.php
│   │   ├── Images.php
│   │   ├── Img.php
│   │   ├── ImportIdMapper.php
│   │   ├── Limit.php
│   │   ├── MapMarkerCache.php
│   │   ├── MarketplaceCache.php
│   │   ├── Mentions.php
│   │   ├── Module.php
│   │   ├── Permissions.php
│   │   ├── QuestCache.php
│   │   ├── ReleaseCache.php
│   │   ├── RolePermission.php
│   │   ├── SingleUserCache.php
│   │   ├── TimelineElementCache.php
│   │   ├── UserCache.php
│   │   └── UserPermission.php
│   ├── Http/
│   │   ├── Controllers/
│   │   │   ├── Abilities/
│   │   │   │   ├── AbilityController.php
│   │   │   │   └── EntityController.php
│   │   │   ├── Account/
│   │   │   │   ├── Billing/
│   │   │   │   │   └── InformationController.php
│   │   │   │   ├── DeleteController.php
│   │   │   │   ├── EmailController.php
│   │   │   │   ├── PasswordController.php
│   │   │   │   └── SocialController.php
│   │   │   ├── Api/
│   │   │   │   ├── Public/
│   │   │   │   │   ├── CampaignController.php
│   │   │   │   │   ├── HallOfFameController.php
│   │   │   │   │   ├── KbController.php
│   │   │   │   │   ├── ShowcaseController.php
│   │   │   │   │   └── VoteController.php
│   │   │   │   └── v1/
│   │   │   │       ├── AbilityApiController.php
│   │   │   │       ├── ApiController.php
│   │   │   │       ├── ApplicationApiController.php
│   │   │   │       ├── AttributeTemplateApiController.php
│   │   │   │       ├── BookmarkApiController.php
│   │   │   │       ├── CalendarApiController.php
│   │   │   │       ├── CalendarEventApiController.php
│   │   │   │       ├── CalendarWeatherApiController.php
│   │   │   │       ├── Calendars/
│   │   │   │       │   └── AdvancerApiController.php
│   │   │   │       ├── CampaignApiController.php
│   │   │   │       ├── CampaignDashboardWidgetApiController.php
│   │   │   │       ├── CampaignImageApiController.php
│   │   │   │       ├── CampaignRoleApiController.php
│   │   │   │       ├── CampaignStyleApiController.php
│   │   │   │       ├── Campaigns/
│   │   │   │       │   ├── CategoryStatusController.php
│   │   │   │       │   ├── EntityTypeApiController.php
│   │   │   │       │   └── UserApiController.php
│   │   │   │       ├── CharacterApiController.php
│   │   │   │       ├── ConversationApiController.php
│   │   │   │       ├── ConversationMessageApiController.php
│   │   │   │       ├── ConversationParticipantApiController.php
│   │   │   │       ├── CreatureApiController.php
│   │   │   │       ├── DefaultThumbnailApiController.php
│   │   │   │       ├── DiceRollApiController.php
│   │   │   │       ├── Entities/
│   │   │   │       │   ├── Attributes/
│   │   │   │       │   │   ├── PatchController.php
│   │   │   │       │   │   └── PutController.php
│   │   │   │       │   └── ReminderApiController.php
│   │   │   │       ├── EntityAbilityApiController.php
│   │   │   │       ├── EntityApiController.php
│   │   │   │       ├── EntityArchiveApiController.php
│   │   │   │       ├── EntityAssetApiController.php
│   │   │   │       ├── EntityAttributeApiController.php
│   │   │   │       ├── EntityImageApiController.php
│   │   │   │       ├── EntityInventoryApiController.php
│   │   │   │       ├── EntityMentionApiController.php
│   │   │   │       ├── EntityMoveApiController.php
│   │   │   │       ├── EntityPermissionApiController.php
│   │   │   │       ├── EntityRecoveryApiController.php
│   │   │   │       ├── EntityRelationApiController.php
│   │   │   │       ├── EntityTagApiController.php
│   │   │   │       ├── EntityTemplateApiController.php
│   │   │   │       ├── EntityTransformApiController.php
│   │   │   │       ├── EntityTypeApiController.php
│   │   │   │       ├── EventApiController.php
│   │   │   │       ├── FamilyApiController.php
│   │   │   │       ├── FamilyTreeApiController.php
│   │   │   │       ├── FilterApiController.php
│   │   │   │       ├── FullTextSearchApiController.php
│   │   │   │       ├── HealthController.php
│   │   │   │       ├── ItemApiController.php
│   │   │   │       ├── JournalApiController.php
│   │   │   │       ├── LocationApiController.php
│   │   │   │       ├── MapApiController.php
│   │   │   │       ├── MapGroupApiController.php
│   │   │   │       ├── MapLayerApiController.php
│   │   │   │       ├── MapMarkerApiController.php
│   │   │   │       ├── MiscApiController.php
│   │   │   │       ├── NoteApiController.php
│   │   │   │       ├── OrganisationApiController.php
│   │   │   │       ├── OrganisationMemberApiController.php
│   │   │   │       ├── PostApiController.php
│   │   │   │       ├── PostLayoutApiController.php
│   │   │   │       ├── PostRecoveryApiController.php
│   │   │   │       ├── ProfileApiController.php
│   │   │   │       ├── QuestApiController.php
│   │   │   │       ├── QuestElementApiController.php
│   │   │   │       ├── RaceApiController.php
│   │   │   │       ├── RecentEntityApiController.php
│   │   │   │       ├── RelationApiController.php
│   │   │   │       ├── ReminderApiController.php
│   │   │   │       ├── SearchApiController.php
│   │   │   │       ├── TagApiController.php
│   │   │   │       ├── TimelineApiController.php
│   │   │   │       ├── TimelineElementApiController.php
│   │   │   │       ├── TimelineEraApiController.php
│   │   │   │       └── VisibilityController.php
│   │   │   ├── Attributes/
│   │   │   │   └── ApiController.php
│   │   │   ├── Auth/
│   │   │   │   ├── AuthController.php
│   │   │   │   ├── ConfirmPasswordController.php
│   │   │   │   ├── ForgotPasswordController.php
│   │   │   │   ├── LoginController.php
│   │   │   │   ├── RegisterController.php
│   │   │   │   ├── ResetPasswordController.php
│   │   │   │   └── VerificationController.php
│   │   │   ├── Billing/
│   │   │   │   ├── HistoryController.php
│   │   │   │   └── PaymentMethodController.php
│   │   │   ├── Bookmarks/
│   │   │   │   ├── RandomController.php
│   │   │   │   └── ReorderController.php
│   │   │   ├── Bragi/
│   │   │   │   └── BragiController.php
│   │   │   ├── BulkController.php
│   │   │   ├── Bulks/
│   │   │   │   ├── BatchController.php
│   │   │   │   ├── CopyController.php
│   │   │   │   ├── DeleteController.php
│   │   │   │   ├── DeleteRelationController.php
│   │   │   │   ├── PermissionController.php
│   │   │   │   ├── PrintController.php
│   │   │   │   ├── TemplateController.php
│   │   │   │   └── TransformController.php
│   │   │   ├── Calendar/
│   │   │   │   └── CalendarWeatherController.php
│   │   │   ├── Calendars/
│   │   │   │   ├── Bulks/
│   │   │   │   │   └── EntityEventController.php
│   │   │   │   └── EventController.php
│   │   │   ├── Campaign/
│   │   │   │   ├── AchievementController.php
│   │   │   │   ├── ApplicationController.php
│   │   │   │   ├── ApplicationDashboardController.php
│   │   │   │   ├── ApplicationSetupController.php
│   │   │   │   ├── ApplyController.php
│   │   │   │   ├── CreateController.php
│   │   │   │   ├── CssController.php
│   │   │   │   ├── DashboardController.php
│   │   │   │   ├── DashboardHeaderController.php
│   │   │   │   ├── DashboardWidgetController.php
│   │   │   │   ├── DefaultImageController.php
│   │   │   │   ├── DefaultsController.php
│   │   │   │   ├── DeleteController.php
│   │   │   │   ├── EntityTypeController.php
│   │   │   │   ├── ExportController.php
│   │   │   │   ├── FollowController.php
│   │   │   │   ├── ImageController.php
│   │   │   │   ├── ImportController.php
│   │   │   │   ├── InviteController.php
│   │   │   │   ├── LeaveController.php
│   │   │   │   ├── LogController.php
│   │   │   │   ├── MemberController.php
│   │   │   │   ├── Members/
│   │   │   │   │   └── RoleController.php
│   │   │   │   ├── ModuleController.php
│   │   │   │   ├── PluginController.php
│   │   │   │   ├── Plugins/
│   │   │   │   │   ├── BulkController.php
│   │   │   │   │   ├── CssController.php
│   │   │   │   │   ├── ImportController.php
│   │   │   │   │   ├── ToggleController.php
│   │   │   │   │   └── UpdateController.php
│   │   │   │   ├── RecoveryController.php
│   │   │   │   ├── RoleController.php
│   │   │   │   ├── RoleUserController.php
│   │   │   │   ├── ShareController.php
│   │   │   │   ├── SidebarController.php
│   │   │   │   ├── StatController.php
│   │   │   │   ├── StyleController.php
│   │   │   │   ├── ThemeBuilderController.php
│   │   │   │   ├── UserController.php
│   │   │   │   ├── VanityController.php
│   │   │   │   ├── VisibilityController.php
│   │   │   │   ├── WebController.php
│   │   │   │   └── WebhookController.php
│   │   │   ├── CampaignBoostController.php
│   │   │   ├── Characters/
│   │   │   │   ├── Families/
│   │   │   │   │   └── ManagementController.php
│   │   │   │   ├── MemberController.php
│   │   │   │   ├── MembershipController.php
│   │   │   │   └── Races/
│   │   │   │       └── ManagementController.php
│   │   │   ├── ConfirmController.php
│   │   │   ├── Controller.php
│   │   │   ├── ConversationMessageController.php
│   │   │   ├── ConversationParticipantController.php
│   │   │   ├── CookieConsentController.php
│   │   │   ├── Creatures/
│   │   │   │   └── CreatureController.php
│   │   │   ├── Crud/
│   │   │   │   ├── AbilityController.php
│   │   │   │   ├── AttributeTemplateController.php
│   │   │   │   ├── BookmarkController.php
│   │   │   │   ├── CalendarController.php
│   │   │   │   ├── CampaignController.php
│   │   │   │   ├── CharacterController.php
│   │   │   │   ├── ConversationController.php
│   │   │   │   ├── CreatureController.php
│   │   │   │   ├── DiceRollController.php
│   │   │   │   ├── EventController.php
│   │   │   │   ├── FamilyController.php
│   │   │   │   ├── ItemController.php
│   │   │   │   ├── JournalController.php
│   │   │   │   ├── LocationController.php
│   │   │   │   ├── MapController.php
│   │   │   │   ├── NoteController.php
│   │   │   │   ├── OrganisationController.php
│   │   │   │   ├── QuestController.php
│   │   │   │   ├── RaceController.php
│   │   │   │   ├── TagController.php
│   │   │   │   └── TimelineController.php
│   │   │   ├── CrudController.php
│   │   │   ├── DashboardController.php
│   │   │   ├── Dashboards/
│   │   │   │   ├── GettingStartedController.php
│   │   │   │   └── SetupController.php
│   │   │   ├── Datagrid2/
│   │   │   │   └── BulkControllerTrait.php
│   │   │   ├── Datagrids/
│   │   │   │   └── SubscriptionController.php
│   │   │   ├── DiceRolls/
│   │   │   │   └── ResultsController.php
│   │   │   ├── EditingController.php
│   │   │   ├── Entities/
│   │   │   │   ├── Apis/
│   │   │   │   │   └── DocumentController.php
│   │   │   │   ├── ChildrenController.php
│   │   │   │   ├── CreateController.php
│   │   │   │   ├── DeleteController.php
│   │   │   │   ├── EditController.php
│   │   │   │   ├── IndexController.php
│   │   │   │   └── ListingPreferenceController.php
│   │   │   ├── Entity/
│   │   │   │   ├── Abilities/
│   │   │   │   │   ├── ApiController.php
│   │   │   │   │   ├── ChargeController.php
│   │   │   │   │   ├── ImportController.php
│   │   │   │   │   └── ReorderController.php
│   │   │   │   ├── AbilityController.php
│   │   │   │   ├── ArchiveController.php
│   │   │   │   ├── AssetController.php
│   │   │   │   ├── AttributeController.php
│   │   │   │   ├── AttributeTemplateController.php
│   │   │   │   ├── Attributes/
│   │   │   │   │   ├── ApiController.php
│   │   │   │   │   ├── LiveApiController.php
│   │   │   │   │   └── LiveController.php
│   │   │   │   ├── Connections/
│   │   │   │   │   ├── MapController.php
│   │   │   │   │   └── TableController.php
│   │   │   │   ├── CopyInventoryController.php
│   │   │   │   ├── EntryController.php
│   │   │   │   ├── ExportController.php
│   │   │   │   ├── GenerateInventoryController.php
│   │   │   │   ├── ImageController.php
│   │   │   │   ├── Inventory/
│   │   │   │   │   └── DetailController.php
│   │   │   │   ├── InventoryController.php
│   │   │   │   ├── InventorySectionController.php
│   │   │   │   ├── LogController.php
│   │   │   │   ├── MentionController.php
│   │   │   │   ├── MoveController.php
│   │   │   │   ├── PermissionController.php
│   │   │   │   ├── PostController.php
│   │   │   │   ├── Posts/
│   │   │   │   │   ├── LayoutController.php
│   │   │   │   │   ├── LogController.php
│   │   │   │   │   ├── MoveController.php
│   │   │   │   │   ├── TemplateController.php
│   │   │   │   │   └── VisibilityController.php
│   │   │   │   ├── PreviewController.php
│   │   │   │   ├── PrivacyController.php
│   │   │   │   ├── ProfileController.php
│   │   │   │   ├── RelationController.php
│   │   │   │   ├── ReminderController.php
│   │   │   │   ├── ShareController.php
│   │   │   │   ├── ShowController.php
│   │   │   │   ├── StoryController.php
│   │   │   │   ├── TagController.php
│   │   │   │   ├── TemplateController.php
│   │   │   │   ├── TooltipController.php
│   │   │   │   └── TransformController.php
│   │   │   ├── EntityCreatorController.php
│   │   │   ├── Events/
│   │   │   │   └── EventController.php
│   │   │   ├── Facebook/
│   │   │   │   └── DeletionController.php
│   │   │   ├── Families/
│   │   │   │   ├── FamilyController.php
│   │   │   │   ├── MemberController.php
│   │   │   │   ├── TreeController.php
│   │   │   │   └── Trees/
│   │   │   │       └── ApiController.php
│   │   │   ├── Filters/
│   │   │   │   ├── FormController.php
│   │   │   │   └── SaveController.php
│   │   │   ├── Front/
│   │   │   │   └── HelperController.php
│   │   │   ├── FrontendPrepareController.php
│   │   │   ├── Gallery/
│   │   │   │   ├── BrowseController.php
│   │   │   │   ├── CreateController.php
│   │   │   │   ├── DeleteController.php
│   │   │   │   ├── ImageController.php
│   │   │   │   ├── SearchController.php
│   │   │   │   ├── SetupController.php
│   │   │   │   ├── ShowController.php
│   │   │   │   ├── TiptapController.php
│   │   │   │   ├── UpdateController.php
│   │   │   │   ├── UploadController.php
│   │   │   │   └── VisibilityController.php
│   │   │   ├── GalleryController.php
│   │   │   ├── HealthController.php
│   │   │   ├── HistoryController.php
│   │   │   ├── HomeController.php
│   │   │   ├── InvitationController.php
│   │   │   ├── Items/
│   │   │   │   ├── EntityController.php
│   │   │   │   └── ItemController.php
│   │   │   ├── Journals/
│   │   │   │   └── JournalController.php
│   │   │   ├── Layout/
│   │   │   │   └── NavigationController.php
│   │   │   ├── Locations/
│   │   │   │   ├── CharacterController.php
│   │   │   │   ├── EventController.php
│   │   │   │   ├── LocationController.php
│   │   │   │   └── QuestController.php
│   │   │   ├── Maps/
│   │   │   │   ├── Bulks/
│   │   │   │   │   ├── GroupController.php
│   │   │   │   │   ├── LayerController.php
│   │   │   │   │   └── MarkerController.php
│   │   │   │   ├── ExploreController.php
│   │   │   │   ├── GroupController.php
│   │   │   │   ├── LayerController.php
│   │   │   │   ├── Layers/
│   │   │   │   │   └── MigrateController.php
│   │   │   │   ├── MapController.php
│   │   │   │   ├── MarkerController.php
│   │   │   │   ├── Markers/
│   │   │   │   │   ├── DetailController.php
│   │   │   │   │   └── MoveController.php
│   │   │   │   ├── PreviewController.php
│   │   │   │   └── Reorders/
│   │   │   │       ├── GroupController.php
│   │   │   │       └── LayerController.php
│   │   │   ├── Notes/
│   │   │   │   └── NoteController.php
│   │   │   ├── NotificationController.php
│   │   │   ├── Onboarding/
│   │   │   │   └── InitialController.php
│   │   │   ├── Organisation/
│   │   │   │   ├── MemberController.php
│   │   │   │   └── OrganisationController.php
│   │   │   ├── Passport/
│   │   │   │   └── ClientController.php
│   │   │   ├── PasswordSecurityController.php
│   │   │   ├── PayPalController.php
│   │   │   ├── PresetController.php
│   │   │   ├── Quests/
│   │   │   │   ├── ElementController.php
│   │   │   │   └── QuestController.php
│   │   │   ├── Races/
│   │   │   │   ├── MemberController.php
│   │   │   │   └── RaceController.php
│   │   │   ├── ReferralController.php
│   │   │   ├── RelationController.php
│   │   │   ├── ReminderUpdateController.php
│   │   │   ├── Roadmap/
│   │   │   │   ├── FeatureController.php
│   │   │   │   └── RoadmapController.php
│   │   │   ├── Search/
│   │   │   │   ├── AttributeController.php
│   │   │   │   ├── CalendarController.php
│   │   │   │   ├── CampaignController.php
│   │   │   │   ├── FullTextController.php
│   │   │   │   ├── GameSystemSearchController.php
│   │   │   │   ├── ImageController.php
│   │   │   │   ├── ListController.php
│   │   │   │   ├── LiveController.php
│   │   │   │   ├── MapGroupController.php
│   │   │   │   ├── MarkerController.php
│   │   │   │   ├── MentionController.php
│   │   │   │   ├── RecentController.php
│   │   │   │   └── TemplateController.php
│   │   │   ├── SearchController.php
│   │   │   ├── Settings/
│   │   │   │   ├── AccountController.php
│   │   │   │   ├── ApiController.php
│   │   │   │   ├── AppearanceController.php
│   │   │   │   ├── Apps/
│   │   │   │   │   └── DiscordController.php
│   │   │   │   ├── AppsController.php
│   │   │   │   ├── BoostController.php
│   │   │   │   ├── BragiController.php
│   │   │   │   ├── ClientController.php
│   │   │   │   ├── NewsletterApiController.php
│   │   │   │   ├── NewsletterController.php
│   │   │   │   ├── PatreonController.php
│   │   │   │   ├── PremiumController.php
│   │   │   │   ├── ProfileController.php
│   │   │   │   ├── ReferralController.php
│   │   │   │   ├── ReleaseController.php
│   │   │   │   ├── Subscription/
│   │   │   │   │   ├── CancellationController.php
│   │   │   │   │   ├── CancelledController.php
│   │   │   │   │   ├── FinishController.php
│   │   │   │   │   └── FreeTrialController.php
│   │   │   │   ├── SubscriptionApiController.php
│   │   │   │   ├── SubscriptionController.php
│   │   │   │   └── TutorialController.php
│   │   │   ├── SetupController.php
│   │   │   ├── Spotlights/
│   │   │   │   └── ApplicationController.php
│   │   │   ├── Subscription/
│   │   │   │   └── PayPal/
│   │   │   │       └── RenewalController.php
│   │   │   ├── Summernote/
│   │   │   │   └── GalleryController.php
│   │   │   ├── Tags/
│   │   │   │   ├── ChildController.php
│   │   │   │   ├── PostController.php
│   │   │   │   ├── TagController.php
│   │   │   │   └── TransferController.php
│   │   │   ├── Templates/
│   │   │   │   └── LoadController.php
│   │   │   ├── Timelines/
│   │   │   │   ├── TimelineController.php
│   │   │   │   ├── TimelineElementController.php
│   │   │   │   ├── TimelineEraController.php
│   │   │   │   └── TimelineReorderController.php
│   │   │   ├── TroubleshootingController.php
│   │   │   ├── User/
│   │   │   │   ├── EmailValidationController.php
│   │   │   │   └── ProfileController.php
│   │   │   ├── WebhookController.php
│   │   │   ├── Whiteboards/
│   │   │   │   ├── ApiController.php
│   │   │   │   ├── CrudController.php
│   │   │   │   └── DrawController.php
│   │   │   └── Widgets/
│   │   │       └── CalendarWidgetController.php
│   │   ├── Kernel.php
│   │   ├── Middleware/
│   │   │   ├── Adless.php
│   │   │   ├── ApiLogMiddleware.php
│   │   │   ├── CachedResponse.php
│   │   │   ├── Campaigns/
│   │   │   │   ├── Boosted.php
│   │   │   │   ├── Premium.php
│   │   │   │   └── Superboosted.php
│   │   │   ├── CheckIfUserBanned.php
│   │   │   ├── EncryptCookies.php
│   │   │   ├── HttpsProtocol.php
│   │   │   ├── Identity.php
│   │   │   ├── LastCampaign.php
│   │   │   ├── LocaleChange.php
│   │   │   ├── LocalizeDatetime.php
│   │   │   ├── LoginRedirect.php
│   │   │   ├── OTP.php
│   │   │   ├── PasswordConfirm.php
│   │   │   ├── RedirectIfAuthenticated.php
│   │   │   ├── ReplicationSwitcher.php
│   │   │   ├── Subscriptions.php
│   │   │   ├── Tracking.php
│   │   │   ├── Translator.php
│   │   │   ├── TrimStrings.php
│   │   │   ├── TrustProxies.php
│   │   │   └── VerifyCsrfToken.php
│   │   ├── Requests/
│   │   │   ├── API/
│   │   │   │   ├── PatchEntity.php
│   │   │   │   ├── StoreEntities.php
│   │   │   │   ├── StoreReminder.php
│   │   │   │   ├── UpdateUserRole.php
│   │   │   │   └── UploadEntityImage.php
│   │   │   ├── AddCalendarEvent.php
│   │   │   ├── AddCalendarWeather.php
│   │   │   ├── ApplyAttributeTemplate.php
│   │   │   ├── BragiRequest.php
│   │   │   ├── BulkRequest.php
│   │   │   ├── Bulks/
│   │   │   │   ├── Copy.php
│   │   │   │   ├── Template.php
│   │   │   │   └── Transform.php
│   │   │   ├── Campaigns/
│   │   │   │   ├── ApproveApplication.php
│   │   │   │   ├── DefaultImageDestroy.php
│   │   │   │   ├── DefaultImageStore.php
│   │   │   │   ├── DestroyDefaultThumbnail.php
│   │   │   │   ├── GalleryImageFolderStore.php
│   │   │   │   ├── GalleryImageStore.php
│   │   │   │   ├── GalleryImageUpdate.php
│   │   │   │   ├── PatchCampaignApplication.php
│   │   │   │   ├── RejectApplication.php
│   │   │   │   ├── StoreCampaignApplication.php
│   │   │   │   ├── StoreCampaignApplicationStatus.php
│   │   │   │   ├── StoreCampaignSetup.php
│   │   │   │   ├── StoreCampaignVisibility.php
│   │   │   │   ├── StoreDefaultThumbnail.php
│   │   │   │   ├── StoreDefaults.php
│   │   │   │   ├── StoreImage.php
│   │   │   │   ├── StoreTheme.php
│   │   │   │   └── Vanity.php
│   │   │   ├── CopyEntityToCampaignRequest.php
│   │   │   ├── CopyInventory.php
│   │   │   ├── DeleteCampaign.php
│   │   │   ├── DeleteEntityType.php
│   │   │   ├── DeleteSettingsAccount.php
│   │   │   ├── EditPostVisibility.php
│   │   │   ├── Entities/
│   │   │   │   └── UpdateListingPreferenceRequest.php
│   │   │   ├── FilterPublicCampaignRequest.php
│   │   │   ├── Front/
│   │   │   │   └── StoreCommunityEventEntry.php
│   │   │   ├── Gallery/
│   │   │   │   ├── CreateFolder.php
│   │   │   │   ├── DeleteImages.php
│   │   │   │   ├── MoveFiles.php
│   │   │   │   ├── UpdateFile.php
│   │   │   │   ├── UpdateFiles.php
│   │   │   │   ├── UpdateFocus.php
│   │   │   │   ├── UploadFile.php
│   │   │   │   ├── UploadFiles.php
│   │   │   │   └── UploadUrl.php
│   │   │   ├── GalleryBulkDelete.php
│   │   │   ├── GenerateInventory.php
│   │   │   ├── HistoryRequest.php
│   │   │   ├── ManageFamilies.php
│   │   │   ├── ManageRaces.php
│   │   │   ├── MoveEntity.php
│   │   │   ├── MoveEntityRequest.php
│   │   │   ├── MovePostRequest.php
│   │   │   ├── Onboarding/
│   │   │   │   └── InitialRequest.php
│   │   │   ├── PermissionTestRequest.php
│   │   │   ├── QuickCreator/
│   │   │   │   ├── StoreEntity.php
│   │   │   │   └── StorePost.php
│   │   │   ├── ReadBanner.php
│   │   │   ├── RecoverEntity.php
│   │   │   ├── RecoverPost.php
│   │   │   ├── RenameEntityFile.php
│   │   │   ├── ReorderAbility.php
│   │   │   ├── ReorderBookmarks.php
│   │   │   ├── ReorderGroups.php
│   │   │   ├── ReorderLayers.php
│   │   │   ├── ReorderStories.php
│   │   │   ├── ReorderStyles.php
│   │   │   ├── ReorderTimeline.php
│   │   │   ├── SaveAttributes.php
│   │   │   ├── SaveAttributesApi.php
│   │   │   ├── SaveUserHelp.php
│   │   │   ├── Search/
│   │   │   │   └── MentionRequest.php
│   │   │   ├── Settings/
│   │   │   │   ├── NewsletterStore.php
│   │   │   │   ├── StoreApiToken.php
│   │   │   │   ├── StoreClient.php
│   │   │   │   ├── UserAltSubscribeStore.php
│   │   │   │   ├── UserBillingStore.php
│   │   │   │   └── UserSubscribeStore.php
│   │   │   ├── Spotlights/
│   │   │   │   └── ApplyRequest.php
│   │   │   ├── StoreAbility.php
│   │   │   ├── StoreAbilityEntity.php
│   │   │   ├── StoreAttribute.php
│   │   │   ├── StoreAttributeTemplate.php
│   │   │   ├── StoreBillingSettings.php
│   │   │   ├── StoreBookmark.php
│   │   │   ├── StoreCalendar.php
│   │   │   ├── StoreCampaign.php
│   │   │   ├── StoreCampaignDashboard.php
│   │   │   ├── StoreCampaignDashboardWidget.php
│   │   │   ├── StoreCampaignInvite.php
│   │   │   ├── StoreCampaignRole.php
│   │   │   ├── StoreCampaignRoleUser.php
│   │   │   ├── StoreCampaignStyle.php
│   │   │   ├── StoreCampaignTheme.php
│   │   │   ├── StoreCampaignUser.php
│   │   │   ├── StoreCharacter.php
│   │   │   ├── StoreCharacterFamily.php
│   │   │   ├── StoreCharacterOrganisation.php
│   │   │   ├── StoreCharacterRace.php
│   │   │   ├── StoreConversation.php
│   │   │   ├── StoreConversationMessage.php
│   │   │   ├── StoreConversationParticipant.php
│   │   │   ├── StoreCreature.php
│   │   │   ├── StoreCustomEntity.php
│   │   │   ├── StoreDiceRoll.php
│   │   │   ├── StoreEntityAbility.php
│   │   │   ├── StoreEntityAlias.php
│   │   │   ├── StoreEntityAsset.php
│   │   │   ├── StoreEntityAssets.php
│   │   │   ├── StoreEntityFile.php
│   │   │   ├── StoreEntityLink.php
│   │   │   ├── StoreEntityPermission.php
│   │   │   ├── StoreEntityTag.php
│   │   │   ├── StoreEntityType.php
│   │   │   ├── StoreEvent.php
│   │   │   ├── StoreFamily.php
│   │   │   ├── StoreFamilyTree.php
│   │   │   ├── StoreFeature.php
│   │   │   ├── StoreImageFocus.php
│   │   │   ├── StoreInventory.php
│   │   │   ├── StoreItem.php
│   │   │   ├── StoreJournal.php
│   │   │   ├── StoreLocation.php
│   │   │   ├── StoreMap.php
│   │   │   ├── StoreMapGroup.php
│   │   │   ├── StoreMapLayer.php
│   │   │   ├── StoreMapMarker.php
│   │   │   ├── StoreMarketplaceProfile.php
│   │   │   ├── StoreNote.php
│   │   │   ├── StoreOrganisation.php
│   │   │   ├── StoreOrganisationMember.php
│   │   │   ├── StoreOrganisationMembers.php
│   │   │   ├── StorePermission.php
│   │   │   ├── StorePost.php
│   │   │   ├── StorePreset.php
│   │   │   ├── StoreQuest.php
│   │   │   ├── StoreQuestElement.php
│   │   │   ├── StoreRace.php
│   │   │   ├── StoreRelation.php
│   │   │   ├── StoreSettingsAccount.php
│   │   │   ├── StoreSettingsAccountEmail.php
│   │   │   ├── StoreSettingsLayout.php
│   │   │   ├── StoreSettingsProfile.php
│   │   │   ├── StoreShare.php
│   │   │   ├── StoreTag.php
│   │   │   ├── StoreTagEntity.php
│   │   │   ├── StoreTimeline.php
│   │   │   ├── StoreTimelineElement.php
│   │   │   ├── StoreTimelineEra.php
│   │   │   ├── StoreWebhook.php
│   │   │   ├── StoreWhiteboard.php
│   │   │   ├── SubscriptionCancel.php
│   │   │   ├── TransferTag.php
│   │   │   ├── TransformEntity.php
│   │   │   ├── TransformEntityRequest.php
│   │   │   ├── Translation/
│   │   │   │   └── StoreFaqTranslationRequest.php
│   │   │   ├── UpdateAttribute.php
│   │   │   ├── UpdateCalendarEvent.php
│   │   │   ├── UpdateCampaign.php
│   │   │   ├── UpdateCampaignHeader.php
│   │   │   ├── UpdateEntityAbility.php
│   │   │   ├── UpdateEntityAttribute.php
│   │   │   ├── UpdateEntityEntry.php
│   │   │   ├── UpdateEntityFile.php
│   │   │   ├── UpdateEntityImage.php
│   │   │   ├── UpdateEntityTags.php
│   │   │   ├── UpdateInventory.php
│   │   │   ├── UpdateModuleName.php
│   │   │   ├── UpdateRelation.php
│   │   │   ├── UpdateUserRoles.php
│   │   │   ├── ValidateCoupon.php
│   │   │   ├── ValidatePledge.php
│   │   │   ├── ValidateReminderLength.php
│   │   │   └── Whiteboards/
│   │   │       ├── CreateRequest.php
│   │   │       ├── CreateStrokeRequest.php
│   │   │       ├── StoreShapeRequest.php
│   │   │       ├── UpdateRequest.php
│   │   │       └── UpdateShapeRequest.php
│   │   ├── Resources/
│   │   │   ├── AbilityResource.php
│   │   │   ├── Api/
│   │   │   │   ├── CategoryStatusResource.php
│   │   │   │   ├── DefaultEntityTypeResource.php
│   │   │   │   ├── EntityImagesResource.php
│   │   │   │   └── EntityTagResource.php
│   │   │   ├── ApiEntityTagResource.php
│   │   │   ├── ApiExclusion.php
│   │   │   ├── ApiSync.php
│   │   │   ├── ApplicationResource.php
│   │   │   ├── AttributeResource.php
│   │   │   ├── AttributeTemplateResource.php
│   │   │   ├── Attributes/
│   │   │   │   └── LiveAttributeResource.php
│   │   │   ├── BookmarkResource.php
│   │   │   ├── CalendarResource.php
│   │   │   ├── CalendarWeatherResource.php
│   │   │   ├── CampaignDashboardWidgetResource.php
│   │   │   ├── CampaignResource.php
│   │   │   ├── CampaignStyleResource.php
│   │   │   ├── CampaignUserResource.php
│   │   │   ├── CampaignUserRoleResource.php
│   │   │   ├── CategoryStatusResource.php
│   │   │   ├── CharacterOrganisationResource.php
│   │   │   ├── CharacterResource.php
│   │   │   ├── CharacterTraitResource.php
│   │   │   ├── Conversation/
│   │   │   │   ├── ConversationMessageResource.php
│   │   │   │   └── ConversationResource.php
│   │   │   ├── ConversationMessageResource.php
│   │   │   ├── ConversationParticipantResource.php
│   │   │   ├── ConversationResource.php
│   │   │   ├── CreatureResource.php
│   │   │   ├── DiceRollResource.php
│   │   │   ├── Entities/
│   │   │   │   ├── ExploreResource.php
│   │   │   │   └── TemplateResource.php
│   │   │   ├── Entity.php
│   │   │   ├── EntityAbilityResource.php
│   │   │   ├── EntityAssetResource.php
│   │   │   ├── EntityChild.php
│   │   │   ├── EntityDefaultThumbnailResource.php
│   │   │   ├── EntityMentionResource.php
│   │   │   ├── EntityPermissionResource.php
│   │   │   ├── EntityResource.php
│   │   │   ├── EntityTagResource.php
│   │   │   ├── EntityTypeResource.php
│   │   │   ├── EventResource.php
│   │   │   ├── FamilyResource.php
│   │   │   ├── FamilyTreeResource.php
│   │   │   ├── Gallery/
│   │   │   │   └── Tiptap/
│   │   │   │       └── ImageResource.php
│   │   │   ├── GalleryFile.php
│   │   │   ├── GalleryFileFull.php
│   │   │   ├── ImageResource.php
│   │   │   ├── InventoryResource.php
│   │   │   ├── ItemResource.php
│   │   │   ├── JournalResource.php
│   │   │   ├── KankaCollection.php
│   │   │   ├── LocationResource.php
│   │   │   ├── MapGroupResource.php
│   │   │   ├── MapLayerResource.php
│   │   │   ├── MapMarkerResource.php
│   │   │   ├── MapResource.php
│   │   │   ├── ModelResource.php
│   │   │   ├── NoteResource.php
│   │   │   ├── OrganisationMemberResource.php
│   │   │   ├── OrganisationResource.php
│   │   │   ├── PostLayoutResource.php
│   │   │   ├── PostPermissionResource.php
│   │   │   ├── PostResource.php
│   │   │   ├── ProfileResource.php
│   │   │   ├── Public/
│   │   │   │   └── CampaignResource.php
│   │   │   ├── QuestElementResource.php
│   │   │   ├── QuestResource.php
│   │   │   ├── RaceResource.php
│   │   │   ├── RelationResource.php
│   │   │   ├── ReminderResource.php
│   │   │   ├── TagResource.php
│   │   │   ├── TimelineElementResource.php
│   │   │   ├── TimelineEraResource.php
│   │   │   ├── TimelineResource.php
│   │   │   ├── UserResource.php
│   │   │   ├── VisibilityResource.php
│   │   │   ├── VoteResource.php
│   │   │   ├── Web/
│   │   │   │   └── EntityResource.php
│   │   │   └── Whiteboards/
│   │   │       ├── EntityResource.php
│   │   │       ├── ShapeResource.php
│   │   │       └── StrokeResource.php
│   │   └── Validators/
│   │       └── HashValidator.php
│   ├── Jobs/
│   │   ├── CalendarsClearElapsed.php
│   │   ├── CampaignRoleUserJob.php
│   │   ├── Campaigns/
│   │   │   ├── Delete.php
│   │   │   ├── Export.php
│   │   │   ├── Hide.php
│   │   │   ├── Import.php
│   │   │   ├── ImportCsv.php
│   │   │   ├── NotifyAdmins.php
│   │   │   └── Populate.php
│   │   ├── ChunkMapJob.php
│   │   ├── Copyright/
│   │   │   ├── DeleteCampaignImage.php
│   │   │   ├── DeleteEntityImage.php
│   │   │   └── DeleteUserImage.php
│   │   ├── DeletedCampaignCleanupJob.php
│   │   ├── Discord/
│   │   │   ├── AdminInviteJob.php
│   │   │   ├── ReportJob.php
│   │   │   ├── SendNewFeature.php
│   │   │   └── UpdateFeatureUpvotes.php
│   │   ├── DiscordRoleJob.php
│   │   ├── Emails/
│   │   │   ├── EmailChangeJob.php
│   │   │   ├── MailSettingsChangeJob.php
│   │   │   ├── Purge/
│   │   │   │   ├── FirstWarningJob.php
│   │   │   │   └── SecondWarningJob.php
│   │   │   ├── SubscriptionCancelEmailJob.php
│   │   │   ├── SubscriptionCreatedEmailJob.php
│   │   │   ├── SubscriptionDeletedEmailJob.php
│   │   │   ├── SubscriptionDowngradedEmailJob.php
│   │   │   ├── SubscriptionFailedEmailJob.php
│   │   │   ├── Subscriptions/
│   │   │   │   ├── Admin/
│   │   │   │   │   └── PaypalRenewedJob.php
│   │   │   │   ├── Converted.php
│   │   │   │   ├── EmailValidationJob.php
│   │   │   │   ├── ExpiringCardAlert.php
│   │   │   │   ├── PaypalExpiringAlert.php
│   │   │   │   ├── UpcomingYearlyAlert.php
│   │   │   │   └── WelcomeSubscriptionEmailJob.php
│   │   │   ├── TrialAcceptedEmailJob.php
│   │   │   └── WelcomeEmailJob.php
│   │   ├── EntityMappingJob.php
│   │   ├── EntityUpdatedJob.php
│   │   ├── EntityWebhookJob.php
│   │   ├── FileCleanup.php
│   │   ├── ResetCssCache.php
│   │   ├── Roadmap/
│   │   │   └── DiscordFeatureJob.php
│   │   ├── Spotlight/
│   │   │   └── DiscordSpotlightJob.php
│   │   ├── SubscriptionEndJob.php
│   │   ├── TestWebhookJob.php
│   │   └── Users/
│   │       ├── AbandonedCart.php
│   │       ├── DeleteUser.php
│   │       ├── NewPassword.php
│   │       ├── UnsubscribeUser.php
│   │       ├── UnsyncDiscord.php
│   │       └── UpdateEmail.php
│   ├── Listeners/
│   │   ├── Campaigns/
│   │   │   ├── Admins/
│   │   │   │   └── Notify.php
│   │   │   ├── Applications/
│   │   │   │   └── LogApplication.php
│   │   │   ├── Campaigns/
│   │   │   │   └── LogCampaign.php
│   │   │   ├── ClearCampaignCache.php
│   │   │   ├── ClearCampaignThemeCache.php
│   │   │   ├── ClearCampaignUsersSaved.php
│   │   │   ├── Dashboards/
│   │   │   │   └── LogDashboard.php
│   │   │   ├── EntityTypes/
│   │   │   │   └── LogEntityType.php
│   │   │   ├── Exports/
│   │   │   │   └── LogExport.php
│   │   │   ├── Invites/
│   │   │   │   └── LogInvite.php
│   │   │   ├── Members/
│   │   │   │   ├── LogMember.php
│   │   │   │   ├── LogUserRoleChanged.php
│   │   │   │   └── RunRoleUserJob.php
│   │   │   ├── Plugins/
│   │   │   │   ├── ClearThemeCache.php
│   │   │   │   └── LogPlugin.php
│   │   │   ├── Roles/
│   │   │   │   └── LogRole.php
│   │   │   ├── Sidebar/
│   │   │   │   └── LogSidebar.php
│   │   │   ├── Styles/
│   │   │   │   ├── ClearStylesCache.php
│   │   │   │   └── LogStyle.php
│   │   │   ├── Thumbnails/
│   │   │   │   ├── LogThumbnail.php
│   │   │   │   └── LogThumbnails.php
│   │   │   └── Webhooks/
│   │   │       └── LogWebhook.php
│   │   ├── Entities/
│   │   │   └── LogEntity.php
│   │   ├── Posts/
│   │   │   └── LogPost.php
│   │   ├── SendAdminInviteNotification.php
│   │   ├── SendFeatureNotification.php
│   │   ├── SendSpotlightNotification.php
│   │   ├── UserEventSubscriber.php
│   │   └── Users/
│   │       ├── ClearUserCache.php
│   │       ├── SendEmailUpdate.php
│   │       └── Subscriptions/
│   │           └── LogPremium.php
│   ├── Livewire/
│   │   ├── Campaigns/
│   │   │   ├── CsvImport.php
│   │   │   ├── ExportsTable.php
│   │   │   └── Tags.php
│   │   ├── EntityListing.php
│   │   ├── Roadmap/
│   │   │   ├── Form.php
│   │   │   ├── Ideas.php
│   │   │   └── Upvote.php
│   │   ├── Roadmap.php
│   │   ├── Users/
│   │   │   └── Otp.php
│   │   └── Widgets/
│   │       ├── GalleryCarousel.php
│   │       └── RandomEntity.php
│   ├── Mail/
│   │   ├── Admin/
│   │   │   └── Subscriptions/
│   │   │       └── ConvertedMail.php
│   │   ├── Purge/
│   │   │   ├── FirstWarning.php
│   │   │   └── SecondWarning.php
│   │   ├── Subscription/
│   │   │   ├── Admin/
│   │   │   │   ├── CancelledSubscriptionMail.php
│   │   │   │   ├── DowngradedSubscriptionMail.php
│   │   │   │   ├── NewSubscriptionMail.php
│   │   │   │   ├── NewTrialAcceptedMail.php
│   │   │   │   └── PaypalRenewedMail.php
│   │   │   └── User/
│   │   │       ├── CancelledUserSubscriptionMail.php
│   │   │       ├── EmailChangeMail.php
│   │   │       ├── ExpiringCardEmail.php
│   │   │       ├── FailedUserSubscriptionMail.php
│   │   │       ├── NewElementalSubscriptionMail.php
│   │   │       ├── NewSubscriberMail.php
│   │   │       ├── PaypalExpiringMail.php
│   │   │       ├── UpcomingYearlyEmail.php
│   │   │       └── ValidationEmail.php
│   │   ├── Users/
│   │   │   └── NewPassword.php
│   │   └── WelcomeEmail.php
│   ├── Models/
│   │   ├── Ability.php
│   │   ├── Ad.php
│   │   ├── AdminInvite.php
│   │   ├── ApiLog.php
│   │   ├── AppRelease.php
│   │   ├── Application.php
│   │   ├── Attribute.php
│   │   ├── AttributeTemplate.php
│   │   ├── Bookmark.php
│   │   ├── BragiLog.php
│   │   ├── Calendar.php
│   │   ├── CalendarWeather.php
│   │   ├── Campaign.php
│   │   ├── CampaignBoost.php
│   │   ├── CampaignDashboard.php
│   │   ├── CampaignDashboardRole.php
│   │   ├── CampaignDashboardWidget.php
│   │   ├── CampaignDashboardWidgetTag.php
│   │   ├── CampaignDescription.php
│   │   ├── CampaignEvent.php
│   │   ├── CampaignExport.php
│   │   ├── CampaignFilter.php
│   │   ├── CampaignFlag.php
│   │   ├── CampaignFollower.php
│   │   ├── CampaignGenre.php
│   │   ├── CampaignImport.php
│   │   ├── CampaignInvite.php
│   │   ├── CampaignPermission.php
│   │   ├── CampaignPlugin.php
│   │   ├── CampaignRole.php
│   │   ├── CampaignRoleUser.php
│   │   ├── CampaignSetting.php
│   │   ├── CampaignStyle.php
│   │   ├── CampaignSystem.php
│   │   ├── CampaignUser.php
│   │   ├── CategoryStatus.php
│   │   ├── Character.php
│   │   ├── CharacterFamily.php
│   │   ├── CharacterOrganisation.php
│   │   ├── CharacterRace.php
│   │   ├── CharacterTrait.php
│   │   ├── CommunityEvent.php
│   │   ├── CommunityEventEntry.php
│   │   ├── CommunityVote.php
│   │   ├── CommunityVoteBallot.php
│   │   ├── Concerns/
│   │   │   ├── Acl.php
│   │   │   ├── Blameable.php
│   │   │   ├── Boosted.php
│   │   │   ├── CampaignLimit.php
│   │   │   ├── CompositeKey.php
│   │   │   ├── Copiable.php
│   │   │   ├── EntityAsset.php
│   │   │   ├── EntityLogs.php
│   │   │   ├── EntityType.php
│   │   │   ├── HasCampaign.php
│   │   │   ├── HasEntity.php
│   │   │   ├── HasEntry.php
│   │   │   ├── HasFilters.php
│   │   │   ├── HasImage.php
│   │   │   ├── HasLocation.php
│   │   │   ├── HasLocations.php
│   │   │   ├── HasMentions.php
│   │   │   ├── HasReminder.php
│   │   │   ├── HasSlug.php
│   │   │   ├── HasSuggestions.php
│   │   │   ├── HasUser.php
│   │   │   ├── HasVisibility.php
│   │   │   ├── LastSync.php
│   │   │   ├── Orderable.php
│   │   │   ├── Paginatable.php
│   │   │   ├── Privatable.php
│   │   │   ├── Purifiable.php
│   │   │   ├── Sanitizable.php
│   │   │   ├── Searchable.php
│   │   │   ├── SimpleSortableTrait.php
│   │   │   ├── Sortable.php
│   │   │   ├── SortableTrait.php
│   │   │   ├── Taggable.php
│   │   │   ├── Templatable.php
│   │   │   ├── TouchSilently.php
│   │   │   ├── UserBoosters.php
│   │   │   └── UserTokens.php
│   │   ├── Conversation.php
│   │   ├── ConversationMessage.php
│   │   ├── ConversationParticipant.php
│   │   ├── Creature.php
│   │   ├── DiceRoll.php
│   │   ├── DiceRollResult.php
│   │   ├── Entity.php
│   │   ├── EntityAbility.php
│   │   ├── EntityAsset.php
│   │   ├── EntityEventType.php
│   │   ├── EntityListingPreference.php
│   │   ├── EntityLocation.php
│   │   ├── EntityLog.php
│   │   ├── EntityMention.php
│   │   ├── EntityTag.php
│   │   ├── EntityType.php
│   │   ├── EntityUser.php
│   │   ├── Event.php
│   │   ├── Family.php
│   │   ├── FamilyTree.php
│   │   ├── Faq.php
│   │   ├── FaqCategory.php
│   │   ├── FaqTranslation.php
│   │   ├── Feature.php
│   │   ├── FeatureCategory.php
│   │   ├── FeatureFile.php
│   │   ├── FeatureStatus.php
│   │   ├── FeatureUpvote.php
│   │   ├── FeatureVote.php
│   │   ├── GameSystem.php
│   │   ├── Genre.php
│   │   ├── Image.php
│   │   ├── ImageMention.php
│   │   ├── Inventory.php
│   │   ├── Item.php
│   │   ├── ItemCreator.php
│   │   ├── JobLog.php
│   │   ├── Journal.php
│   │   ├── Location.php
│   │   ├── Map.php
│   │   ├── MapGroup.php
│   │   ├── MapLayer.php
│   │   ├── MapMarker.php
│   │   ├── MiscModel.php
│   │   ├── Note.php
│   │   ├── Notification.php
│   │   ├── OTPAuthentication.php
│   │   ├── Organisation.php
│   │   ├── OrganisationMember.php
│   │   ├── PasswordSecurity.php
│   │   ├── Playstyle.php
│   │   ├── Pledge.php
│   │   ├── Plugin.php
│   │   ├── PluginType.php
│   │   ├── PluginVersion.php
│   │   ├── PluginVersionEntity.php
│   │   ├── Post.php
│   │   ├── PostLayout.php
│   │   ├── PostPermission.php
│   │   ├── PostTag.php
│   │   ├── Preset.php
│   │   ├── PresetType.php
│   │   ├── Quest.php
│   │   ├── QuestElement.php
│   │   ├── Race.php
│   │   ├── Referral.php
│   │   ├── ReferralEvent.php
│   │   ├── Relation.php
│   │   ├── Relations/
│   │   │   ├── CalendarRelations.php
│   │   │   ├── CampaignRelations.php
│   │   │   ├── EntityRelations.php
│   │   │   └── UserRelations.php
│   │   ├── Reminder.php
│   │   ├── Role.php
│   │   ├── Scopes/
│   │   │   ├── AclScope.php
│   │   │   ├── CalendarWeatherScopes.php
│   │   │   ├── CampaignScope.php
│   │   │   ├── CampaignScopes.php
│   │   │   ├── CommunityEventScopes.php
│   │   │   ├── CommunityVoteScopes.php
│   │   │   ├── EntityAssetScopes.php
│   │   │   ├── EntityEventScopes.php
│   │   │   ├── EntityScopes.php
│   │   │   ├── Pinnable.php
│   │   │   ├── PrivateScope.php
│   │   │   ├── SubEntityScopes.php
│   │   │   ├── TagScopes.php
│   │   │   ├── UserScope.php
│   │   │   └── VisibilityIDScope.php
│   │   ├── Spotlight.php
│   │   ├── SpotlightContent.php
│   │   ├── SubscriptionCancellation.php
│   │   ├── SubscriptionSource.php
│   │   ├── Tag.php
│   │   ├── Theme.php
│   │   ├── Tier.php
│   │   ├── TierPrice.php
│   │   ├── Timeline.php
│   │   ├── TimelineElement.php
│   │   ├── TimelineEra.php
│   │   ├── User.php
│   │   ├── UserApp.php
│   │   ├── UserFlag.php
│   │   ├── UserLog.php
│   │   ├── UserRole.php
│   │   ├── UserSetting.php
│   │   ├── UserValidation.php
│   │   ├── Users/
│   │   │   └── Tutorial.php
│   │   ├── Visibility.php
│   │   ├── Webhook.php
│   │   ├── Whiteboard.php
│   │   ├── WhiteboardShape.php
│   │   └── WhiteboardStroke.php
│   ├── Notifications/
│   │   └── Header.php
│   ├── Observers/
│   │   ├── AdminInviteObserver.php
│   │   ├── ApplicationObserver.php
│   │   ├── BlameableObserver.php
│   │   ├── BookmarkObserver.php
│   │   ├── CalendarObserver.php
│   │   ├── CampaignDashboardObserver.php
│   │   ├── CampaignDashboardRoleObserver.php
│   │   ├── CampaignDashboardWidgetObserver.php
│   │   ├── CampaignDescriptionObserver.php
│   │   ├── CampaignExportObserver.php
│   │   ├── CampaignFollowerObserver.php
│   │   ├── CampaignInviteObserver.php
│   │   ├── CampaignObserver.php
│   │   ├── CampaignPluginObserver.php
│   │   ├── CampaignRoleObserver.php
│   │   ├── CampaignRoleUserObserver.php
│   │   ├── CampaignSettingObserver.php
│   │   ├── CampaignStyleObserver.php
│   │   ├── CampaignUserObserver.php
│   │   ├── ChildEntityObserver.php
│   │   ├── Concerns/
│   │   │   └── HasMany.php
│   │   ├── ConversationMessageObserver.php
│   │   ├── ConversationObserver.php
│   │   ├── DiceRollObserver.php
│   │   ├── DiceRollResultObserver.php
│   │   ├── EntityAbilityObserver.php
│   │   ├── EntityAssetObserver.php
│   │   ├── EntityLogObserver.php
│   │   ├── EntityObserver.php
│   │   ├── EntityTypeObserver.php
│   │   ├── EntryObserver.php
│   │   ├── FamilyTreeObserver.php
│   │   ├── FeatureObserver.php
│   │   ├── ImageObserver.php
│   │   ├── ImageableObserver.php
│   │   ├── InventoryObserver.php
│   │   ├── MapGroupObserver.php
│   │   ├── MapLayerObserver.php
│   │   ├── MapMarkerObserver.php
│   │   ├── MapObserver.php
│   │   ├── OrganisationMemberObserver.php
│   │   ├── PostObserver.php
│   │   ├── PresetObserver.php
│   │   ├── PurifiableObserver.php
│   │   ├── PurifiableTrait.php
│   │   ├── QuestElementObserver.php
│   │   ├── Remindable.php
│   │   ├── ReminderObserver.php
│   │   ├── ReorderTrait.php
│   │   ├── SanitizedObserver.php
│   │   ├── SlugObserver.php
│   │   ├── SuggestionObserver.php
│   │   ├── TaggableObserver.php
│   │   ├── TimelineElementObserver.php
│   │   ├── TimelineEraObserver.php
│   │   ├── UserLogObserver.php
│   │   ├── UserObserver.php
│   │   ├── VisibilityObserver.php
│   │   ├── WebhookObserver.php
│   │   └── WhiteboardShapeObserver.php
│   ├── Policies/
│   │   ├── AbilityPolicy.php
│   │   ├── AttributeTemplatePolicy.php
│   │   ├── BookmarkPolicy.php
│   │   ├── CalendarPolicy.php
│   │   ├── CampaignBoostPolicy.php
│   │   ├── CampaignPluginPolicy.php
│   │   ├── CampaignPolicy.php
│   │   ├── CampaignRolePolicy.php
│   │   ├── CampaignRoleUserPolicy.php
│   │   ├── CampaignStylePolicy.php
│   │   ├── CampaignUserPolicy.php
│   │   ├── CharacterPolicy.php
│   │   ├── ClientPolicy.php
│   │   ├── CommunityEventEntryPolicy.php
│   │   ├── CommunityVotePolicy.php
│   │   ├── ConversationMessagePolicy.php
│   │   ├── ConversationPolicy.php
│   │   ├── CreaturePolicy.php
│   │   ├── DiceRollPolicy.php
│   │   ├── EntityPolicy.php
│   │   ├── EntityTypePolicy.php
│   │   ├── EventPolicy.php
│   │   ├── FamilyPolicy.php
│   │   ├── FeaturePolicy.php
│   │   ├── ImagePolicy.php
│   │   ├── ItemPolicy.php
│   │   ├── JournalPolicy.php
│   │   ├── LocationPolicy.php
│   │   ├── MapGroupPolicy.php
│   │   ├── MapLayerPolicy.php
│   │   ├── MapMarkerPolicy.php
│   │   ├── MapPolicy.php
│   │   ├── MiscPolicy.php
│   │   ├── NotePolicy.php
│   │   ├── OrganisationMemberPolicy.php
│   │   ├── OrganisationPolicy.php
│   │   ├── PluginPolicy.php
│   │   ├── PostPolicy.php
│   │   ├── QuestPolicy.php
│   │   ├── RacePolicy.php
│   │   ├── RelationPolicy.php
│   │   ├── ReminderPolicy.php
│   │   ├── TagPolicy.php
│   │   ├── TimelineEraPolicy.php
│   │   ├── TimelinePolicy.php
│   │   ├── TokenPolicy.php
│   │   ├── UserPolicy.php
│   │   ├── WebhookPolicy.php
│   │   └── WhiteboardPolicy.php
│   ├── Providers/
│   │   ├── AppServiceProvider.php
│   │   ├── AttributesServiceProvider.php
│   │   ├── AuthServiceProvider.php
│   │   ├── AvatarServiceProvider.php
│   │   ├── BreadcrumbServiceProvider.php
│   │   ├── BroadcastServiceProvider.php
│   │   ├── CacheServiceProvider.php
│   │   ├── CampaignLocalizationServiceProvider.php
│   │   ├── DashboardServiceProvider.php
│   │   ├── DatagridRendererProvider.php
│   │   ├── DatalayerServiceProvider.php
│   │   ├── DomainServiceProvider.php
│   │   ├── EntitySetupServiceProvider.php
│   │   ├── EventServiceProvider.php
│   │   ├── FormCopyServiceProvider.php
│   │   ├── IdentityServiceProvider.php
│   │   ├── ImgServiceProvider.php
│   │   ├── ImporterServiceProvider.php
│   │   ├── LimitServiceProvider.php
│   │   ├── Logs/
│   │   │   └── ApiLogServiceProvider.php
│   │   ├── MentionsServiceProvider.php
│   │   ├── ModuleServiceProvider.php
│   │   ├── PermissionsServiceProvider.php
│   │   └── RouteServiceProvider.php
│   ├── Renderers/
│   │   ├── CalendarRenderer.php
│   │   ├── CharacterSheets/
│   │   │   ├── Blade.php
│   │   │   ├── Custom.php
│   │   │   └── Renderer.php
│   │   ├── DatagridRenderer.php
│   │   ├── DatagridRenderer2.php
│   │   └── Layouts/
│   │       ├── Ability/
│   │       │   ├── Ability.php
│   │       │   └── Entity.php
│   │       ├── Calendar/
│   │       │   └── Reminder.php
│   │       ├── Campaign/
│   │       │   ├── CampaignImport.php
│   │       │   ├── CampaignRole.php
│   │       │   ├── CampaignUser.php
│   │       │   ├── Plugin.php
│   │       │   ├── PostRecovery.php
│   │       │   ├── Recovery.php
│   │       │   ├── Theme.php
│   │       │   └── Webhook.php
│   │       ├── Character/
│   │       │   └── Organisation.php
│   │       ├── Columns/
│   │       │   ├── Action.php
│   │       │   ├── Checkbox.php
│   │       │   ├── Column.php
│   │       │   └── Standard.php
│   │       ├── Creature/
│   │       │   └── Creature.php
│   │       ├── Entity/
│   │       │   ├── Children.php
│   │       │   ├── Relation.php
│   │       │   └── Reminder.php
│   │       ├── Event/
│   │       │   └── Event.php
│   │       ├── Family/
│   │       │   ├── Character.php
│   │       │   └── Family.php
│   │       ├── Header.php
│   │       ├── Item/
│   │       │   ├── Entity.php
│   │       │   └── Item.php
│   │       ├── Journal/
│   │       │   └── Journal.php
│   │       ├── Layout.php
│   │       ├── Location/
│   │       │   ├── Character.php
│   │       │   ├── Event.php
│   │       │   ├── Location.php
│   │       │   └── Quest.php
│   │       ├── Map/
│   │       │   ├── Group.php
│   │       │   ├── Layer.php
│   │       │   ├── Map.php
│   │       │   └── Marker.php
│   │       ├── Mention/
│   │       │   └── Mention.php
│   │       ├── Note/
│   │       │   └── Note.php
│   │       ├── Organisation/
│   │       │   ├── Member.php
│   │       │   └── Organisation.php
│   │       ├── Quest/
│   │       │   └── Quest.php
│   │       ├── Race/
│   │       │   ├── Character.php
│   │       │   └── Race.php
│   │       ├── Tag/
│   │       │   ├── Entity.php
│   │       │   ├── Post.php
│   │       │   └── Tag.php
│   │       └── Timeline/
│   │           ├── Era.php
│   │           └── Timeline.php
│   ├── Rules/
│   │   ├── AccountEmail.php
│   │   ├── AccountName.php
│   │   ├── ApiUniqueAttributeNames.php
│   │   ├── CalendarFormat.php
│   │   ├── CalendarMoonOffset.php
│   │   ├── CampaignDelete.php
│   │   ├── Confirm.php
│   │   ├── EntityField.php
│   │   ├── EntityFile.php
│   │   ├── EntityLink.php
│   │   ├── FontAwesomeIcon.php
│   │   ├── GallerySize.php
│   │   ├── GoodBye.php
│   │   ├── Lessless.php
│   │   ├── Location.php
│   │   ├── Nested.php
│   │   ├── Recaptcha.php
│   │   ├── SocialLogin.php
│   │   ├── UniqueAttributeNames.php
│   │   └── Vanity.php
│   ├── Sanitizers/
│   │   ├── CalendarSanitizer.php
│   │   ├── MiscSanitizer.php
│   │   └── SvgAllowedAttributes.php
│   ├── Services/
│   │   ├── Abilities/
│   │   │   ├── AbilityService.php
│   │   │   ├── BaseAbilityService.php
│   │   │   ├── ChargeService.php
│   │   │   ├── ImportService.php
│   │   │   └── ReorderService.php
│   │   ├── Account/
│   │   │   └── DeletionService.php
│   │   ├── Api/
│   │   │   ├── ApiPermissionService.php
│   │   │   ├── ApiService.php
│   │   │   ├── BulkAttributeService.php
│   │   │   ├── BulkEntityCreatorService.php
│   │   │   ├── CampaignService.php
│   │   │   ├── FilterService.php
│   │   │   ├── KbService.php
│   │   │   ├── ShowcaseService.php
│   │   │   └── VoteService.php
│   │   ├── AttributeMentionService.php
│   │   ├── AttributeService.php
│   │   ├── Attributes/
│   │   │   ├── ApiService.php
│   │   │   ├── BaseAttributesService.php
│   │   │   ├── RandomService.php
│   │   │   └── TemplateService.php
│   │   ├── Auth/
│   │   │   ├── LoginService.php
│   │   │   └── SessionService.php
│   │   ├── BookmarkService.php
│   │   ├── Bookmarks/
│   │   │   ├── RandomEntityService.php
│   │   │   └── RoutingService.php
│   │   ├── Bragi/
│   │   │   ├── BragiService.php
│   │   │   └── OpenAiService.php
│   │   ├── BreadcrumbService.php
│   │   ├── BulkService.php
│   │   ├── Caches/
│   │   │   ├── AdCacheService.php
│   │   │   ├── BaseCache.php
│   │   │   ├── BookmarkCacheService.php
│   │   │   ├── CampaignCacheService.php
│   │   │   ├── CharacterCacheService.php
│   │   │   ├── EntityAssetCacheService.php
│   │   │   ├── EntityCacheService.php
│   │   │   ├── MapMarkerCacheService.php
│   │   │   ├── MarketplaceCacheService.php
│   │   │   ├── QuestCacheService.php
│   │   │   ├── ReleaseCacheService.php
│   │   │   ├── SingleUserCacheService.php
│   │   │   ├── TimelineElementCacheService.php
│   │   │   ├── Traits/
│   │   │   │   ├── Campaign/
│   │   │   │   │   ├── ApplicationCache.php
│   │   │   │   │   ├── DashboardCache.php
│   │   │   │   │   ├── FlagCache.php
│   │   │   │   │   ├── MemberCache.php
│   │   │   │   │   ├── RoleCache.php
│   │   │   │   │   ├── SettingCache.php
│   │   │   │   │   ├── StyleCache.php
│   │   │   │   │   ├── ThemeCache.php
│   │   │   │   │   └── ThumbnailCache.php
│   │   │   │   ├── PrimaryCache.php
│   │   │   │   └── User/
│   │   │   │       ├── CampaignCache.php
│   │   │   │       ├── RoleCache.php
│   │   │   │       ├── TutorialCache.php
│   │   │   │       └── UserFlagCache.php
│   │   │   └── UserCacheService.php
│   │   ├── CalendarService.php
│   │   ├── Calendars/
│   │   │   ├── AdvancerService.php
│   │   │   ├── DaysService.php
│   │   │   ├── MoonService.php
│   │   │   ├── ReminderService.php
│   │   │   ├── SeasonService.php
│   │   │   └── WeatherService.php
│   │   ├── Campaign/
│   │   │   ├── AchievementService.php
│   │   │   ├── ApplicationService.php
│   │   │   ├── BoostService.php
│   │   │   ├── Connections/
│   │   │   │   └── WebService.php
│   │   │   ├── Counters/
│   │   │   │   └── VisibleEntityCountService.php
│   │   │   ├── CreateService.php
│   │   │   ├── DefaultImageService.php
│   │   │   ├── DeletionService.php
│   │   │   ├── ExportService.php
│   │   │   ├── Exports/
│   │   │   │   └── QueueService.php
│   │   │   ├── FollowService.php
│   │   │   ├── Gallery/
│   │   │   │   └── BulkService.php
│   │   │   ├── GenreService.php
│   │   │   ├── Import/
│   │   │   │   ├── ImportIdMapper.php
│   │   │   │   ├── ImportMentions.php
│   │   │   │   ├── ImportService.php
│   │   │   │   ├── Mappers/
│   │   │   │   │   ├── AbilityMapper.php
│   │   │   │   │   ├── BaseEntityMapper.php
│   │   │   │   │   ├── CalendarMapper.php
│   │   │   │   │   ├── CampaignMapper.php
│   │   │   │   │   ├── CharacterMapper.php
│   │   │   │   │   ├── CreatureMapper.php
│   │   │   │   │   ├── CustomEntityMapper.php
│   │   │   │   │   ├── CustomMapper.php
│   │   │   │   │   ├── EntityMapper.php
│   │   │   │   │   ├── EventMapper.php
│   │   │   │   │   ├── FamilyMapper.php
│   │   │   │   │   ├── GalleryMapper.php
│   │   │   │   │   ├── ImageMapper.php
│   │   │   │   │   ├── ImportMapper.php
│   │   │   │   │   ├── ItemMapper.php
│   │   │   │   │   ├── JournalMapper.php
│   │   │   │   │   ├── LocationMapper.php
│   │   │   │   │   ├── MapMapper.php
│   │   │   │   │   ├── MiscMapper.php
│   │   │   │   │   ├── NoteMapper.php
│   │   │   │   │   ├── OrganisationMapper.php
│   │   │   │   │   ├── QuestMapper.php
│   │   │   │   │   ├── RaceMapper.php
│   │   │   │   │   ├── TagMapper.php
│   │   │   │   │   └── TimelineMapper.php
│   │   │   │   └── PrepareService.php
│   │   │   ├── LeaveService.php
│   │   │   ├── LocalisationService.php
│   │   │   ├── MemberService.php
│   │   │   ├── ModuleEditService.php
│   │   │   ├── ModuleService.php
│   │   │   ├── NotificationService.php
│   │   │   ├── Notifications/
│   │   │   │   ├── HideService.php
│   │   │   │   └── ImageRemoveService.php
│   │   │   ├── PluginService.php
│   │   │   ├── PurgeService.php
│   │   │   ├── SearchCleanupService.php
│   │   │   ├── ShareService.php
│   │   │   ├── Sidebar/
│   │   │   │   ├── SaveService.php
│   │   │   │   └── SetupService.php
│   │   │   ├── StatService.php
│   │   │   ├── SystemService.php
│   │   │   ├── ThemeBuilderService.php
│   │   │   └── Webhooks/
│   │   │       └── SaveService.php
│   │   ├── ColourService.php
│   │   ├── CommunityVoteService.php
│   │   ├── CountryService.php
│   │   ├── CsvImportService.php
│   │   ├── CsvValidatorService.php
│   │   ├── DashboardService.php
│   │   ├── Dashboards/
│   │   │   └── GettingStartedService.php
│   │   ├── DiceRollerService.php
│   │   ├── Discord/
│   │   │   └── NotificationService.php
│   │   ├── DiscordService.php
│   │   ├── DomainService.php
│   │   ├── Entity/
│   │   │   ├── AliasService.php
│   │   │   ├── ArchiveService.php
│   │   │   ├── ColumnDefinitionService.php
│   │   │   ├── Connections/
│   │   │   │   ├── MapService.php
│   │   │   │   └── RelatedService.php
│   │   │   ├── CopyService.php
│   │   │   ├── EntitySaveService.php
│   │   │   ├── ExportService.php
│   │   │   ├── InventoryService.php
│   │   │   ├── LoggerService.php
│   │   │   ├── MarkdownExportService.php
│   │   │   ├── MoveService.php
│   │   │   ├── NewService.php
│   │   │   ├── PopularService.php
│   │   │   ├── PostLoggerService.php
│   │   │   ├── PostService.php
│   │   │   ├── PreviewService.php
│   │   │   ├── PrivacyService.php
│   │   │   ├── PurgeService.php
│   │   │   ├── RecoveryService.php
│   │   │   ├── RecoverySetupService.php
│   │   │   ├── RelationService.php
│   │   │   ├── Relations/
│   │   │   │   ├── CharacterRelationsService.php
│   │   │   │   ├── Concerns/
│   │   │   │   │   ├── SavesLocations.php
│   │   │   │   │   └── SupportsPatchMode.php
│   │   │   │   ├── CreatureRelationsService.php
│   │   │   │   ├── EntityRelationsServiceFactory.php
│   │   │   │   ├── EventRelationsService.php
│   │   │   │   ├── FamilyRelationsService.php
│   │   │   │   ├── ItemRelationsService.php
│   │   │   │   ├── LocationRelationsService.php
│   │   │   │   ├── OrganisationRelationsService.php
│   │   │   │   ├── RaceRelationsService.php
│   │   │   │   └── RelationsServiceInterface.php
│   │   │   ├── RemindableService.php
│   │   │   ├── ShareService.php
│   │   │   ├── StoryService.php
│   │   │   ├── TagService.php
│   │   │   ├── TemplateService.php
│   │   │   ├── TooltipService.php
│   │   │   └── TransformService.php
│   │   ├── EntityFileService.php
│   │   ├── EntityMappingService.php
│   │   ├── EntityTypeService.php
│   │   ├── Families/
│   │   │   └── FamilyTreeService.php
│   │   ├── FilterService.php
│   │   ├── FormCopyService.php
│   │   ├── Gallery/
│   │   │   ├── BrowseService.php
│   │   │   ├── CreateService.php
│   │   │   ├── DeleteService.php
│   │   │   ├── SelectionService.php
│   │   │   ├── SetupService.php
│   │   │   ├── StorageService.php
│   │   │   ├── SummernoteService.php
│   │   │   ├── TiptapService.php
│   │   │   ├── UpdateService.php
│   │   │   └── UploadService.php
│   │   ├── GenreService.php
│   │   ├── IdentityManager.php
│   │   ├── Images/
│   │   │   └── AvatarService.php
│   │   ├── ImagesService.php
│   │   ├── ImgService.php
│   │   ├── InviteService.php
│   │   ├── LanguageService.php
│   │   ├── Layout/
│   │   │   └── NavigationService.php
│   │   ├── LengthValidatorService.php
│   │   ├── LimitService.php
│   │   ├── Logs/
│   │   │   └── ApiLogService.php
│   │   ├── Maps/
│   │   │   ├── ChunkingService.php
│   │   │   └── MigrateLayerService.php
│   │   ├── MarkdownMentionsService.php
│   │   ├── Mentions/
│   │   │   └── SaveService.php
│   │   ├── MentionsService.php
│   │   ├── MultiEditingService.php
│   │   ├── NewsletterService.php
│   │   ├── Onboarding/
│   │   │   └── InitialService.php
│   │   ├── PaginationService.php
│   │   ├── PatreonService.php
│   │   ├── PayPalService.php
│   │   ├── PermissionService.php
│   │   ├── Permissions/
│   │   │   ├── BulkPermissionService.php
│   │   │   ├── EntityPermission.php
│   │   │   ├── PermissionService.php
│   │   │   ├── RolePermission.php
│   │   │   └── RolePermissionService.php
│   │   ├── Plugins/
│   │   │   └── ImporterService.php
│   │   ├── Posts/
│   │   │   ├── Permissions/
│   │   │   │   └── SavePermissionsService.php
│   │   │   ├── PurgeService.php
│   │   │   └── RecoveryService.php
│   │   ├── QuickCreator/
│   │   │   └── ProcessService.php
│   │   ├── Referrals/
│   │   │   ├── JoinService.php
│   │   │   └── ManagementService.php
│   │   ├── Report/
│   │   │   ├── AccountsReportService.php
│   │   │   ├── BaseReportService.php
│   │   │   ├── ChurnReportService.php
│   │   │   ├── OnboardingReportService.php
│   │   │   └── WeeklyReportService.php
│   │   ├── Search/
│   │   │   ├── AttributeSearchService.php
│   │   │   ├── CampaignSearchService.php
│   │   │   ├── EntitySearchService.php
│   │   │   ├── LiveSearchService.php
│   │   │   ├── MapGroupSearchService.php
│   │   │   ├── MentionService.php
│   │   │   ├── RecentService.php
│   │   │   └── TemplateSearchService.php
│   │   ├── SearchService.php
│   │   ├── Spotlights/
│   │   │   └── ApplyService.php
│   │   ├── StarterService.php
│   │   ├── Submenus/
│   │   │   ├── AbilitySubmenu.php
│   │   │   ├── BaseSubmenu.php
│   │   │   ├── CalendarSubmenu.php
│   │   │   ├── CharacterSubmenu.php
│   │   │   ├── CreatureSubmenu.php
│   │   │   ├── CustomSubmenu.php
│   │   │   ├── EntitySubmenu.php
│   │   │   ├── EventSubmenu.php
│   │   │   ├── FamilySubmenu.php
│   │   │   ├── ItemSubmenu.php
│   │   │   ├── JournalSubmenu.php
│   │   │   ├── LocationSubmenu.php
│   │   │   ├── MapSubmenu.php
│   │   │   ├── NoteSubmenu.php
│   │   │   ├── OrganisationSubmenu.php
│   │   │   ├── QuestSubmenu.php
│   │   │   ├── RaceSubmenu.php
│   │   │   ├── SubmenuService.php
│   │   │   ├── TagSubmenu.php
│   │   │   └── TimelineSubmenu.php
│   │   ├── Subscribers/
│   │   │   └── HallOfFameService.php
│   │   ├── Subscription/
│   │   │   ├── CancellationService.php
│   │   │   ├── CouponService.php
│   │   │   ├── FreeTrialEndService.php
│   │   │   ├── PayPalRenewalService.php
│   │   │   ├── PaymentMethodService.php
│   │   │   ├── SubscriptionEndService.php
│   │   │   └── TrialService.php
│   │   ├── SubscriptionService.php
│   │   ├── SubscriptionUpgradeService.php
│   │   ├── TOC/
│   │   │   └── TocSlugify.php
│   │   ├── TagService.php
│   │   ├── TimelineService.php
│   │   ├── Tracking/
│   │   │   └── DatalayerService.php
│   │   ├── TroubleshootingService.php
│   │   ├── TutorialService.php
│   │   ├── UserAuthenticatedService.php
│   │   ├── Users/
│   │   │   ├── CampaignService.php
│   │   │   ├── CleanupService.php
│   │   │   ├── CurrencyService.php
│   │   │   ├── EmailValidationService.php
│   │   │   ├── OfferTrialService.php
│   │   │   ├── PurgeService.php
│   │   │   └── UserLogService.php
│   │   ├── WebhookService.php
│   │   └── Whiteboards/
│   │       ├── ApiService.php
│   │       └── Shapes/
│   │           └── PersistanceService.php
│   ├── Support/
│   │   └── HtmlPurifier/
│   │       └── CalcStyleDefinition.php
│   ├── Traits/
│   │   ├── AdminPolicyTrait.php
│   │   ├── ApiRequest.php
│   │   ├── BulkControllerTrait.php
│   │   ├── CalendarAware.php
│   │   ├── CampaignAware.php
│   │   ├── Controllers/
│   │   │   ├── HasDatagrid.php
│   │   │   ├── HasNested.php
│   │   │   └── HasSubview.php
│   │   ├── CreatesEntityFromName.php
│   │   ├── EntityAware.php
│   │   ├── EntityTypeAware.php
│   │   ├── ExportableTrait.php
│   │   ├── GuestAuthTrait.php
│   │   ├── HasJobLog.php
│   │   ├── MentionTrait.php
│   │   ├── OrderableTrait.php
│   │   ├── PostAware.php
│   │   ├── RequestAware.php
│   │   ├── ResolvesNewForeignEntities.php
│   │   ├── RoleAware.php
│   │   ├── Search/
│   │   │   └── Orderable.php
│   │   └── UserAware.php
│   └── View/
│       └── Components/
│           ├── Ad.php
│           ├── Ads/
│           │   └── Native.php
│           ├── Alert.php
│           ├── Badge.php
│           ├── Box/
│           │   └── Footer.php
│           ├── Box.php
│           ├── Button/
│           │   └── DeleteConfirm.php
│           ├── Buttons/
│           │   ├── Colours.php
│           │   ├── Confirm.php
│           │   └── ConfirmDelete.php
│           ├── Campaigns/
│           │   └── ModuleBox.php
│           ├── CharacterSheet.php
│           ├── Checkbox.php
│           ├── Dashboards/
│           │   └── Widgets/
│           │       └── Selection.php
│           ├── Date.php
│           ├── Dialog/
│           │   ├── Article.php
│           │   ├── Close.php
│           │   ├── Footer.php
│           │   └── Header.php
│           ├── Dialog.php
│           ├── Dropdowns/
│           │   ├── Divider.php
│           │   ├── Item.php
│           │   └── Section.php
│           ├── Entities/
│           │   ├── Submenu.php
│           │   └── Thumbnail.php
│           ├── EntityLink.php
│           ├── FaqElement.php
│           ├── Form.php
│           ├── Forms/
│           │   ├── Field.php
│           │   ├── Foreign.php
│           │   ├── Select.php
│           │   ├── Tags.php
│           │   ├── VisibilityPicker.php
│           │   └── VisibilityPickerField.php
│           ├── Grid.php
│           ├── Helper.php
│           ├── Helpers/
│           │   └── Tooltip.php
│           ├── Hero.php
│           ├── Icon.php
│           ├── InfoBox.php
│           ├── LearnMore.php
│           ├── Lists/
│           │   └── EmptyState.php
│           ├── Menu/
│           │   └── Element.php
│           ├── Menu.php
│           ├── Posts/
│           │   └── Tags.php
│           ├── PremiumCta.php
│           ├── PremiumCtaFooter.php
│           ├── PremiumDialog.php
│           ├── Profile/
│           │   └── SocialLink.php
│           ├── Reorder/
│           │   └── Child.php
│           ├── Sidebar/
│           │   ├── Account.php
│           │   ├── Bookmark.php
│           │   ├── Campaign.php
│           │   ├── Element.php
│           │   ├── Profile.php
│           │   ├── Section.php
│           │   └── Settings.php
│           ├── Since.php
│           ├── Tab/
│           │   ├── Nav.php
│           │   └── Tab.php
│           ├── Tags/
│           │   └── Bubble.php
│           ├── Toggles/
│           │   └── FilterButton.php
│           ├── Tutorial.php
│           ├── Users/
│           │   ├── Avatar.php
│           │   └── Link.php
│           ├── Widgets/
│           │   ├── FilteredLink.php
│           │   ├── Forms/
│           │   │   └── Advanced.php
│           │   └── Previews/
│           │       ├── Body.php
│           │       └── Head.php
│           └── WordCount.php
├── artisan
├── boost.json
├── bootstrap/
│   ├── app.php
│   └── cache/
│       └── .gitignore
├── composer.json
├── config/
│   ├── ads.php
│   ├── app.php
│   ├── attribute-templates.php
│   ├── auth.php
│   ├── backup.php
│   ├── billing.php
│   ├── blameable.php
│   ├── bragi.php
│   ├── broadcasting.php
│   ├── cache.php
│   ├── cdn.php
│   ├── colours.php
│   ├── cors.php
│   ├── database.php
│   ├── debugbar.php
│   ├── discord.php
│   ├── domains.php
│   ├── dompdf.php
│   ├── entities.php
│   ├── filesystems.php
│   ├── fontawesome.php
│   ├── front.php
│   ├── google2fa.php
│   ├── ignition.php
│   ├── image.php
│   ├── imports.php
│   ├── laravel-translation-manager.php
│   ├── laravellocalization.php
│   ├── larecipe.php
│   ├── limits.php
│   ├── livewire.php
│   ├── logging.php
│   ├── mail.php
│   ├── mailerlite.php
│   ├── marketplace.php
│   ├── openai.php
│   ├── passport.php
│   ├── paypal.php
│   ├── purge.php
│   ├── purify.php
│   ├── queue.php
│   ├── reverb.php
│   ├── scout.php
│   ├── sentry.php
│   ├── services.php
│   ├── session.php
│   ├── subscription.php
│   ├── thumbor.php
│   ├── tracking.php
│   ├── trustedproxy.php
│   └── view.php
├── database/
│   ├── .gitignore
│   ├── factories/
│   │   ├── AbilityFactory.php
│   │   ├── AttributeFactory.php
│   │   ├── BookmarkFactory.php
│   │   ├── CalendarFactory.php
│   │   ├── CampaignDashboardWidgetFactory.php
│   │   ├── CampaignFactory.php
│   │   ├── CampaignStyleFactory.php
│   │   ├── CharacterFactory.php
│   │   ├── ConversationFactory.php
│   │   ├── ConversationMessageFactory.php
│   │   ├── ConversationParticipantFactory.php
│   │   ├── CreatureFactory.php
│   │   ├── DiceRollFactory.php
│   │   ├── EntityAbilityFactory.php
│   │   ├── EntityAssetFactory.php
│   │   ├── EntityTagFactory.php
│   │   ├── EventFactory.php
│   │   ├── FamilyFactory.php
│   │   ├── ImageFactory.php
│   │   ├── ItemFactory.php
│   │   ├── JournalFactory.php
│   │   ├── LocationFactory.php
│   │   ├── MapFactory.php
│   │   ├── MapGroupFactory.php
│   │   ├── MapLayerFactory.php
│   │   ├── MapMarkerFactory.php
│   │   ├── NoteFactory.php
│   │   ├── OrganisationFactory.php
│   │   ├── PostFactory.php
│   │   ├── PostTagFactory.php
│   │   ├── QuestElementFactory.php
│   │   ├── QuestFactory.php
│   │   ├── RaceFactory.php
│   │   ├── RelationFactory.php
│   │   ├── ReminderFactory.php
│   │   ├── TagFactory.php
│   │   ├── TimelineElementFactory.php
│   │   ├── TimelineEraFactory.php
│   │   ├── TimelineFactory.php
│   │   └── UserFactory.php
│   ├── migrations/
│   │   ├── .gitkeep
│   │   ├── 2014_04_02_193005_create_ltm_translations_table.php
│   │   ├── 2014_10_12_000000_create_users_table.php
│   │   ├── 2014_10_12_100000_create_password_resets_table.php
│   │   ├── 2016_01_01_000000_add_voyager_user_fields.php
│   │   ├── 2016_04_11_00352701_create_user_locales_table.php
│   │   ├── 2016_06_01_000001_create_oauth_auth_codes_table.php
│   │   ├── 2016_06_01_000002_create_oauth_access_tokens_table.php
│   │   ├── 2016_06_01_000003_create_oauth_refresh_tokens_table.php
│   │   ├── 2016_06_01_000004_create_oauth_clients_table.php
│   │   ├── 2016_06_01_000005_create_oauth_personal_access_clients_table.php
│   │   ├── 2016_10_21_190000_create_roles_table.php
│   │   ├── 2017_10_27_090105_create_campaign.php
│   │   ├── 2017_10_27_091125_create_characters.php
│   │   ├── 2017_10_27_091755_create_families.php
│   │   ├── 2017_10_27_102246_create_locations.php
│   │   ├── 2017_10_28_091521_update_character_with_location.php
│   │   ├── 2017_10_30_010000_create_real_visibilities_table.php
│   │   ├── 2017_10_30_010002_create_real_entities_table.php
│   │   ├── 2017_10_30_160256_create_journal_table.php
│   │   ├── 2017_10_30_160311_create_item_table.php
│   │   ├── 2017_10_30_162322_create_family_relations.php
│   │   ├── 2017_10_30_164537_add_character_family.php
│   │   ├── 2017_10_31_124138_update_user_and_campaign_link.php
│   │   ├── 2017_11_01_222903_create_organisation.php
│   │   ├── 2017_11_03_181958_create_notes.php
│   │   ├── 2017_11_12_195702_create_invite_tokens.php
│   │   ├── 2017_11_16_145219_create_events.php
│   │   ├── 2017_11_16_222319_create_campaign_settings.php
│   │   ├── 2017_11_22_111255_create_quests.php
│   │   ├── 2017_11_30_113216_create_relations_table.php
│   │   ├── 2018_01_25_112528_create_attributes_table.php
│   │   ├── 2018_02_14_102646_create_attribute_template.php
│   │   ├── 2018_03_02_163640_create_new_acl.php
│   │   ├── 2018_03_14_152413_create_notifications_table.php
│   │   ├── 2018_04_09_17054701_add_ui_settings_to_ltm_user_locales.php
│   │   ├── 2018_04_16_090159_create_calendar_table.php
│   │   ├── 2018_04_24_075544_create_entity_notes_table.php
│   │   ├── 2018_04_24_124131_create_character_traits_table.php
│   │   ├── 2018_04_24_193803_create_sections_table.php
│   │   ├── 2018_04_30_174331_create_entity_events.php
│   │   ├── 2018_05_19_091532_add_dice_rolls.php
│   │   ├── 2018_05_25_102446_update_campaign_invites.php
│   │   ├── 2018_05_25_113848_create_dice_roll_results.php
│   │   ├── 2018_05_31_121110_create_custom_menu_table.php
│   │   ├── 2018_07_17_131457_create_jobs_table.php
│   │   ├── 2018_08_15_083901_create_failed_jobs_table.php
│   │   ├── 2018_08_20_174638_create_conversations.php
│   │   ├── 2018_09_19_121625_add_calendar_date_to_quest_and_journal.php
│   │   ├── 2018_09_25_134530_create_race.php
│   │   ├── 2018_10_17_130533_create_entity_categories.php
│   │   ├── 2018_10_23_124704_create_entity_files.php
│   │   ├── 2018_11_28_125839_add_campaign_dashboard_calendar.php
│   │   ├── 2018_12_06_222045_add_campaign_permission_entity_id.php
│   │   ├── 2019_01_24_182847_create_entity_mentions.php
│   │   ├── 2019_02_22_083247_create_entity_log.php
│   │   ├── 2019_04_11_134145_create_entity_inventory.php
│   │   ├── 2019_05_03_000001_create_customer_columns.php
│   │   ├── 2019_05_03_000002_create_subscriptions_table.php
│   │   ├── 2019_05_03_000003_create_subscription_items_table.php
│   │   ├── 2019_05_10_072500_create_entities.php
│   │   ├── 2019_05_23_130252_update_attribute_templates_add_entity_type_id.php
│   │   ├── 2019_08_15_152154_create_campaign_follow.php
│   │   ├── 2019_10_02_131224_create_campaign_boosts.php
│   │   ├── 2019_10_02_191220_custom_patreon.php
│   │   ├── 2020_01_20_084615_create_calendar_weather.php
│   │   ├── 2020_03_05_174449_create_abilities_table.php
│   │   ├── 2020_03_05_221303_create_entity_abilities.php
│   │   ├── 2020_03_25_192753_add_soft_deletes.php
│   │   ├── 2020_04_10_121227_create_discord.php
│   │   ├── 2020_04_29_175303_subscription_bills.php
│   │   ├── 2020_05_08_065550_create_images.php
│   │   ├── 2020_05_10_122725_update_dashboard_widgets_add_tags.php
│   │   ├── 2020_06_02_103227_create_sessions_table.php
│   │   ├── 2020_06_06_084917_create_maps_table.php
│   │   ├── 2020_07_24_160310_add_map_groups.php
│   │   ├── 2020_08_02_125607_create_app_updates_table.php
│   │   ├── 2020_08_03_155441_create_timelines_table.php
│   │   ├── 2020_08_04_095517_create_timeline_elements.php
│   │   ├── 2020_08_10_172320_update_entity_events_add_type.php
│   │   ├── 2020_09_10_140424_add_entity_image_id.php
│   │   ├── 2020_09_22_115919_create_referral_table.php
│   │   ├── 2020_11_07_083605_create_campaign_dashboards.php
│   │   ├── 2020_11_07_095122_update_campaign_widgets_add_dashboard_id.php
│   │   ├── 2020_12_12_191426_create_entity_note_permissions.php
│   │   ├── 2021_01_03_231138_create_table_entity_links.php
│   │   ├── 2021_01_18_184615_create_campaign_gallery_folders.php
│   │   ├── 2021_01_29_003755_update_menu_links_dashboard_id.php
│   │   ├── 2021_01_30_233554_create_campaign_submissions.php
│   │   ├── 2021_04_07_230722_update_entities_add_marketplace_entity_uuid.php
│   │   ├── 2021_04_11_202656_update_relations_add_marketplace_uuid.php
│   │   ├── 2021_04_20_201015_create_quest_elements_table.php
│   │   ├── 2021_05_25_125309_update_maps_center_marker.php
│   │   ├── 2021_07_19_095244_update_entity_notes_marketplace_uuid.php
│   │   ├── 2021_09_24_175239_create_entity_user_table.php
│   │   ├── 2021_09_27_173618_create_campaign_styles_table.php
│   │   ├── 2021_10_19_151149_create_menu_link_tags_table.php
│   │   ├── 2021_11_19_031558_create_user_role_table.php
│   │   ├── 2021_11_19_034012_update_entities_add_type_id.php
│   │   ├── 2022_01_02_212212_add_character_race_table.php
│   │   ├── 2022_01_23_023952_create_entity_aliases_table.php
│   │   ├── 2022_03_07_224142_create_character_families_table.php
│   │   ├── 2022_04_27_194610_update_campaign_permissions_perf.php
│   │   ├── 2022_05_06_151813_update_users_add_card_expiration.php
│   │   ├── 2022_06_07_172445_update_maps_add_clustering_toggle.php
│   │   ├── 2022_06_23_154301_create_entity_assets_table.php
│   │   ├── 2022_08_23_005328_add_race_location_table.php
│   │   ├── 2022_09_02_191341_create_password_securities_table.php
│   │   ├── 2022_09_21_231900_refactor_user_patreon.php
│   │   ├── 2022_10_20_192238_create_creatures_table.php
│   │   ├── 2022_11_01_214611_update_entity_user_add_campaign_id_post_id_timeline_element_id_quest_element_id.php
│   │   ├── 2022_11_07_192125_update_entity_mentions_add_quest_element_id_timeline_element_id.php
│   │   ├── 2022_11_08_161937_create_presets_table.php
│   │   ├── 2022_12_08_155837_rename_entity_note_id_to_post_id.php
│   │   ├── 2023_01_04_213154_create_bragi_logs_table.php
│   │   ├── 2023_01_16_021352_create_family_tree_table.php
│   │   ├── 2023_01_19_154910_cleanup_user_date_format.php
│   │   ├── 2023_02_08_003255_update_entity_logs_add_post_id.php
│   │   ├── 2023_03_14_152925_update_subscriptions_rename_stripe_plan.php
│   │   ├── 2023_03_14_153209_update_subscription_items_rename_stripe_plan.php
│   │   ├── 2023_03_14_154115_update_users_rename_card_brand_card_last_four.php
│   │   ├── 2023_05_04_185755_update_gallery_woff2.php
│   │   ├── 2023_05_17_191929_update_images_add_focus_x_focus_y.php
│   │   ├── 2023_06_02_175012_create_image_mentions_table.php
│   │   ├── 2023_06_09_215007_update_campaign_style_add_theme.php
│   │   ├── 2023_06_10_220139_create_api_logs.php
│   │   ├── 2023_06_15_210220_create_user_logs_table.php
│   │   ├── 2023_06_21_221002_update_attributes_rename_is_star.php
│   │   ├── 2023_06_21_221208_update_relations_rename_is_star.php
│   │   ├── 2023_06_27_194149_create_genres_table.php
│   │   ├── 2023_06_27_195226_create_campaign_genre_table.php
│   │   ├── 2023_06_29_185027_create_user_flags_table.php
│   │   ├── 2023_07_13_164526_create_post_layouts_table.php
│   │   ├── 2023_07_13_172639_update_entity_notes_add_layout_id.php
│   │   ├── 2023_07_28_181821_update_calendars_add_format.php
│   │   ├── 2023_08_11_012819_reset_campaign_slug.php
│   │   ├── 2023_08_14_225219_add_new_slug.php
│   │   ├── 2023_08_16_170220_remove_campaign_export_path.php
│   │   ├── 2023_08_21_233952_create_tutorials_table.php
│   │   ├── 2023_08_30_170905_migrate_to_bookmarks.php
│   │   ├── 2023_09_12_200523_migrate_to_posts.php
│   │   ├── 2023_10_15_183420_add_image_to_entities.php
│   │   ├── 2023_10_16_202303_update_locations_rename_parent_location_id_location_id.php
│   │   ├── 2023_10_21_172645_update_entity_type_bookmark.php
│   │   ├── 2023_10_25_173253_create_campaign_exports_table.php
│   │   ├── 2023_10_28_210131_add_is_deleted_index.php
│   │   ├── 2023_11_05_174423_create_campaign_import_table.php
│   │   ├── 2023_11_07_034812_rollback_entities_deleted_index.php
│   │   ├── 2023_11_19_121322_update_campaign_exports_add_progress.php
│   │   ├── 2023_11_21_215234_update_calendars_add_show_birthdays.php
│   │   ├── 2023_11_28_121013_cleanup_entity_images.php
│   │   ├── 2023_11_28_215313_update_map_markers_add_is_popupless.php
│   │   ├── 2023_12_02_154727_remove_old_trees.php
│   │   ├── 2023_12_05_125348_create_tiers_table.php
│   │   ├── 2024_01_08_144309_create_features_table.php
│   │   ├── 2024_01_10_191244_create_game_systems_table.php
│   │   ├── 2024_01_10_191740_create_campaign_system_table.php
│   │   ├── 2024_01_11_150113_update_attributes.php
│   │   ├── 2024_01_19_024046_cleanup_reminders.php
│   │   ├── 2024_01_22_203110_create_user_validations_table.php
│   │   ├── 2024_01_25_192113_update_creatures_add_is_extinct.php
│   │   ├── 2024_01_26_194006_update_campaigns_add_is_discreet.php
│   │   ├── 2024_02_06_162941_create_feature_files.php
│   │   ├── 2024_02_27_095646_update_features_add_original.php
│   │   ├── 2024_03_07_010249_update_features_add_rejection.php
│   │   ├── 2024_03_27_173140_create_webhooks.php
│   │   ├── 2024_04_03_224729_create_webhook_tags_table.php
│   │   ├── 2024_04_15_220412_create_organisation_location_table.php
│   │   ├── 2024_04_23_062512_update_subscriptions_change_name_type.php
│   │   ├── 2024_04_24_193659_update_campaign_settings_add_assets.php
│   │   ├── 2024_05_02_162659_update_inventories_add_image_uuid.php
│   │   ├── 2024_05_28_202511_create_tier_pricing_table.php
│   │   ├── 2024_06_01_000001_create_oauth_device_codes_table.php
│   │   ├── 2024_06_04_202056_update_posts_add_deleted_at_deleted_by.php
│   │   ├── 2024_06_14_201056_update_campaigns_add_deleted_by_deleted_at.php
│   │   ├── 2024_06_22_004252_update_character_race_add_is_private.php
│   │   ├── 2024_07_02_172619_update_posts_add_is_template.php
│   │   ├── 2024_07_08_051702_update_webhooks_add_settings.php
│   │   ├── 2024_07_09_062122_update_character_family_add_is_private.php
│   │   ├── 2024_07_25_205325_update_map_layers_add_image_uuid.php
│   │   ├── 2024_07_26_160208_update_entity_assets_add_image_uuid.php
│   │   ├── 2024_07_31_215400_remove_unused_slug.php
│   │   ├── 2024_08_12_231117_update_locations_add_is_destroyed.php
│   │   ├── 2024_08_13_202759_update_creatures_add_is_dead.php
│   │   ├── 2024_08_14_145655_update_races_add_is_extinct.php
│   │   ├── 2024_08_14_164041_update_families_add_is_extinct.php
│   │   ├── 2024_08_27_175447_update_notifications_migrate_user_model.php
│   │   ├── 2025_01_09_180214_update_objects_add_weight.php
│   │   ├── 2025_01_10_175606_update_quests_add_location_id.php
│   │   ├── 2025_01_11_022946_update_modules_add_campaign_id.php
│   │   ├── 2025_01_13_064804_create_post_tag_table.php
│   │   ├── 2025_01_13_230814_update_entities_add_boilerplate.php
│   │   ├── 2025_01_14_144924_update_bookmarks_add_entity_type_id.php
│   │   ├── 2025_01_15_160953_migrate_entry_to_entities.php
│   │   ├── 2025_01_16_164318_add_dashboard_entity_type_id.php
│   │   ├── 2025_01_16_175851_migrate_widgets_to_entity_types.php
│   │   ├── 2025_01_17_161652_add_parent_to_entities.php
│   │   ├── 2025_01_27_142523_add_word_count.php
│   │   ├── 2025_02_21_204219_update_module_icon.php
│   │   ├── 2025_03_18_055651_update_features_add_message_id.php
│   │   ├── 2025_03_21_150239_rename_entity_events_to_reminders.php
│   │   ├── 2025_03_21_150723_update_entity_events_add_polymorphism.php
│   │   ├── 2025_03_21_151008_fill_entity_events.php
│   │   ├── 2025_03_21_153447_update_reminders_nullify_entity_id.php
│   │   ├── 2025_04_10_064831_update_attribute_templates_add_is_enabled.php
│   │   ├── 2025_04_21_170958_update_user_logs_add_campaign_id.php
│   │   ├── 2025_05_29_015926_update_bookmarks_add_created_by_updated_by.php
│   │   ├── 2025_05_29_161824_update_campaign_dashboard_widgets_add_created_by_updated_by.php
│   │   ├── 2025_05_29_162746_update_attributes_add_created_by_updated_by.php
│   │   ├── 2025_06_06_053052_update_reminders_remove_entity_id.php
│   │   ├── 2025_06_09_161939_cleanup_old_entry_and_type.php
│   │   ├── 2025_06_09_162836_cleanup_old_fields.php
│   │   ├── 2025_06_09_181415_rename_campaign_submissions_to_applications.php
│   │   ├── 2025_06_09_182950_cleanup_old_logs_tables.php
│   │   ├── 2025_06_16_145726_add_api_log_duration.php
│   │   ├── 2025_06_16_211604_drop_oauth_personal_access_clients.php
│   │   ├── 2025_06_24_124233_update_entity_logs_add_polymorphism.php
│   │   ├── 2025_06_24_124354_migrate_entity_logs.php
│   │   ├── 2025_06_24_124500_cleanup_entity_logs.php
│   │   ├── 2025_06_25_161814_create_campaign_flags_table.php
│   │   ├── 2025_07_03_215618_update_objects_add_creator_id.php
│   │   ├── 2025_07_03_222904_update_objects_migrate_character_id_to_creator_id.php
│   │   ├── 2025_08_14_185936_update_posts_remove_is_private.php
│   │   ├── 2025_09_04_194330_update_campaign_flags_add_value.php
│   │   ├── 2025_09_12_160608_create_whiteboards_table.php
│   │   ├── 2025_09_17_034429_update_user_flags_add_amount.php
│   │   ├── 2025_09_22_230759_update_campaign_imports_add_logs_errors.php
│   │   ├── 2025_09_29_173336_update_map_markers_add_css.php
│   │   ├── 2025_09_29_204049_update_entities_add_archived_at.php
│   │   ├── 2025_10_01_200028_update_map_groups_add_parent_id.php
│   │   ├── 2025_10_02_170514_update_campaign_settings_add_whiteboards.php
│   │   ├── 2025_11_04_205450_create_entity_locations2_table.php
│   │   ├── 2025_11_06_154720_update_entity_assets_add_updated_by.php
│   │   ├── 2025_11_19_155526_migrate_campaigns_discreet.php
│   │   ├── 2025_11_19_160105_remove_campaigns_is_discreet.php
│   │   ├── 2025_12_15_191556_add_dashboard_widget_index.php
│   │   ├── 2025_12_22_212249_migrate_character_locations_to_entity_locations.php
│   │   ├── 2026_01_14_161511_cleanup_old_referrals.php
│   │   ├── 2026_01_14_170634_create_referral_codes_table.php
│   │   ├── 2026_01_14_174144_create_referral_events_table.php
│   │   ├── 2026_01_14_174215_update_users_referred_by.php
│   │   ├── 2026_01_15_224615_create_whiteboard_shapes_table.php
│   │   ├── 2026_01_15_232603_create_whiteboard_strokes_table.php
│   │   ├── 2026_01_23_204425_create_spotlights_table.php
│   │   ├── 2026_01_23_205038_cleanup_old_spotlights.php
│   │   ├── 2026_01_23_211003_create_spotlight_survey_table.php
│   │   ├── 2026_01_30_100000_rename_description_to_entry_in_quest_elements_table.php
│   │   ├── 2026_02_03_221238_create_playstyles_table.php
│   │   ├── 2026_02_04_170050_migrate_organisation_locations_to_entity_locations.php
│   │   ├── 2026_02_04_170051_migrate_creature_locations_to_entity_locations.php
│   │   ├── 2026_02_04_170052_migrate_race_locations_to_entity_locations.php
│   │   ├── 2026_02_04_213616_create_campaign_filters_table.php
│   │   ├── 2026_02_05_074106_create_campaign_playstyle_table.php
│   │   ├── 2026_02_06_185348_update_entities_force_name.php
│   │   ├── 2026_02_06_190751_add_entity_id_index_to_entities.php
│   │   ├── 2026_02_06_190754_add_composite_index_to_entity_tags.php
│   │   ├── 2026_02_06_190757_add_deleted_at_index_to_soft_delete_tables.php
│   │   ├── 2026_02_07_072211_update_applications_add_new_fields.php
│   │   ├── 2026_02_11_162437_add_alias_config.php
│   │   ├── 2026_02_16_155432_create_campaign_events_table.php
│   │   ├── 2026_02_16_215608_update_entities_add_source.php
│   │   ├── 2026_02_16_232044_fix_users_referred_by_foreign_key.php
│   │   ├── 2026_02_23_193432_add_prioritised_to_campaigns.php
│   │   ├── 2026_03_03_225300_update_characters_is_dead_to_tinyinteger.php
│   │   ├── 2026_03_04_044125_update_quests_is_completed_to_tinyinteger.php
│   │   ├── 2026_03_05_184417_migrate_event_locations_to_entity_locations.php
│   │   ├── 2026_03_05_214251_update_characters_pinned_defaults.php
│   │   ├── 2026_03_06_140442_rename_characters_is_dead_to_status.php
│   │   ├── 2026_03_06_140443_rename_quests_is_completed_to_status.php
│   │   ├── 2026_03_09_224121_add_copy_entity_entry_to_quest_elements_table.php
│   │   ├── 2026_03_11_224335_add_icon_to_tags_table.php
│   │   ├── 2026_03_12_172704_add_title_to_locations_table.php
│   │   ├── 2026_03_16_170743_update_cancellations_add_secondary.php
│   │   ├── 2026_03_16_211952_create_entity_listing_preferences_table.php
│   │   ├── 2026_03_17_000001_migrate_parent_ids_to_entities.php
│   │   ├── 2026_03_17_000002_drop_parent_columns_from_child_tables.php
│   │   ├── 2026_03_17_092044_create_item_creator_table.php
│   │   ├── 2026_03_18_152531_add_per_page_to_entity_listing_preferences_table.php
│   │   ├── 2026_03_23_193613_convert_tag_colours_to_hex.php
│   │   ├── 2026_03_26_000001_create_category_statuses_table.php
│   │   ├── 2026_03_26_000002_add_status_id_to_entities_table.php
│   │   ├── 2026_04_03_164253_update_features_add_meta.php
│   │   ├── 2026_04_03_215445_create_campaign_descriptions_table.php
│   │   ├── 2026_05_08_181031_drop_old_status_columns.php
│   │   ├── 2026_05_08_181951_drop_audit_columns_from_creatures_races_whiteboards.php
│   │   ├── 2026_05_08_183610_drop_system_and_is_discreet_from_campaigns.php
│   │   ├── 2026_05_08_185251_drop_follower_from_campaigns.php
│   │   └── 2026_05_08_190847_drop_export_date_from_campaigns.php
│   └── seeders/
│       ├── CategoryStatusSeeder.php
│       ├── DatabaseSeeder.php
│       ├── EntityEventTypeSeeder.php
│       ├── EntityTypesTableSeeder.php
│       ├── FeatureCategorySeeder.php
│       ├── FeatureStatusSeeder.php
│       ├── GameSystemSeeder.php
│       ├── GenreTableSeeder.php
│       ├── PlaystyleSeeder.php
│       ├── PostLayoutTableSeeder.php
│       ├── PresetTypeTableSeeder.php
│       ├── RolesTableSeeder.php
│       ├── ThemesTableSeeder.php
│       ├── TierPricingSeeder.php
│       ├── TierSeeder.php
│       └── VisibilitiesTableSeeder.php
├── docker/
│   └── mysql/
│       └── create-testing-database.sh
├── docker-compose.yml
├── docs/
│   ├── api/
│   │   └── readme.md
│   ├── assets.md
│   ├── contributing.md
│   ├── debugging.md
│   ├── meilisearch.md
│   ├── running.md
│   ├── specs/
│   │   └── 2026-05-07-family-tree-cytoscape-redesign.md
│   ├── translating.md
│   ├── updating.md
│   └── websockets.md
├── lang/
│   ├── base/
│   │   ├── attributes/
│   │   │   └── .gitkeep
│   │   ├── calendars/
│   │   │   └── .gitkeep
│   │   ├── campaigns/
│   │   │   └── .gitkeep
│   │   ├── emails/
│   │   │   └── .gitkeep
│   │   ├── entities/
│   │   │   └── .gitkeep
│   │   ├── front/
│   │   │   └── .gitkeep
│   │   ├── maps/
│   │   │   └── .gitkeep
│   │   ├── readme.md
│   │   ├── settings/
│   │   │   └── .gitkeep
│   │   ├── subscriptions/
│   │   │   └── .gitkeep
│   │   ├── timelines/
│   │   │   └── .gitkeep
│   │   └── users/
│   │       └── .gitkeep
│   ├── de/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   └── social.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── setup.php
│   │   │   └── widgets/
│   │   │       ├── calendar.php
│   │   │       ├── campaign.php
│   │   │       ├── header.php
│   │   │       ├── help.php
│   │   │       ├── preview.php
│   │   │       ├── random.php
│   │   │       ├── recent.php
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── lists.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   ├── attributes.php
│   │   │   ├── characters.php
│   │   │   ├── locations.php
│   │   │   ├── posts.php
│   │   │   ├── reminders.php
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── post_layouts.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── en/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── articles.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi/
│   │   │   └── backstory.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── categories.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── defaults.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── logs.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── permissions.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── share.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   ├── visibilities.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── connections/
│   │   │   └── web.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── onboarding.php
│   │   │   ├── premium.php
│   │   │   ├── setup.php
│   │   │   └── widgets/
│   │   │       ├── calendar.php
│   │   │       ├── campaign.php
│   │   │       ├── gallery.php
│   │   │       ├── header.php
│   │   │       ├── help.php
│   │   │       ├── join.php
│   │   │       ├── onboarding.php
│   │   │       ├── preview.php
│   │   │       ├── random.php
│   │   │       ├── recent.php
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── paypal-expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── share.php
│   │   │   ├── statuses.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   ├── tooltips.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── entries/
│   │   │   ├── archetypes.php
│   │   │   ├── archive.php
│   │   │   ├── bulk.php
│   │   │   ├── fields.php
│   │   │   └── tabs.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── lists.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   ├── attributes.php
│   │   │   ├── characters.php
│   │   │   ├── locations.php
│   │   │   ├── posts.php
│   │   │   ├── reminders.php
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── playstyles.php
│   │   ├── post_layouts.php
│   │   ├── posts/
│   │   │   └── templates.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── referrals.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── api.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── spotlights.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── cancellation.php
│   │   │   ├── cancelled.php
│   │   │   ├── confirm.php
│   │   │   ├── faq.php
│   │   │   ├── finish.php
│   │   │   ├── free-trial.php
│   │   │   ├── paypal-renew.php
│   │   │   ├── paypal.php
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── tiptap.php
│   │   ├── tutorials/
│   │   │   ├── actions.php
│   │   │   ├── characters.php
│   │   │   └── home.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── en-US/
│   │   ├── bookmarks.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── campaigns/
│   │   │   └── builder.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── emails/
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   └── attributes.php
│   │   ├── entities.php
│   │   ├── front.php
│   │   ├── helpers.php
│   │   ├── items.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   └── markers.php
│   │   ├── organisations.php
│   │   ├── quests.php
│   │   └── sidebar.php
│   ├── es/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi/
│   │   │   └── backstory.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── categories.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── defaults.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── logs.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── share.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   ├── visibilities.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── connections/
│   │   │   └── web.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── onboarding.php
│   │   │   ├── setup.php
│   │   │   └── widgets/
│   │   │       ├── calendar.php
│   │   │       ├── campaign.php
│   │   │       ├── header.php
│   │   │       ├── help.php
│   │   │       ├── join.php
│   │   │       ├── onboarding.php
│   │   │       ├── preview.php
│   │   │       ├── random.php
│   │   │       ├── recent.php
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── share.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   ├── tooltips.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── entries/
│   │   │   ├── archetypes.php
│   │   │   ├── bulk.php
│   │   │   ├── fields.php
│   │   │   └── tabs.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── lists.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   ├── attributes.php
│   │   │   ├── characters.php
│   │   │   ├── locations.php
│   │   │   ├── posts.php
│   │   │   ├── reminders.php
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── playstyles.php
│   │   ├── post_layouts.php
│   │   ├── posts/
│   │   │   └── templates.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── referrals.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── api.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── spotlights.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── cancellation.php
│   │   │   ├── cancelled.php
│   │   │   ├── confirm.php
│   │   │   ├── faq.php
│   │   │   ├── finish.php
│   │   │   ├── free-trial.php
│   │   │   ├── paypal.php
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── tiptap.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── fr/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── articles.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi/
│   │   │   └── backstory.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── categories.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── defaults.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── logs.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── share.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   ├── visibilities.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── connections/
│   │   │   └── web.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── onboarding.php
│   │   │   ├── premium.php
│   │   │   ├── setup.php
│   │   │   └── widgets/
│   │   │       ├── calendar.php
│   │   │       ├── campaign.php
│   │   │       ├── gallery.php
│   │   │       ├── header.php
│   │   │       ├── help.php
│   │   │       ├── join.php
│   │   │       ├── onboarding.php
│   │   │       ├── preview.php
│   │   │       ├── random.php
│   │   │       ├── recent.php
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── paypal-expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── share.php
│   │   │   ├── statuses.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   ├── tooltips.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── entries/
│   │   │   ├── archetypes.php
│   │   │   ├── archive.php
│   │   │   ├── bulk.php
│   │   │   ├── fields.php
│   │   │   └── tabs.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── lists.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   ├── attributes.php
│   │   │   ├── characters.php
│   │   │   ├── locations.php
│   │   │   ├── posts.php
│   │   │   ├── reminders.php
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── playstyles.php
│   │   ├── post_layouts.php
│   │   ├── posts/
│   │   │   └── templates.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── referrals.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── api.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── spotlights.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── cancellation.php
│   │   │   ├── cancelled.php
│   │   │   ├── confirm.php
│   │   │   ├── faq.php
│   │   │   ├── finish.php
│   │   │   ├── free-trial.php
│   │   │   ├── paypal-renew.php
│   │   │   ├── paypal.php
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── tiptap.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── hr/
│   │   ├── abilities.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── bookmarks.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── campaigns/
│   │   │   ├── applications.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── gallery.php
│   │   │   ├── plugins.php
│   │   │   ├── recovery.php
│   │   │   └── stats.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── conversations.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── story.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   └── validation.php
│   ├── it/
│   │   ├── abilities.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── billing/
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── limits.php
│   │   │   ├── modules.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   └── widgets/
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── story.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── pins.php
│   │   ├── post_layouts.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── settings/
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   └── promos.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   └── visibilities.php
│   ├── nl/
│   │   ├── abilities.php
│   │   ├── attribute_templates.php
│   │   ├── auth.php
│   │   ├── bookmarks.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── campaigns/
│   │   │   ├── applications.php
│   │   │   ├── default-images.php
│   │   │   ├── gallery.php
│   │   │   ├── plugins.php
│   │   │   ├── recovery.php
│   │   │   └── stats.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── conversations.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── attributes.php
│   │   │   ├── events.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── notes.php
│   │   │   ├── relations.php
│   │   │   └── timelines.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   └── validation.php
│   ├── pl/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi/
│   │   │   └── backstory.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   ├── .gitkeep
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── .gitkeep
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── defaults.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── logs.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   ├── visibilities.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── connections/
│   │   │   └── web.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── onboarding.php
│   │   │   ├── setup.php
│   │   │   └── widgets/
│   │   │       ├── calendar.php
│   │   │       ├── campaign.php
│   │   │       ├── header.php
│   │   │       ├── help.php
│   │   │       ├── onboarding.php
│   │   │       ├── preview.php
│   │   │       ├── random.php
│   │   │       ├── recent.php
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── .gitkeep
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   ├── tooltips.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── lists.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── .gitkeep
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   ├── attributes.php
│   │   │   ├── characters.php
│   │   │   ├── locations.php
│   │   │   ├── posts.php
│   │   │   ├── reminders.php
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── post_layouts.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── referrals.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── api.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── spotlights.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── cancellation.php
│   │   │   ├── cancelled.php
│   │   │   ├── confirm.php
│   │   │   ├── faq.php
│   │   │   ├── finish.php
│   │   │   ├── free-trial.php
│   │   │   ├── paypal.php
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── .gitkeep
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation-inline.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── pt-BR/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── articles.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi/
│   │   │   └── backstory.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── categories.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── logs.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── confirm.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   ├── premium.php
│   │   │   └── widgets/
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   ├── email.php
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── reminders.php
│   │   │   ├── story.php
│   │   │   ├── tags.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── entries/
│   │   │   └── tabs.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   └── characters.php
│   │   ├── organisations.php
│   │   ├── partials.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── playstyles.php
│   │   ├── post_layouts.php
│   │   ├── posts/
│   │   │   └── templates.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── cancelled.php
│   │   │   ├── confirm.php
│   │   │   ├── faq.php
│   │   │   ├── finish.php
│   │   │   ├── free-trial.php
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── tiptap.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   └── whiteboards.php
│   ├── ru/
│   │   ├── abilities.php
│   │   ├── account/
│   │   │   ├── email.php
│   │   │   ├── password.php
│   │   │   └── social.php
│   │   ├── assistance.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── information.php
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── limits.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   └── styles.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── conversations.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   └── upcoming.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── story.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── general.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search.php
│   │   ├── settings/
│   │   │   └── boosters.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   └── promos.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   ├── visibilities.php
│   │   ├── whiteboards/
│   │   │   └── draw.php
│   │   └── whiteboards.php
│   ├── sk/
│   │   ├── abilities.php
│   │   ├── articles.php
│   │   ├── attribute_templates.php
│   │   ├── attributes/
│   │   │   └── templates.php
│   │   ├── auth.php
│   │   ├── banners.php
│   │   ├── billing/
│   │   │   ├── invoices.php
│   │   │   ├── menu.php
│   │   │   └── payment_methods.php
│   │   ├── bookmarks.php
│   │   ├── bragi.php
│   │   ├── calendars/
│   │   │   └── weather.php
│   │   ├── calendars.php
│   │   ├── callouts.php
│   │   ├── campaigns/
│   │   │   ├── achievements.php
│   │   │   ├── applications.php
│   │   │   ├── builder.php
│   │   │   ├── categories.php
│   │   │   ├── dashboard-header.php
│   │   │   ├── default-images.php
│   │   │   ├── delete.php
│   │   │   ├── export.php
│   │   │   ├── gallery.php
│   │   │   ├── import.php
│   │   │   ├── invites.php
│   │   │   ├── limits.php
│   │   │   ├── members.php
│   │   │   ├── modules.php
│   │   │   ├── overview.php
│   │   │   ├── plugins.php
│   │   │   ├── public.php
│   │   │   ├── recovery.php
│   │   │   ├── roles.php
│   │   │   ├── sidebar.php
│   │   │   ├── stats.php
│   │   │   ├── styles.php
│   │   │   ├── vanity.php
│   │   │   └── webhooks.php
│   │   ├── campaigns.php
│   │   ├── characters.php
│   │   ├── colours.php
│   │   ├── concept.php
│   │   ├── confirm/
│   │   │   └── editing.php
│   │   ├── conversations.php
│   │   ├── cookieconsent.php
│   │   ├── creatures.php
│   │   ├── crud.php
│   │   ├── dashboard.php
│   │   ├── dashboards/
│   │   │   └── widgets/
│   │   │       └── welcome.php
│   │   ├── datagrids.php
│   │   ├── datetime.php
│   │   ├── default.php
│   │   ├── dice_roll_results.php
│   │   ├── dice_rolls.php
│   │   ├── emails/
│   │   │   ├── activity/
│   │   │   │   └── password.php
│   │   │   ├── purge/
│   │   │   │   ├── first.php
│   │   │   │   └── second.php
│   │   │   ├── subscriptions/
│   │   │   │   ├── expiring.php
│   │   │   │   ├── upcoming.php
│   │   │   │   └── validation.php
│   │   │   ├── validation.php
│   │   │   ├── welcome/
│   │   │   │   └── 2024.php
│   │   │   └── welcome.php
│   │   ├── entities/
│   │   │   ├── abilities.php
│   │   │   ├── actions.php
│   │   │   ├── aliases.php
│   │   │   ├── assets.php
│   │   │   ├── attributes.php
│   │   │   ├── children.php
│   │   │   ├── events.php
│   │   │   ├── files.php
│   │   │   ├── image.php
│   │   │   ├── inventories.php
│   │   │   ├── links.php
│   │   │   ├── logs.php
│   │   │   ├── map-points.php
│   │   │   ├── mentions.php
│   │   │   ├── move.php
│   │   │   ├── notes.php
│   │   │   ├── permissions.php
│   │   │   ├── pins.php
│   │   │   ├── profile.php
│   │   │   ├── quests.php
│   │   │   ├── relations.php
│   │   │   ├── story.php
│   │   │   ├── timelines.php
│   │   │   └── transform.php
│   │   ├── entities.php
│   │   ├── errors.php
│   │   ├── events.php
│   │   ├── export.php
│   │   ├── families/
│   │   │   └── trees.php
│   │   ├── families.php
│   │   ├── faq.php
│   │   ├── fields.php
│   │   ├── filters.php
│   │   ├── footer.php
│   │   ├── front/
│   │   │   ├── community-votes.php
│   │   │   ├── hall-of-fame.php
│   │   │   ├── kb.php
│   │   │   └── newsletter.php
│   │   ├── front.php
│   │   ├── gallery.php
│   │   ├── general.php
│   │   ├── genres.php
│   │   ├── header.php
│   │   ├── helpers.php
│   │   ├── history.php
│   │   ├── items.php
│   │   ├── journals.php
│   │   ├── languages.php
│   │   ├── locations.php
│   │   ├── maps/
│   │   │   ├── explore.php
│   │   │   ├── groups.php
│   │   │   ├── layers.php
│   │   │   └── markers.php
│   │   ├── maps.php
│   │   ├── misc.php
│   │   ├── notes.php
│   │   ├── notifications.php
│   │   ├── onboarding/
│   │   │   └── tags.php
│   │   ├── organisations.php
│   │   ├── pagination.php
│   │   ├── partials.php
│   │   ├── passwords.php
│   │   ├── patreon.php
│   │   ├── permissions.php
│   │   ├── pins.php
│   │   ├── playstyles.php
│   │   ├── post_layouts.php
│   │   ├── posts.php
│   │   ├── presets.php
│   │   ├── profiles.php
│   │   ├── quests.php
│   │   ├── races.php
│   │   ├── redirects.php
│   │   ├── releases.php
│   │   ├── rpg_systems.php
│   │   ├── search/
│   │   │   └── fulltext.php
│   │   ├── search.php
│   │   ├── seo.php
│   │   ├── settings/
│   │   │   ├── account.php
│   │   │   ├── appearance.php
│   │   │   ├── boosters.php
│   │   │   └── premium.php
│   │   ├── settings.php
│   │   ├── sidebar.php
│   │   ├── starter.php
│   │   ├── subscription.php
│   │   ├── subscriptions/
│   │   │   ├── promos.php
│   │   │   └── renew.php
│   │   ├── subscriptions.php
│   │   ├── tags.php
│   │   ├── teams.php
│   │   ├── tiers.php
│   │   ├── timelines/
│   │   │   ├── elements.php
│   │   │   └── eras.php
│   │   ├── timelines.php
│   │   ├── tiptap.php
│   │   ├── users/
│   │   │   └── profile.php
│   │   ├── validation.php
│   │   └── visibilities.php
│   └── vendor/
│       ├── backup/
│       │   ├── ar/
│       │   │   └── notifications.php
│       │   ├── ca/
│       │   │   └── notifications.php
│       │   ├── cs/
│       │   │   └── notifications.php
│       │   ├── da/
│       │   │   └── notifications.php
│       │   ├── de/
│       │   │   └── notifications.php
│       │   ├── en/
│       │   │   └── notifications.php
│       │   ├── es/
│       │   │   └── notifications.php
│       │   ├── fa/
│       │   │   └── notifications.php
│       │   ├── fi/
│       │   │   └── notifications.php
│       │   ├── fr/
│       │   │   └── notifications.php
│       │   ├── gl/
│       │   │   └── notifications.php
│       │   ├── hi/
│       │   │   └── notifications.php
│       │   ├── hr/
│       │   │   └── notifications.php
│       │   ├── id/
│       │   │   └── notifications.php
│       │   ├── it/
│       │   │   └── notifications.php
│       │   ├── ja/
│       │   │   └── notifications.php
│       │   ├── nl/
│       │   │   └── notifications.php
│       │   ├── no/
│       │   │   └── notifications.php
│       │   ├── pl/
│       │   │   └── notifications.php
│       │   ├── pt/
│       │   │   └── notifications.php
│       │   ├── pt-BR/
│       │   │   └── notifications.php
│       │   ├── ro/
│       │   │   └── notifications.php
│       │   ├── ru/
│       │   │   └── notifications.php
│       │   ├── sk/
│       │   │   └── notifications.php
│       │   ├── tr/
│       │   │   └── notifications.php
│       │   ├── uk/
│       │   │   └── notifications.php
│       │   ├── zh-CN/
│       │   │   └── notifications.php
│       │   └── zh-TW/
│       │       └── notifications.php
│       └── dnd5emonster/
│           ├── ca/
│           │   └── template.php
│           ├── cs/
│           │   └── template.php
│           ├── de/
│           │   └── template.php
│           ├── en/
│           │   └── template.php
│           ├── es/
│           │   └── template.php
│           ├── fr/
│           │   └── template.php
│           ├── gl/
│           │   └── template.php
│           ├── hu/
│           │   └── template.php
│           ├── it/
│           │   └── template.php
│           ├── pl/
│           │   └── template.php
│           ├── pt-BR/
│           │   └── template.php
│           ├── ru/
│           │   └── template.php
│           └── sk/
│               └── template.php
├── larastan.php
├── package.json
├── phpcs.xml
├── phpmd_ruleset.xml
├── phpstan.neon
├── phpunit.xml
├── pint.json
├── public/
│   ├── .well-known/
│   │   └── security.txt
│   ├── build/
│   │   ├── assets/
│   │   │   ├── Browser.vue_vue_type_script_setup_true_lang-DjY0tfEc.js
│   │   │   ├── GalleryDialog-B3Id-RLo.js
│   │   │   ├── GalleryDialog-SGgOgWve.css
│   │   │   ├── SourceEditor-BKF0zshA.css
│   │   │   ├── SourceEditor-CaEGRaAo.js
│   │   │   ├── Tiptap-B5LGKvdR.css
│   │   │   ├── Tiptap-Bd5ZGSft.js
│   │   │   ├── _commonjsHelpers-Cpj98o6Y.js
│   │   │   ├── _plugin-vue_export-helper-DlAUqK2U.js
│   │   │   ├── abilities-_1tR-hmN.js
│   │   │   ├── app-7Sr4fLAQ.css
│   │   │   ├── app-B8BXQiap.js
│   │   │   ├── app-CcekkIPy.css
│   │   │   ├── attributes-BgyqIZFe.js
│   │   │   ├── attributes-manager-Of4dtl9o.js
│   │   │   ├── auth-Bh9mDens.css
│   │   │   ├── auth-DX8SCiWG.js
│   │   │   ├── billing-CAEv3gKN.js
│   │   │   ├── calendar-9Uf0XYJF.js
│   │   │   ├── character-BYzNtBCs.js
│   │   │   ├── coloris-DsKOFKq5.js
│   │   │   ├── colours-Dh8441-n.js
│   │   │   ├── conversation-hoDojmhJ.js
│   │   │   ├── cookieconsent-DM0O5r9k.js
│   │   │   ├── cytoscape-cose-bilkent-DRrwnnKV.js
│   │   │   ├── cytoscape-panzoom-Del_Rz3u.js
│   │   │   ├── cytoscape.esm-BJ4qIETX.js
│   │   │   ├── dark-Pb_2oqsz.css
│   │   │   ├── dashboard-CsClHCyP.css
│   │   │   ├── dashboard-DzoSMhdl.js
│   │   │   ├── dialog-DkrH_pRQ.js
│   │   │   ├── explore-PT_Dl9lc.js
│   │   │   ├── family-tree-vue-BhAkMdmq.js
│   │   │   ├── front-BDaha8uH.js
│   │   │   ├── front-CZW4xdyL.css
│   │   │   ├── gallery-DqcxhMJm.js
│   │   │   ├── history-Bum1jYKg.js
│   │   │   ├── html2canvas.esm-DXEQVQnt.js
│   │   │   ├── import-CRZICNET.js
│   │   │   ├── index-Bajpoqb9.js
│   │   │   ├── index-D5GkNzM3.js
│   │   │   ├── index.es-MeewMCO3.js
│   │   │   ├── index.esm-DvuRQLEU.js
│   │   │   ├── jspdf.es.min-DI22nqbU.js
│   │   │   ├── map-v3-_JE1ac-e.js
│   │   │   ├── maps-7UR0tBUB.css
│   │   │   ├── midnight-DjmKO7Sj.css
│   │   │   ├── preload-helper-I4rgV-VL.js
│   │   │   ├── print-B43HD77n.css
│   │   │   ├── profile-D4XIj8wj.js
│   │   │   ├── purify.es-21m173o_.js
│   │   │   ├── recovery-DDbs8NlV.js
│   │   │   ├── relations-BhqWrOkS.css
│   │   │   ├── relations-DFy0TfK7.js
│   │   │   ├── settings-HvUxJh5V.js
│   │   │   ├── sortable.esm-DdTU3J9A.js
│   │   │   ├── story-CrmLJDK_.js
│   │   │   ├── subscription-BGjwpB-C.css
│   │   │   ├── subscription-CbUaAMac.js
│   │   │   ├── summernote-DpnuH_QU.js
│   │   │   ├── theme-builder-Cvbh2cpO.js
│   │   │   ├── tinymce-C7wRrakS.css
│   │   │   ├── tippy.esm-CnBRltuW.js
│   │   │   ├── tree-Dna4NG6v.css
│   │   │   ├── v-click-outside.umd-Cl-Y_A58.js
│   │   │   ├── vendor-DEuctmxo.css
│   │   │   ├── vendor-final--o6gRmZ3.js
│   │   │   ├── vendor-tiptap-D5xFoo7B.js
│   │   │   ├── vue-tippy.esm-browser-B_r0Ygiv.js
│   │   │   ├── web-C9wt4HvN.css
│   │   │   ├── web-CwwBh20P.js
│   │   │   └── whiteboards-CYwbHh4e.js
│   │   └── manifest.json
│   ├── css/
│   │   ├── bootstrap-summernote.css
│   │   ├── bootstrap.css
│   │   ├── bootstrap.css.br
│   │   └── bootstrap.min.css.br
│   ├── fonts/
│   │   └── roboto/
│   │       ├── OFL.txt
│   │       └── README.txt
│   ├── images/
│   │   └── favicon/
│   │       └── site.webmanifest
│   ├── index.php
│   ├── js/
│   │   ├── vendor.js
│   │   ├── vendor.js.LICENSE.txt
│   │   └── vendor.js.br
│   ├── main.js
│   ├── mix-manifest.json
│   ├── privacypolicy.html
│   └── vendor/
│       ├── binarytorch/
│       │   └── larecipe/
│       │       └── assets/
│       │           ├── css/
│       │           │   ├── app.css
│       │           │   ├── font-awesome-v4-shims.css
│       │           │   └── font-awesome.css
│       │           └── js/
│       │               └── app.js
│       ├── bootstrap/
│       │   ├── css/
│       │   │   ├── bootstrap-grid.css
│       │   │   ├── bootstrap-reboot.css
│       │   │   └── bootstrap.css
│       │   └── js/
│       │       ├── bootstrap.bundle.js
│       │       └── bootstrap.js
│       ├── bootstrap-switch/
│       │   ├── css/
│       │   │   ├── bootstrap2/
│       │   │   │   └── bootstrap-switch.css
│       │   │   └── bootstrap3/
│       │   │       └── bootstrap-switch.css
│       │   └── js/
│       │       └── bootstrap-switch.js
│       ├── codemirror/
│       │   ├── addon/
│       │   │   ├── comment/
│       │   │   │   ├── comment.js
│       │   │   │   └── continuecomment.js
│       │   │   ├── dialog/
│       │   │   │   ├── dialog.css
│       │   │   │   └── dialog.js
│       │   │   ├── display/
│       │   │   │   ├── autorefresh.js
│       │   │   │   ├── fullscreen.css
│       │   │   │   ├── fullscreen.js
│       │   │   │   ├── panel.js
│       │   │   │   ├── placeholder.js
│       │   │   │   └── rulers.js
│       │   │   ├── edit/
│       │   │   │   ├── closebrackets.js
│       │   │   │   ├── closetag.js
│       │   │   │   ├── continuelist.js
│       │   │   │   ├── matchbrackets.js
│       │   │   │   ├── matchtags.js
│       │   │   │   └── trailingspace.js
│       │   │   ├── fold/
│       │   │   │   ├── brace-fold.js
│       │   │   │   ├── comment-fold.js
│       │   │   │   ├── foldcode.js
│       │   │   │   ├── foldgutter.css
│       │   │   │   ├── foldgutter.js
│       │   │   │   ├── indent-fold.js
│       │   │   │   ├── markdown-fold.js
│       │   │   │   └── xml-fold.js
│       │   │   ├── hint/
│       │   │   │   ├── anyword-hint.js
│       │   │   │   ├── css-hint.js
│       │   │   │   ├── html-hint.js
│       │   │   │   ├── javascript-hint.js
│       │   │   │   ├── show-hint.css
│       │   │   │   ├── show-hint.js
│       │   │   │   ├── sql-hint.js
│       │   │   │   └── xml-hint.js
│       │   │   ├── lint/
│       │   │   │   ├── coffeescript-lint.js
│       │   │   │   ├── css-lint.js
│       │   │   │   ├── html-lint.js
│       │   │   │   ├── javascript-lint.js
│       │   │   │   ├── json-lint.js
│       │   │   │   ├── lint.css
│       │   │   │   ├── lint.js
│       │   │   │   └── yaml-lint.js
│       │   │   ├── merge/
│       │   │   │   ├── merge.css
│       │   │   │   └── merge.js
│       │   │   ├── mode/
│       │   │   │   ├── loadmode.js
│       │   │   │   ├── multiplex.js
│       │   │   │   ├── multiplex_test.js
│       │   │   │   ├── overlay.js
│       │   │   │   └── simple.js
│       │   │   ├── runmode/
│       │   │   │   ├── colorize.js
│       │   │   │   ├── runmode-standalone.js
│       │   │   │   ├── runmode.js
│       │   │   │   └── runmode.node.js
│       │   │   ├── scroll/
│       │   │   │   ├── annotatescrollbar.js
│       │   │   │   ├── scrollpastend.js
│       │   │   │   ├── simplescrollbars.css
│       │   │   │   └── simplescrollbars.js
│       │   │   ├── search/
│       │   │   │   ├── jump-to-line.js
│       │   │   │   ├── match-highlighter.js
│       │   │   │   ├── matchesonscrollbar.css
│       │   │   │   ├── matchesonscrollbar.js
│       │   │   │   ├── search.js
│       │   │   │   └── searchcursor.js
│       │   │   ├── selection/
│       │   │   │   ├── active-line.js
│       │   │   │   ├── mark-selection.js
│       │   │   │   └── selection-pointer.js
│       │   │   ├── tern/
│       │   │   │   ├── tern.css
│       │   │   │   ├── tern.js
│       │   │   │   └── worker.js
│       │   │   └── wrap/
│       │   │       └── hardwrap.js
│       │   ├── lib/
│       │   │   ├── codemirror.css
│       │   │   └── codemirror.js
│       │   ├── mode/
│       │   │   ├── css/
│       │   │   │   ├── css.js
│       │   │   │   ├── gss.html
│       │   │   │   ├── gss_test.js
│       │   │   │   ├── index.html
│       │   │   │   ├── less.html
│       │   │   │   ├── less_test.js
│       │   │   │   ├── scss.html
│       │   │   │   ├── scss_test.js
│       │   │   │   └── test.js
│       │   │   ├── htmlmixed/
│       │   │   │   ├── htmlmixed.js
│       │   │   │   └── index.html
│       │   │   └── xml/
│       │   │       ├── index.html
│       │   │       ├── test.js
│       │   │       └── xml.js
│       │   └── theme/
│       │       ├── 3024-day.css
│       │       ├── 3024-night.css
│       │       ├── abbott.css
│       │       ├── abcdef.css
│       │       ├── ambiance-mobile.css
│       │       ├── ambiance.css
│       │       ├── ayu-dark.css
│       │       ├── ayu-mirage.css
│       │       ├── base16-dark.css
│       │       ├── base16-light.css
│       │       ├── bespin.css
│       │       ├── blackboard.css
│       │       ├── cobalt.css
│       │       ├── colorforth.css
│       │       ├── darcula.css
│       │       ├── dracula.css
│       │       ├── duotone-dark.css
│       │       ├── duotone-light.css
│       │       ├── eclipse.css
│       │       ├── elegant.css
│       │       ├── erlang-dark.css
│       │       ├── gruvbox-dark.css
│       │       ├── hopscotch.css
│       │       ├── icecoder.css
│       │       ├── idea.css
│       │       ├── isotope.css
│       │       ├── juejin.css
│       │       ├── lesser-dark.css
│       │       ├── liquibyte.css
│       │       ├── lucario.css
│       │       ├── material-darker.css
│       │       ├── material-ocean.css
│       │       ├── material-palenight.css
│       │       ├── material.css
│       │       ├── mbo.css
│       │       ├── mdn-like.css
│       │       ├── midnight.css
│       │       ├── monokai.css
│       │       ├── moxer.css
│       │       ├── neat.css
│       │       ├── neo.css
│       │       ├── night.css
│       │       ├── nord.css
│       │       ├── oceanic-next.css
│       │       ├── panda-syntax.css
│       │       ├── paraiso-dark.css
│       │       ├── paraiso-light.css
│       │       ├── pastel-on-dark.css
│       │       ├── railscasts.css
│       │       ├── rubyblue.css
│       │       ├── seti.css
│       │       ├── shadowfox.css
│       │       ├── solarized.css
│       │       ├── ssms.css
│       │       ├── the-matrix.css
│       │       ├── tomorrow-night-bright.css
│       │       ├── tomorrow-night-eighties.css
│       │       ├── ttcn.css
│       │       ├── twilight.css
│       │       ├── vibrant-ink.css
│       │       ├── xq-dark.css
│       │       ├── xq-light.css
│       │       ├── yeti.css
│       │       ├── yonce.css
│       │       └── zenburn.css
│       ├── dnd5emonster/
│       │   ├── css/
│       │   │   └── template.css
│       │   └── js/
│       │       └── template.js
│       ├── fontawesome/
│       │   └── 6.0.0/
│       │       ├── LICENSE.txt
│       │       ├── css/
│       │       │   ├── all.css
│       │       │   ├── brands.css
│       │       │   ├── fontawesome.css
│       │       │   ├── regular.css
│       │       │   ├── solid.css
│       │       │   ├── svg-with-js.css
│       │       │   ├── v4-font-face.css
│       │       │   ├── v4-shims.css
│       │       │   └── v5-font-face.css
│       │       ├── js/
│       │       │   ├── all.js
│       │       │   ├── brands.js
│       │       │   ├── conflict-detection.js
│       │       │   ├── fontawesome.js
│       │       │   ├── regular.js
│       │       │   ├── solid.js
│       │       │   └── v4-shims.js
│       │       ├── less/
│       │       │   ├── _animated.less
│       │       │   ├── _bordered-pulled.less
│       │       │   ├── _core.less
│       │       │   ├── _fixed-width.less
│       │       │   ├── _icons.less
│       │       │   ├── _list.less
│       │       │   ├── _mixins.less
│       │       │   ├── _rotated-flipped.less
│       │       │   ├── _screen-reader.less
│       │       │   ├── _shims.less
│       │       │   ├── _sizing.less
│       │       │   ├── _stacked.less
│       │       │   ├── _variables.less
│       │       │   ├── brands.less
│       │       │   ├── fontawesome.less
│       │       │   ├── regular.less
│       │       │   ├── solid.less
│       │       │   └── v4-shims.less
│       │       └── scss/
│       │           ├── _animated.scss
│       │           ├── _bordered-pulled.scss
│       │           ├── _core.scss
│       │           ├── _fixed-width.scss
│       │           ├── _functions.scss
│       │           ├── _icons.scss
│       │           ├── _list.scss
│       │           ├── _mixins.scss
│       │           ├── _rotated-flipped.scss
│       │           ├── _screen-reader.scss
│       │           ├── _shims.scss
│       │           ├── _sizing.scss
│       │           ├── _stacked.scss
│       │           ├── _variables.scss
│       │           ├── brands.scss
│       │           ├── fontawesome.scss
│       │           ├── regular.scss
│       │           ├── solid.scss
│       │           └── v4-shims.scss
│       ├── laravel-translation-manager/
│       │   ├── css/
│       │   │   ├── index.css
│       │   │   └── translations.css
│       │   └── js/
│       │       ├── index.js
│       │       ├── inflection.js
│       │       ├── rails.async.js
│       │       ├── rails.js
│       │       ├── translations.js
│       │       ├── translations_page.js
│       │       └── xregexp-all.js
│       ├── leaflet/
│       │   ├── leaflet-polyline-measure.js
│       │   ├── leaflet.editable.js
│       │   ├── leaflet.layerstree.css
│       │   ├── leaflet.layerstree.js
│       │   ├── leaflet.markercluster.js
│       │   ├── leaflet.markercluster.layersupport.js
│       │   ├── leaflet.path.drag.js
│       │   ├── leaflet.ruler-kanka.js
│       │   ├── leaflet.ruler.js
│       │   ├── leaflet.zoomcss.js
│       │   └── leaflet.zoomdisplay.js
│       ├── summernote/
│       │   ├── 0.9.1/
│       │   │   ├── font/
│       │   │   │   └── summernote.hash
│       │   │   ├── lang/
│       │   │   │   ├── summernote-ar-AR.js
│       │   │   │   ├── summernote-az-AZ.js
│       │   │   │   ├── summernote-bg-BG.js
│       │   │   │   ├── summernote-bn-BD.js
│       │   │   │   ├── summernote-ca-ES.js
│       │   │   │   ├── summernote-cs-CZ.js
│       │   │   │   ├── summernote-da-DK.js
│       │   │   │   ├── summernote-de-CH.js
│       │   │   │   ├── summernote-de-DE.js
│       │   │   │   ├── summernote-el-GR.js
│       │   │   │   ├── summernote-en-US.js
│       │   │   │   ├── summernote-es-ES.js
│       │   │   │   ├── summernote-es-EU.js
│       │   │   │   ├── summernote-fa-IR.js
│       │   │   │   ├── summernote-fi-FI.js
│       │   │   │   ├── summernote-fr-FR.js
│       │   │   │   ├── summernote-gl-ES.js
│       │   │   │   ├── summernote-he-IL.js
│       │   │   │   ├── summernote-hr-HR.js
│       │   │   │   ├── summernote-hu-HU.js
│       │   │   │   ├── summernote-id-ID.js
│       │   │   │   ├── summernote-it-IT.js
│       │   │   │   ├── summernote-ja-JP.js
│       │   │   │   ├── summernote-ko-KR.js
│       │   │   │   ├── summernote-lt-LT.js
│       │   │   │   ├── summernote-lt-LV.js
│       │   │   │   ├── summernote-mn-MN.js
│       │   │   │   ├── summernote-nb-NO.js
│       │   │   │   ├── summernote-nl-NL.js
│       │   │   │   ├── summernote-pl-PL.js
│       │   │   │   ├── summernote-pt-BR.js
│       │   │   │   ├── summernote-pt-PT.js
│       │   │   │   ├── summernote-ro-RO.js
│       │   │   │   ├── summernote-ru-RU.js
│       │   │   │   ├── summernote-sk-SK.js
│       │   │   │   ├── summernote-sl-SI.js
│       │   │   │   ├── summernote-sr-RS-Latin.js
│       │   │   │   ├── summernote-sr-RS.js
│       │   │   │   ├── summernote-sv-SE.js
│       │   │   │   ├── summernote-ta-IN.js
│       │   │   │   ├── summernote-th-TH.js
│       │   │   │   ├── summernote-tr-TR.js
│       │   │   │   ├── summernote-uk-UA.js
│       │   │   │   ├── summernote-uz-UZ.js
│       │   │   │   ├── summernote-vi-VN.js
│       │   │   │   ├── summernote-zh-CN.js
│       │   │   │   └── summernote-zh-TW.js
│       │   │   ├── plugin/
│       │   │   │   ├── databasic/
│       │   │   │   │   ├── summernote-ext-databasic.css
│       │   │   │   │   └── summernote-ext-databasic.js
│       │   │   │   ├── hello/
│       │   │   │   │   └── summernote-ext-hello.js
│       │   │   │   └── specialchars/
│       │   │   │       └── summernote-ext-specialchars.js
│       │   │   ├── summernote-bs4.css
│       │   │   ├── summernote-bs4.js
│       │   │   ├── summernote-bs5.css
│       │   │   ├── summernote-bs5.js
│       │   │   ├── summernote-lite.css
│       │   │   ├── summernote-lite.js
│       │   │   ├── summernote.css
│       │   │   └── summernote.js
│       │   ├── lang/
│       │   │   ├── summernote-ar-AR.js
│       │   │   ├── summernote-ar-AR.min.js.LICENSE.txt
│       │   │   ├── summernote-az-AZ.js
│       │   │   ├── summernote-az-AZ.min.js.LICENSE.txt
│       │   │   ├── summernote-bg-BG.js
│       │   │   ├── summernote-bg-BG.min.js.LICENSE.txt
│       │   │   ├── summernote-ca-ES.js
│       │   │   ├── summernote-ca-ES.min.js.LICENSE.txt
│       │   │   ├── summernote-cs-CZ.js
│       │   │   ├── summernote-cs-CZ.min.js.LICENSE.txt
│       │   │   ├── summernote-da-DK.js
│       │   │   ├── summernote-da-DK.min.js.LICENSE.txt
│       │   │   ├── summernote-de-DE.js
│       │   │   ├── summernote-de-DE.min.js.LICENSE.txt
│       │   │   ├── summernote-el-GR.js
│       │   │   ├── summernote-el-GR.min.js.LICENSE.txt
│       │   │   ├── summernote-es-ES.js
│       │   │   ├── summernote-es-ES.min.js.LICENSE.txt
│       │   │   ├── summernote-es-EU.js
│       │   │   ├── summernote-es-EU.min.js.LICENSE.txt
│       │   │   ├── summernote-fa-IR.js
│       │   │   ├── summernote-fa-IR.min.js.LICENSE.txt
│       │   │   ├── summernote-fi-FI.js
│       │   │   ├── summernote-fi-FI.min.js.LICENSE.txt
│       │   │   ├── summernote-fr-FR.js
│       │   │   ├── summernote-fr-FR.min.js.LICENSE.txt
│       │   │   ├── summernote-gl-ES.js
│       │   │   ├── summernote-gl-ES.min.js.LICENSE.txt
│       │   │   ├── summernote-he-IL.js
│       │   │   ├── summernote-he-IL.min.js.LICENSE.txt
│       │   │   ├── summernote-hr-HR.js
│       │   │   ├── summernote-hr-HR.min.js.LICENSE.txt
│       │   │   ├── summernote-hu-HU.js
│       │   │   ├── summernote-hu-HU.min.js.LICENSE.txt
│       │   │   ├── summernote-id-ID.js
│       │   │   ├── summernote-id-ID.min.js.LICENSE.txt
│       │   │   ├── summernote-it-IT.js
│       │   │   ├── summernote-it-IT.min.js.LICENSE.txt
│       │   │   ├── summernote-ja-JP.js
│       │   │   ├── summernote-ja-JP.min.js.LICENSE.txt
│       │   │   ├── summernote-ko-KR.js
│       │   │   ├── summernote-ko-KR.min.js.LICENSE.txt
│       │   │   ├── summernote-lt-LT.js
│       │   │   ├── summernote-lt-LT.min.js.LICENSE.txt
│       │   │   ├── summernote-lt-LV.js
│       │   │   ├── summernote-lt-LV.min.js.LICENSE.txt
│       │   │   ├── summernote-mn-MN.js
│       │   │   ├── summernote-mn-MN.min.js.LICENSE.txt
│       │   │   ├── summernote-nb-NO.js
│       │   │   ├── summernote-nb-NO.min.js.LICENSE.txt
│       │   │   ├── summernote-nl-NL.js
│       │   │   ├── summernote-nl-NL.min.js.LICENSE.txt
│       │   │   ├── summernote-pl-PL.js
│       │   │   ├── summernote-pl-PL.min.js.LICENSE.txt
│       │   │   ├── summernote-pt-BR.js
│       │   │   ├── summernote-pt-BR.min.js.LICENSE.txt
│       │   │   ├── summernote-pt-PT.js
│       │   │   ├── summernote-pt-PT.min.js.LICENSE.txt
│       │   │   ├── summernote-ro-RO.js
│       │   │   ├── summernote-ro-RO.min.js.LICENSE.txt
│       │   │   ├── summernote-ru-RU.js
│       │   │   ├── summernote-ru-RU.min.js.LICENSE.txt
│       │   │   ├── summernote-sk-SK.js
│       │   │   ├── summernote-sk-SK.min.js.LICENSE.txt
│       │   │   ├── summernote-sl-SI.js
│       │   │   ├── summernote-sl-SI.min.js.LICENSE.txt
│       │   │   ├── summernote-sr-RS-Latin.js
│       │   │   ├── summernote-sr-RS-Latin.min.js.LICENSE.txt
│       │   │   ├── summernote-sr-RS.js
│       │   │   ├── summernote-sr-RS.min.js.LICENSE.txt
│       │   │   ├── summernote-sv-SE.js
│       │   │   ├── summernote-sv-SE.min.js.LICENSE.txt
│       │   │   ├── summernote-ta-IN.js
│       │   │   ├── summernote-ta-IN.min.js.LICENSE.txt
│       │   │   ├── summernote-th-TH.js
│       │   │   ├── summernote-th-TH.min.js.LICENSE.txt
│       │   │   ├── summernote-tr-TR.js
│       │   │   ├── summernote-tr-TR.min.js.LICENSE.txt
│       │   │   ├── summernote-uk-UA.js
│       │   │   ├── summernote-uk-UA.min.js.LICENSE.txt
│       │   │   ├── summernote-uz-UZ.js
│       │   │   ├── summernote-uz-UZ.min.js.LICENSE.txt
│       │   │   ├── summernote-vi-VN.js
│       │   │   ├── summernote-vi-VN.min.js.LICENSE.txt
│       │   │   ├── summernote-zh-CN.js
│       │   │   ├── summernote-zh-CN.min.js.LICENSE.txt
│       │   │   ├── summernote-zh-TW.js
│       │   │   └── summernote-zh-TW.min.js.LICENSE.txt
│       │   ├── plugin/
│       │   │   ├── databasic/
│       │   │   │   ├── summernote-ext-databasic.css
│       │   │   │   └── summernote-ext-databasic.js
│       │   │   ├── embed/
│       │   │   │   └── summernote-embed-plugin.js
│       │   │   ├── hello/
│       │   │   │   └── summernote-ext-hello.js
│       │   │   ├── rtl/
│       │   │   │   └── summernote-ext-rtl.js
│       │   │   ├── specialchars/
│       │   │   │   └── summernote-ext-specialchars.js
│       │   │   ├── summernote-aroba-kanka/
│       │   │   │   └── summernote-aroba.js
│       │   │   ├── summernote-image-attribute.js
│       │   │   ├── summernote-table-ext.js
│       │   │   ├── summernote-table-headers/
│       │   │   │   ├── Example/
│       │   │   │   │   └── example.html
│       │   │   │   ├── LICENSE
│       │   │   │   ├── README.md
│       │   │   │   └── summernote-table-headers.js
│       │   │   ├── summernote-table-styles/
│       │   │   │   ├── Example/
│       │   │   │   │   └── example.html
│       │   │   │   ├── LICENSE
│       │   │   │   ├── README.md
│       │   │   │   └── summernote-table-styles.js
│       │   │   ├── summernote-toc-kanka/
│       │   │   │   └── summernote-toc.js
│       │   │   └── summernote-toc.js
│       │   ├── summernote-bs4.css
│       │   ├── summernote-bs4.js
│       │   ├── summernote-bs4.min.js.LICENSE.txt
│       │   ├── summernote-lite.css
│       │   ├── summernote-lite.js
│       │   ├── summernote-lite.min.js.LICENSE.txt
│       │   ├── summernote.css
│       │   ├── summernote.js
│       │   └── summernote.min.js.LICENSE.txt
│       └── telescope/
│           ├── app-dark.css
│           ├── app.css
│           ├── app.js
│           └── mix-manifest.json
├── resources/
│   ├── api-docs/
│   │   └── 1.0/
│   │       ├── abilities.md
│   │       ├── archives.md
│   │       ├── attribute-templates.md
│   │       ├── bookmarks.md
│   │       ├── calendar-weathers.md
│   │       ├── calendars.md
│   │       ├── campaigns/
│   │       │   ├── applications.md
│   │       │   ├── categories.md
│   │       │   ├── dashboard-widgets.md
│   │       │   ├── default-thumbnails.md
│   │       │   ├── images.md
│   │       │   ├── members.md
│   │       │   ├── modules.md
│   │       │   ├── roles.md
│   │       │   ├── statuses.md
│   │       │   └── styles.md
│   │       ├── campaigns.md
│   │       ├── characters.md
│   │       ├── conversations.md
│   │       ├── creatures.md
│   │       ├── dice-rolls.md
│   │       ├── entities/
│   │       │   ├── attributes.md
│   │       │   ├── connections.md
│   │       │   ├── entity-abilities.md
│   │       │   ├── entity-aliases.md
│   │       │   ├── entity-assets.md
│   │       │   ├── entity-files.md
│   │       │   ├── entity-image.md
│   │       │   ├── entity-inventory.md
│   │       │   ├── entity-links.md
│   │       │   ├── entity-mentions.md
│   │       │   ├── entity-permissions.md
│   │       │   ├── entity-tags.md
│   │       │   ├── entity-types.md
│   │       │   ├── posts.md
│   │       │   ├── reminders.md
│   │       │   └── templates.md
│   │       ├── entities.md
│   │       ├── events.md
│   │       ├── families.md
│   │       ├── index.md
│   │       ├── items.md
│   │       ├── journals.md
│   │       ├── locations.md
│   │       ├── map_groups.md
│   │       ├── map_layers.md
│   │       ├── map_markers.md
│   │       ├── maps.md
│   │       ├── misc/
│   │       │   ├── filters.md
│   │       │   ├── last-sync.md
│   │       │   ├── pagination.md
│   │       │   ├── permissions-test.md
│   │       │   └── visibilities.md
│   │       ├── notes.md
│   │       ├── organisation-members.md
│   │       ├── organisations.md
│   │       ├── overview.md
│   │       ├── post-layout.md
│   │       ├── profile.md
│   │       ├── quests.md
│   │       ├── races.md
│   │       ├── relations.md
│   │       ├── search.md
│   │       ├── setup.md
│   │       ├── tags.md
│   │       ├── timeline-elements.md
│   │       ├── timeline-eras.md
│   │       ├── timelines.md
│   │       └── troubleshooting.md
│   ├── assets/
│   │   └── components/
│   │       └── rpg/
│   │           └── scss/
│   │               ├── .scss-lint.yml
│   │               ├── _bordered-pulled.scss
│   │               ├── _core.scss
│   │               ├── _fixed-width.scss
│   │               ├── _icons.scss
│   │               ├── _larger.scss
│   │               ├── _list.scss
│   │               ├── _mixins.scss
│   │               ├── _path.scss
│   │               ├── _rotated-flipped.scss
│   │               ├── _spinning.scss
│   │               ├── _stacked.scss
│   │               ├── _variables.scss
│   │               └── rpg-awesome.scss
│   ├── css/
│   │   ├── alerts.css
│   │   ├── app.css
│   │   ├── attributes/
│   │   │   └── attributes.css
│   │   ├── auth.css
│   │   ├── badge.css
│   │   ├── buttons.css
│   │   ├── calendar.css
│   │   ├── campaign.css
│   │   ├── code.css
│   │   ├── dashboard.css
│   │   ├── entity.css
│   │   ├── families/
│   │   │   └── tree.css
│   │   ├── freyja/
│   │   │   ├── freyja.css
│   │   │   ├── header.css
│   │   │   └── sidebar.css
│   │   ├── front.css
│   │   ├── html/
│   │   │   ├── dialog.css
│   │   │   ├── dl.css
│   │   │   ├── summary.css
│   │   │   └── table.css
│   │   ├── maps/
│   │   │   ├── leaflet.zoomdisplay.css
│   │   │   └── maps.css
│   │   ├── mobile.css
│   │   ├── premium.css
│   │   ├── print/
│   │   │   ├── general.css
│   │   │   └── print.css
│   │   ├── quest.css
│   │   ├── quick-creator.css
│   │   ├── range.css
│   │   ├── relations.css
│   │   ├── sortable.css
│   │   ├── subscription.css
│   │   ├── tabs.css
│   │   ├── themes/
│   │   │   ├── base.css
│   │   │   ├── colour.css
│   │   │   ├── dark.css
│   │   │   ├── light.css
│   │   │   └── midnight.css
│   │   ├── timeline.css
│   │   ├── toast.css
│   │   ├── toggle.css
│   │   ├── tooltip.css
│   │   ├── typography.css
│   │   ├── vendor.css
│   │   └── vendors/
│   │       ├── adminlte.css
│   │       ├── editor.css
│   │       └── tinymce.css
│   ├── js/
│   │   ├── abilities.js
│   │   ├── ads.js
│   │   ├── animations.js
│   │   ├── app.js
│   │   ├── attributes-manager.js
│   │   ├── attributes.js
│   │   ├── auth.js
│   │   ├── banner.js
│   │   ├── billing.js
│   │   ├── bookmarks.js
│   │   ├── calendar.js
│   │   ├── campaign.js
│   │   ├── campaigns/
│   │   │   ├── import.js
│   │   │   └── theme-builder.js
│   │   ├── clipboard.js
│   │   ├── components/
│   │   │   ├── Dropdown.vue
│   │   │   ├── abilities/
│   │   │   │   ├── Abilities.vue
│   │   │   │   ├── Ability.vue
│   │   │   │   └── Parent.vue
│   │   │   ├── attributes/
│   │   │   │   ├── Attribute.vue
│   │   │   │   ├── Form.vue
│   │   │   │   ├── Manager.vue
│   │   │   │   └── MentionField.vue
│   │   │   ├── connections/
│   │   │   │   └── Web.vue
│   │   │   ├── conversation/
│   │   │   │   ├── Conversation.vue
│   │   │   │   ├── Form.vue
│   │   │   │   ├── Message.vue
│   │   │   │   └── Messages.vue
│   │   │   ├── delete-confirm.js
│   │   │   ├── families/
│   │   │   │   ├── ChildrenLine.vue
│   │   │   │   ├── FamilyChildren.vue
│   │   │   │   ├── FamilyEntity.vue
│   │   │   │   ├── FamilyNode.vue
│   │   │   │   ├── FamilyParentChildrenLine.vue
│   │   │   │   ├── FamilyRelation.vue
│   │   │   │   ├── FamilyRelations.vue
│   │   │   │   ├── FamilyTree.vue
│   │   │   │   └── RelationLine.vue
│   │   │   ├── fields/
│   │   │   │   ├── AliasPill.vue
│   │   │   │   ├── EntityName.vue
│   │   │   │   └── SimilarEntityAlert.vue
│   │   │   ├── icons/
│   │   │   │   └── GridSvg.vue
│   │   │   ├── layout/
│   │   │   │   ├── Campaign.vue
│   │   │   │   ├── Lookup/
│   │   │   │   │   ├── EntityPreview.vue
│   │   │   │   │   ├── LookupEntity.vue
│   │   │   │   │   └── LookupPage.vue
│   │   │   │   ├── NavSearch.vue
│   │   │   │   ├── NavSwitcher.vue
│   │   │   │   ├── NavToggler.vue
│   │   │   │   ├── Notification.vue
│   │   │   │   └── Release.vue
│   │   │   ├── select2.js
│   │   │   ├── subscription/
│   │   │   │   └── BillingManagement.vue
│   │   │   └── whiteboards/
│   │   │       ├── Entity.vue
│   │   │       ├── EntitySearch.vue
│   │   │       ├── Reset.vue
│   │   │       ├── Settings.vue
│   │   │       └── Whiteboard.vue
│   │   ├── composables/
│   │   │   └── useEntitySimilarity.js
│   │   ├── connections/
│   │   │   └── web.js
│   │   ├── conversation.js
│   │   ├── cookieconsent.js
│   │   ├── crud.js
│   │   ├── dashboard.js
│   │   ├── dashboards/
│   │   │   ├── onboarding/
│   │   │   │   ├── Onboarding.vue
│   │   │   │   └── onboarding.js
│   │   │   └── widgets/
│   │   │       └── getting-started/
│   │   │           └── GettingStarted.vue
│   │   ├── datagrids.js
│   │   ├── datagrids2.js
│   │   ├── echo.js
│   │   ├── editors/
│   │   │   ├── summernote.js
│   │   │   └── tiptap/
│   │   │       ├── SourceEditor.vue
│   │   │       ├── Tiptap.vue
│   │   │       ├── bubblemenus/
│   │   │       │   ├── ColorPicker.vue
│   │   │       │   ├── ImageBubbleMenu.vue
│   │   │       │   ├── LinkBubbleMenu.vue
│   │   │       │   ├── MentionBubbleMenu.vue
│   │   │       │   ├── TableBubbleMenu.vue
│   │   │       │   └── TextBubbleMenu.vue
│   │   │       ├── extensions/
│   │   │       │   ├── CustomHeading.ts
│   │   │       │   ├── CustomImage.ts
│   │   │       │   ├── Details.ts
│   │   │       │   ├── DetailsWrapper.vue
│   │   │       │   ├── Div.ts
│   │   │       │   ├── Iframe.ts
│   │   │       │   ├── gallery/
│   │   │       │   │   ├── Gallery.ts
│   │   │       │   │   └── GalleryDialog.vue
│   │   │       │   ├── images/
│   │   │       │   │   ├── Image.ts
│   │   │       │   │   └── Images.vue
│   │   │       │   ├── mentions/
│   │   │       │   │   ├── Mention.ts
│   │   │       │   │   ├── MentionList.vue
│   │   │       │   │   ├── MentionParser.ts
│   │   │       │   │   └── suggestion.ts
│   │   │       │   ├── slashcommand/
│   │   │       │   │   ├── SlashCommand.ts
│   │   │       │   │   ├── SlashCommandList.vue
│   │   │       │   │   └── suggestion.ts
│   │   │       │   └── table/
│   │   │       │       ├── CustomTableCell.ts
│   │   │       │       ├── CustomTableHeader.ts
│   │   │       │       └── TableWithControls.ts
│   │   │       ├── index.js
│   │   │       ├── toolbar/
│   │   │       │   └── Button.vue
│   │   │       └── utils.ts
│   │   ├── entities/
│   │   │   ├── EntityAdSlot.vue
│   │   │   ├── EntityCard.vue
│   │   │   ├── EntityGrid.vue
│   │   │   ├── EntityListing.vue
│   │   │   ├── EntityRow.vue
│   │   │   ├── EntityTable.vue
│   │   │   ├── composables/
│   │   │   │   ├── useBulkActions.ts
│   │   │   │   ├── useColumns.ts
│   │   │   │   ├── useEntityApi.ts
│   │   │   │   ├── useLayout.ts
│   │   │   │   ├── useLongPress.ts
│   │   │   │   ├── useNesting.ts
│   │   │   │   ├── useOrdering.ts
│   │   │   │   └── usePerPage.ts
│   │   │   └── explore.js
│   │   ├── entities.js
│   │   ├── events.js
│   │   ├── family-tree-vue.js
│   │   ├── forms/
│   │   │   ├── calendar-date.js
│   │   │   ├── calendar.js
│   │   │   ├── character.js
│   │   │   └── entity-name.js
│   │   ├── front.js
│   │   ├── gallery/
│   │   │   ├── Browser.vue
│   │   │   ├── File.vue
│   │   │   ├── Gallery.vue
│   │   │   ├── Preview.vue
│   │   │   ├── Selection.vue
│   │   │   ├── gallery.js
│   │   │   └── selection.js
│   │   ├── header.js
│   │   ├── history.js
│   │   ├── keep-alive.js
│   │   ├── keyboard.js
│   │   ├── location/
│   │   │   └── map-v3.js
│   │   ├── maintenance.js
│   │   ├── members.js
│   │   ├── post.js
│   │   ├── profile.js
│   │   ├── quick-creator.js
│   │   ├── recovery/
│   │   │   ├── Element.vue
│   │   │   ├── Recovery.vue
│   │   │   └── recovery.js
│   │   ├── relations.js
│   │   ├── settings.js
│   │   ├── share.js
│   │   ├── story.js
│   │   ├── subscription.js
│   │   ├── tags.js
│   │   ├── timelines.js
│   │   ├── toast.js
│   │   ├── utility/
│   │   │   ├── CampaignShareModal.vue
│   │   │   ├── EntityShareModal.vue
│   │   │   ├── colour-picker.js
│   │   │   ├── colours.ts
│   │   │   ├── dialog.js
│   │   │   ├── formError.js
│   │   │   ├── sortable.js
│   │   │   └── tippy.js
│   │   ├── vendor-final.js
│   │   ├── vendor.js
│   │   ├── visibility-picker.js
│   │   ├── webhooks.js
│   │   └── whiteboards.js
│   ├── vendor/
│   │   └── tinymce/
│   │       ├── langs/
│   │       │   ├── ca.js
│   │       │   ├── de.js
│   │       │   ├── es.js
│   │       │   ├── fr.js
│   │       │   ├── he.js
│   │       │   ├── hr.js
│   │       │   ├── hu.js
│   │       │   ├── it.js
│   │       │   ├── nl.js
│   │       │   ├── pt-BR.js
│   │       │   ├── readme.md
│   │       │   ├── ru.js
│   │       │   └── sk.js
│   │       └── plugins/
│   │           └── mention/
│   │               ├── .gitignore
│   │               ├── .jshintrc
│   │               ├── .travis.yml
│   │               ├── README.md
│   │               ├── bower.json
│   │               ├── css/
│   │               │   ├── autocomplete.css
│   │               │   └── rte-content.css
│   │               ├── examples/
│   │               │   └── commonjs/
│   │               │       ├── .gitignore
│   │               │       ├── index.html
│   │               │       ├── main.js
│   │               │       ├── package.json
│   │               │       └── webpack.config.js
│   │               ├── gulpfile.js
│   │               ├── mention/
│   │               │   └── plugin.js
│   │               ├── package.json
│   │               ├── plugin.js
│   │               └── tests/
│   │                   ├── test_mention.js
│   │                   └── test_runner.html
│   └── views/
│       ├── abilities/
│       │   ├── abilities.blade.php
│       │   ├── entities/
│       │   │   ├── _form.blade.php
│       │   │   ├── actions/
│       │   │   │   └── delete.blade.php
│       │   │   └── create.blade.php
│       │   ├── entities.blade.php
│       │   ├── form/
│       │   │   └── _entry.blade.php
│       │   ├── panels/
│       │   │   ├── abilities.blade.php
│       │   │   └── entities.blade.php
│       │   └── show.blade.php
│       ├── account/
│       │   ├── billing/
│       │   │   └── information/
│       │   │       ├── _form.blade.php
│       │   │       └── form.blade.php
│       │   ├── email/
│       │   │   ├── _form.blade.php
│       │   │   └── form.blade.php
│       │   ├── password/
│       │   │   ├── _form.blade.php
│       │   │   └── form.blade.php
│       │   └── social/
│       │       └── form.blade.php
│       ├── ads/
│       │   ├── anchor.blade.php
│       │   ├── cta.blade.php
│       │   ├── inline.blade.php
│       │   ├── nitro/
│       │   │   └── styles.blade.php
│       │   ├── siderail_left.blade.php
│       │   ├── siderail_right.blade.php
│       │   ├── table.blade.php
│       │   ├── top.blade.php
│       │   └── video.blade.php
│       ├── attribute_templates/
│       │   ├── datagrid.blade.php
│       │   ├── form/
│       │   │   └── _entry.blade.php
│       │   └── show.blade.php
│       ├── auth/
│       │   ├── login.blade.php
│       │   ├── otp.blade.php
│       │   ├── passwords/
│       │   │   ├── confirm.blade.php
│       │   │   ├── email.blade.php
│       │   │   └── reset.blade.php
│       │   └── register.blade.php
│       ├── billing/
│       │   ├── history.blade.php
│       │   └── payment-method.blade.php
│       ├── bookmarks/
│       │   ├── datagrid.blade.php
│       │   ├── forms/
│       │   │   ├── _dashboard.blade.php
│       │   │   ├── _entity.blade.php
│       │   │   ├── _entry.blade.php
│       │   │   ├── _random.blade.php
│       │   │   ├── _type.blade.php
│       │   │   ├── create.blade.php
│       │   │   └── edit.blade.php
│       │   └── reorder.blade.php
│       ├── calendars/
│       │   ├── _calendar.blade.php
│       │   ├── _day.blade.php
│       │   ├── _intercalary.blade.php
│       │   ├── _week.blade.php
│       │   ├── events.blade.php
│       │   ├── form/
│       │   │   ├── _calendar.blade.php
│       │   │   ├── _entry.blade.php
│       │   │   ├── _months.blade.php
│       │   │   ├── _moons.blade.php
│       │   │   ├── _panes.blade.php
│       │   │   ├── _seasons.blade.php
│       │   │   ├── _tabs.blade.php
│       │   │   └── _weeks.blade.php
│       │   ├── panels/
│       │   │   └── events.blade.php
│       │   ├── reminders/
│       │   │   ├── _entity_form.blade.php
│       │   │   ├── _form.blade.php
│       │   │   ├── _subform.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── create_from_entity.blade.php
│       │   │   └── edit.blade.php
│       │   ├── show.blade.php
│       │   ├── weather/
│       │   │   ├── _form.blade.php
│       │   │   ├── create.blade.php
│       │   │   └── edit.blade.php
│       │   └── year-switcher/
│       │       └── _footer.blade.php
│       ├── campaigns/
│       │   ├── _overview.blade.php
│       │   ├── achievements/
│       │   │   ├── _finished.blade.php
│       │   │   ├── _locked.blade.php
│       │   │   └── index.blade.php
│       │   ├── applications/
│       │   │   ├── _apply.blade.php
│       │   │   ├── _list.blade.php
│       │   │   ├── _requirements.blade.php
│       │   │   ├── _toggle.blade.php
│       │   │   ├── _toggle_form.blade.php
│       │   │   ├── _view.blade.php
│       │   │   ├── apply.blade.php
│       │   │   ├── dashboard_widget.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── index.blade.php
│       │   │   ├── setup.blade.php
│       │   │   ├── show.blade.php
│       │   │   └── view.blade.php
│       │   ├── default-images/
│       │   │   ├── _form.blade.php
│       │   │   ├── _thumbnail.blade.php
│       │   │   ├── create.blade.php
│       │   │   └── index.blade.php
│       │   ├── defaults/
│       │   │   └── index.blade.php
│       │   ├── delete.blade.php
│       │   ├── entity-types/
│       │   │   ├── _actions.blade.php
│       │   │   ├── _form.blade.php
│       │   │   ├── box/
│       │   │   │   ├── custom.blade.php
│       │   │   │   ├── default.blade.php
│       │   │   │   └── new.blade.php
│       │   │   ├── confirm.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── max-reached.blade.php
│       │   │   └── not-premium.blade.php
│       │   ├── export.blade.php
│       │   ├── forms/
│       │   │   ├── _tabs.blade.php
│       │   │   ├── _visibility.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── dashboard-header/
│       │   │   │   ├── _form.blade.php
│       │   │   │   └── edit.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── modals/
│       │   │   │   ├── _image.blade.php
│       │   │   │   ├── _visibility-form.blade.php
│       │   │   │   ├── image.blade.php
│       │   │   │   └── visibility.blade.php
│       │   │   ├── panes/
│       │   │   │   ├── _discovery.blade.php
│       │   │   │   ├── dashboard.blade.php
│       │   │   │   ├── entry.blade.php
│       │   │   │   ├── public.blade.php
│       │   │   │   └── ui.blade.php
│       │   │   └── standard.blade.php
│       │   ├── import/
│       │   │   ├── index.blade.php
│       │   │   └── process-csv.blade.php
│       │   ├── invites/
│       │   │   ├── _form.blade.php
│       │   │   └── create.blade.php
│       │   ├── leave/
│       │   │   ├── _actions.blade.php
│       │   │   └── _body.blade.php
│       │   ├── leave.blade.php
│       │   ├── logs/
│       │   │   ├── _list.blade.php
│       │   │   └── index.blade.php
│       │   ├── markdown.blade.php
│       │   ├── members/
│       │   │   ├── _form.blade.php
│       │   │   ├── _invites.blade.php
│       │   │   ├── delete.blade.php
│       │   │   ├── index.blade.php
│       │   │   └── update.blade.php
│       │   ├── modules/
│       │   │   ├── _custom.blade.php
│       │   │   ├── _default.blade.php
│       │   │   ├── _features.blade.php
│       │   │   ├── _form.blade.php
│       │   │   ├── box.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── index.blade.php
│       │   │   └── not-premium.blade.php
│       │   ├── plugins/
│       │   │   ├── confirm.blade.php
│       │   │   ├── index.blade.php
│       │   │   └── info.blade.php
│       │   ├── plugins.blade.php
│       │   ├── recovery/
│       │   │   └── index.blade.php
│       │   ├── roles/
│       │   │   ├── _form.blade.php
│       │   │   ├── _members.blade.php
│       │   │   ├── _pretty.blade.php
│       │   │   ├── _public.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── index.blade.php
│       │   │   ├── rows/
│       │   │   │   └── permissions.blade.php
│       │   │   ├── show.blade.php
│       │   │   └── users/
│       │   │       ├── _form.blade.php
│       │   │       └── create.blade.php
│       │   ├── roles.blade.php
│       │   ├── share/
│       │   │   └── setup.blade.php
│       │   ├── show.blade.php
│       │   ├── sidebar/
│       │   │   └── index.blade.php
│       │   ├── stats/
│       │   │   └── index.blade.php
│       │   ├── styles/
│       │   │   ├── _form-footer.blade.php
│       │   │   ├── _form.blade.php
│       │   │   ├── _preview.blade.php
│       │   │   ├── _reorder.blade.php
│       │   │   ├── builder.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── edit.blade.php
│       │   │   ├── index.blade.php
│       │   │   └── theme.blade.php
│       │   ├── webhooks/
│       │   │   ├── _form.blade.php
│       │   │   ├── create.blade.php
│       │   │   ├── edit.blade.php
│       │   │   └── index.blade.php
│       │   └── webhooks.blade.php
│       ├── characters/
│       │   ├── families/
│       │   │   ├── _reorder.blade.php
│       │   │   └── reorder.blade.php
│       │   ├── form/
│       │   │   ├── _entry.blade.php
│       │   │   ├── _organisations.blade.php
│       │   │   ├── _panes.blade.php
│       │   │   ├── _tabs.blade.php
│       │   │   └── _traits.blade.php
│       │   ├── organisations/
│       │   │   ├── _form.blade.php
│       │   │   ├── create.blade.php
│       │   │   └── edit.blade.php
│       │   ├── organisations.blade.php
│       │   ├── panels/
│       │   │   ├── _appearance.blade.php
│       │   │   ├── _buttons.blade.php
│       │   │   ├── _personality.blade.php
│       │   │   └── organisations.blade.php
│       │   └── races/
│       │       ├── _reorder.blade.php
│       │       └── reorder.blade.php
│       ├── components/
│       │   ├── ad.blade.php
│       │   ├── ads/
│       │   │   └── native.blade.php
│       │   ├── alert.blade.php
│       │   ├── badge.blade.php
│       │   ├── box/
│       │   │   └── footer.blade.php
│       │   ├── box.blade.php
│       │   ├── button/
│       │   │   └── delete-confirm.blade.php
│       │   ├── buttons/
│       │   │   ├── confirm-delete.blade.php
│       │   │   └── confirm.blade.php
│       │   ├── campaigns/
│       │   │   └── module-box.blade.php
│       │   ├── character-sheet.blade.php
│       │   ├── checkbox.blade.php
│       │   ├── dashboards/
│       │   │   └── widgets/
│       │   │       └── selection.blade.php
│       │   ├── date.blade.php
│       │   ├── dialog/
│       │   │   ├── article.blade.php
│       │   │   ├── close.blade.php
│       │   │   ├── footer.blade.php
│       │   │   └── header.blade.php
│       │   ├── dialog.blade.php
│       │   ├── dropdowns/
│       │   │   ├── divider.blade.php
│       │   │   ├── item.blade.php
│       │   │   └── section.blade.php
│       │   ├── entities/
│       │   │   ├── submenu.blade.php
│       │   │   └── thumbnail.blade.php
│       │   ├── entity-link.blade.php
│       │   ├── faq-element.blade.php
│       │   ├── form/
│       │   │   ├── abilities.blade.php
│       │   │   ├── characters.blade.php
│       │   │   ├── entity_types.blade.php
│       │   │   ├── families.blade.php
│       │   │   ├── family_members.blade.php
│       │   │   ├── genres.blade.php
│       │   │   ├── locations.blade.php
│       
Download .txt
Showing preview only (2,380K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (25518 symbols across 2348 files)

FILE: app/Auth/PassportTokenGuard.php
  class PassportTokenGuard (line 17) | class PassportTokenGuard extends TokenGuard
    method authenticateViaBearerToken (line 19) | protected function authenticateViaBearerToken(): ?Authenticatable

FILE: app/Console/Commands/Campaigns/CleanupCommand.php
  class CleanupCommand (line 11) | class CleanupCommand extends Command
    method __construct (line 27) | public function __construct(protected PurgeService $service)
    method handle (line 35) | public function handle()

FILE: app/Console/Commands/Campaigns/DeleteCommand.php
  class DeleteCommand (line 10) | class DeleteCommand extends Command
    method __construct (line 31) | public function __construct()
    method handle (line 41) | public function handle()

FILE: app/Console/Commands/Campaigns/DummyEntities.php
  class DummyEntities (line 44) | class DummyEntities extends Command
    method __construct (line 65) | public function __construct()
    method handle (line 75) | public function handle()
    method loadObservers (line 266) | private function loadObservers(Campaign $campaign)

FILE: app/Console/Commands/Campaigns/ExportCommand.php
  class ExportCommand (line 11) | class ExportCommand extends Command
    method __construct (line 27) | public function __construct(protected ExportService $service)
    method handle (line 35) | public function handle()

FILE: app/Console/Commands/Campaigns/ImportCommand.php
  class ImportCommand (line 11) | class ImportCommand extends Command
    method handle (line 30) | public function handle()

FILE: app/Console/Commands/Campaigns/PermissionsSyncCommand.php
  class PermissionsSyncCommand (line 11) | class PermissionsSyncCommand extends Command
    method handle (line 30) | public function handle(): int

FILE: app/Console/Commands/Campaigns/PopulateCommand.php
  class PopulateCommand (line 10) | class PopulateCommand extends Command
    method __construct (line 28) | public function __construct(StarterService $starterService)
    method handle (line 37) | public function handle()

FILE: app/Console/Commands/Campaigns/VisibileEntityCountCommand.php
  class VisibileEntityCountCommand (line 10) | class VisibileEntityCountCommand extends Command
    method __construct (line 36) | public function __construct(protected VisibleEntityCountService $count...
    method handle (line 44) | public function handle(): void

FILE: app/Console/Commands/Cleanup/AnonymiseUserLogs.php
  class AnonymiseUserLogs (line 9) | class AnonymiseUserLogs extends Command
    method __construct (line 32) | public function __construct(protected UserLogService $service)
    method handle (line 40) | public function handle()

FILE: app/Console/Commands/Cleanup/CleanupEntityLogs.php
  class CleanupEntityLogs (line 11) | class CleanupEntityLogs extends Command
    method __construct (line 37) | public function __construct()
    method handle (line 45) | public function handle()

FILE: app/Console/Commands/Cleanup/CleanupImages.php
  class CleanupImages (line 10) | class CleanupImages extends Command
    method handle (line 35) | public function handle()

FILE: app/Console/Commands/Cleanup/CleanupTrashed.php
  class CleanupTrashed (line 15) | class CleanupTrashed extends Command
    method __construct (line 45) | public function __construct(PurgeService $service, PostPurgeService $p...
    method handle (line 55) | public function handle()

FILE: app/Console/Commands/Cleanup/CleanupTrashedCampaigns.php
  class CleanupTrashedCampaigns (line 11) | class CleanupTrashedCampaigns extends Command
    method __construct (line 34) | public function __construct(protected PurgeService $service)
    method handle (line 42) | public function handle()

FILE: app/Console/Commands/Cleanup/CleanupUsers.php
  class CleanupUsers (line 9) | class CleanupUsers extends Command
    method __construct (line 25) | public function __construct(protected PurgeService $service)
    method handle (line 33) | public function handle(): void

FILE: app/Console/Commands/Entities/CalendarAdvancer.php
  class CalendarAdvancer (line 12) | class CalendarAdvancer extends Command
    method __construct (line 41) | public function __construct(protected AdvancerService $service)
    method handle (line 51) | public function handle()

FILE: app/Console/Commands/Entities/ChildlessEntities.php
  class ChildlessEntities (line 9) | class ChildlessEntities extends Command
    method __construct (line 34) | public function __construct()
    method handle (line 44) | public function handle()
    method trace (line 80) | protected function trace(Entity $entity, string $type): void

FILE: app/Console/Commands/Entities/MapChunk.php
  class MapChunk (line 10) | class MapChunk extends Command
    method __construct (line 31) | public function __construct()
    method handle (line 39) | public function handle()
    method dispatch (line 58) | protected function dispatch(int $mapID)

FILE: app/Console/Commands/InstallCommand.php
  class InstallCommand (line 9) | class InstallCommand extends Command
    method handle (line 28) | public function handle()

FILE: app/Console/Commands/Metrics/MetricsGa4.php
  class MetricsGa4 (line 23) | class MetricsGa4 extends Command
    method handle (line 29) | public function handle(): int
    method homepageSessions (line 72) | private function homepageSessions(BetaAnalyticsDataClient $client, str...
    method registerPageSources (line 129) | private function registerPageSources(BetaAnalyticsDataClient $client, ...
    method registerCtaClicks (line 177) | private function registerCtaClicks(BetaAnalyticsDataClient $client, st...
    method scrollDepth (line 225) | private function scrollDepth(BetaAnalyticsDataClient $client, string $...

FILE: app/Console/Commands/Migrations/BookmarkEntityType.php
  class BookmarkEntityType (line 9) | class BookmarkEntityType extends Command
    method handle (line 28) | public function handle()

FILE: app/Console/Commands/Migrations/Cdn.php
  class Cdn (line 8) | class Cdn extends Command
    method handle (line 27) | public function handle()

FILE: app/Console/Commands/Migrations/MigrateEntityStatuses.php
  class MigrateEntityStatuses (line 8) | class MigrateEntityStatuses extends Command
    method handle (line 14) | public function handle(): void
    method migrateCharacters (line 42) | protected function migrateCharacters(): void
    method migrateQuests (line 76) | protected function migrateQuests(): void
    method migrateBooleans (line 113) | protected function migrateBooleans(string $entityTypeKey, string $tabl...
    method getCategoryStatusIds (line 144) | protected function getCategoryStatusIds(int $categoryId, array $mappin...

FILE: app/Console/Commands/Migrations/MigrateStatusFilters.php
  class MigrateStatusFilters (line 8) | class MigrateStatusFilters extends Command
    method handle (line 32) | public function handle(): void
    method migrateBookmarks (line 40) | protected function migrateBookmarks(): void
    method migrateWidgets (line 62) | protected function migrateWidgets(): void
    method migrateFilterParams (line 94) | protected function migrateFilterParams(array &$params, int $entityType...
    method resolveStatusId (line 144) | protected function resolveStatusId(int $entityTypeId, string $key): ?int
    method resolveEntityTypeCode (line 156) | protected function resolveEntityTypeCode(int $entityTypeId): ?string
    method parseFilterString (line 171) | protected function parseFilterString(string $filters): array
    method buildFilterString (line 181) | protected function buildFilterString(array $params): string

FILE: app/Console/Commands/Migrations/MigrateSubMentions.php
  class MigrateSubMentions (line 9) | class MigrateSubMentions extends Command
    method handle (line 30) | public function handle(): void

FILE: app/Console/Commands/Migrations/NewsletterSubCommand.php
  class NewsletterSubCommand (line 9) | class NewsletterSubCommand extends Command
    method __construct (line 27) | public function __construct(protected NewsletterService $service)
    method handle (line 35) | public function handle()

FILE: app/Console/Commands/Report/Accounts.php
  class Accounts (line 9) | class Accounts extends Command
    method handle (line 28) | public function handle(AccountsReportService $service): void

FILE: app/Console/Commands/Report/Churn.php
  class Churn (line 9) | class Churn extends Command
    method handle (line 28) | public function handle(ChurnReportService $service): void

FILE: app/Console/Commands/Report/Onboarding.php
  class Onboarding (line 9) | class Onboarding extends Command
    method handle (line 28) | public function handle(OnboardingReportService $service): void

FILE: app/Console/Commands/Report/Weekly.php
  class Weekly (line 9) | class Weekly extends Command
    method handle (line 28) | public function handle(WeeklyReportService $service): void

FILE: app/Console/Commands/SetupMeilisearch.php
  class SetupMeilisearch (line 16) | class SetupMeilisearch extends Command
    method handle (line 37) | public function handle()

FILE: app/Console/Commands/SubscriptionEndPaypalFix.php
  class SubscriptionEndPaypalFix (line 11) | class SubscriptionEndPaypalFix extends Command
    method handle (line 18) | public function handle(): int

FILE: app/Console/Commands/Subscriptions/EndFreeTrials.php
  class EndFreeTrials (line 10) | class EndFreeTrials extends Command
    method __construct (line 28) | public function __construct(protected FreeTrialEndService $service)
    method handle (line 36) | public function handle()

FILE: app/Console/Commands/Subscriptions/EndSubscriptions.php
  class EndSubscriptions (line 9) | class EndSubscriptions extends Command
    method __construct (line 27) | public function __construct(protected SubscriptionEndService $service)
    method handle (line 37) | public function handle()

FILE: app/Console/Commands/Subscriptions/ExpiringCardCommand.php
  class ExpiringCardCommand (line 11) | class ExpiringCardCommand extends Command
    method __construct (line 37) | public function __construct()
    method handle (line 47) | public function handle()
    method notify (line 69) | protected function notify(User $user): void

FILE: app/Console/Commands/Subscriptions/PaypalExpiringCommand.php
  class PaypalExpiringCommand (line 11) | class PaypalExpiringCommand extends Command
    method handle (line 32) | public function handle(): int
    method notify (line 56) | protected function notify(User $user): void

FILE: app/Console/Commands/Subscriptions/SubCleanupCommand.php
  class SubCleanupCommand (line 9) | class SubCleanupCommand extends Command
    method __construct (line 30) | public function __construct()
    method handle (line 40) | public function handle()

FILE: app/Console/Commands/Tests/Mailerlite.php
  class Mailerlite (line 9) | class Mailerlite extends Command
    method __construct (line 25) | public function __construct(protected NewsletterService $service)
    method handle (line 35) | public function handle()

FILE: app/Console/Commands/Tests/SendNotification.php
  class SendNotification (line 9) | class SendNotification extends Command
    method __construct (line 30) | public function __construct()
    method handle (line 40) | public function handle()

FILE: app/Console/Commands/Tests/SignImageCommand.php
  class SignImageCommand (line 9) | class SignImageCommand extends Command
    method __construct (line 34) | public function __construct()
    method handle (line 42) | public function handle()

FILE: app/Console/Commands/Tests/TestEmail.php
  class TestEmail (line 21) | class TestEmail extends Command
    method handle (line 42) | public function handle()

FILE: app/Console/Commands/Tests/TestWhiteboards.php
  class TestWhiteboards (line 8) | class TestWhiteboards extends Command
    method handle (line 27) | public function handle()

FILE: app/Console/Commands/Translations/Missing.php
  class Missing (line 8) | class Missing extends Command
    method handle (line 29) | public function handle(): void

FILE: app/Console/Commands/Users/OfferFreeTrial.php
  class OfferFreeTrial (line 9) | class OfferFreeTrial extends Command
    method __construct (line 27) | public function __construct(protected OfferTrialService $service)
    method handle (line 35) | public function handle()

FILE: app/Console/Commands/Users/RegenerateDiscordToken.php
  class RegenerateDiscordToken (line 14) | class RegenerateDiscordToken extends Command
    method __construct (line 28) | public function __construct(protected DiscordService $service)
    method handle (line 38) | public function handle()

FILE: app/Console/Commands/Users/ResetUserPassword.php
  class ResetUserPassword (line 11) | class ResetUserPassword extends Command
    method __construct (line 32) | public function __construct()
    method handle (line 42) | public function handle()

FILE: app/Console/Commands/Users/SyncUserRoles.php
  class SyncUserRoles (line 9) | class SyncUserRoles extends Command
    method __construct (line 30) | public function __construct(protected DiscordService $service)
    method handle (line 40) | public function handle()

FILE: app/Console/Commands/VerifyParentIds.php
  class VerifyParentIds (line 8) | class VerifyParentIds extends Command
    method handle (line 14) | public function handle(): int

FILE: app/Console/Commands/WordCount.php
  class WordCount (line 17) | class WordCount extends Command
    method handle (line 36) | public function handle()
    method process (line 53) | protected function process(string $className, string $field = 'entry')

FILE: app/Console/Kernel.php
  class Kernel (line 24) | class Kernel extends ConsoleKernel
    method schedule (line 38) | protected function schedule(Schedule $schedule): void
    method commands (line 68) | protected function commands(): void

FILE: app/Datagrids/Actions/BookmarkDatagridActions.php
  class BookmarkDatagridActions (line 8) | class BookmarkDatagridActions extends DatagridActions

FILE: app/Datagrids/Actions/DatagridActions.php
  class DatagridActions (line 12) | abstract class DatagridActions
    method hasBulkPermissions (line 35) | public function hasBulkPermissions(): bool
    method hasBulkEditing (line 43) | public function hasBulkEditing(): bool
    method hasBulkCopy (line 51) | public function hasBulkCopy(): bool
    method hasBulkTransform (line 59) | public function hasBulkTransform(): bool
    method hasBulkTemplate (line 67) | public function hasBulkTemplate(): bool
    method hasBulkPrint (line 75) | public function hasBulkPrint(): bool

FILE: app/Datagrids/Actions/DefaultDatagridActions.php
  class DefaultDatagridActions (line 8) | class DefaultDatagridActions extends DatagridActions {}

FILE: app/Datagrids/Actions/DeprecatedDatagridActions.php
  class DeprecatedDatagridActions (line 9) | class DeprecatedDatagridActions extends DatagridActions

FILE: app/Datagrids/Actions/HistoryActions.php
  class HistoryActions (line 8) | class HistoryActions extends DatagridActions

FILE: app/Datagrids/Actions/NoDatagridActions.php
  class NoDatagridActions (line 9) | class NoDatagridActions extends DatagridActions

FILE: app/Datagrids/Actions/RelationDatagridActions.php
  class RelationDatagridActions (line 8) | class RelationDatagridActions extends DatagridActions

FILE: app/Datagrids/Bulks/AbilityBulk.php
  class AbilityBulk (line 5) | class AbilityBulk extends Bulk

FILE: app/Datagrids/Bulks/AttributeTemplateBulk.php
  class AttributeTemplateBulk (line 5) | class AttributeTemplateBulk extends Bulk

FILE: app/Datagrids/Bulks/BookmarkBulk.php
  class BookmarkBulk (line 5) | class BookmarkBulk extends Bulk

FILE: app/Datagrids/Bulks/Bulk.php
  class Bulk (line 11) | abstract class Bulk
    method fields (line 16) | public function fields(): array
    method booleans (line 28) | public function booleans(): array
    method foreignRelations (line 40) | public function foreignRelations(): array
    method maths (line 52) | public function maths(): array
    method defaults (line 64) | protected function defaults(): array

FILE: app/Datagrids/Bulks/CalendarBulk.php
  class CalendarBulk (line 5) | class CalendarBulk extends Bulk

FILE: app/Datagrids/Bulks/CharacterBulk.php
  class CharacterBulk (line 5) | class CharacterBulk extends Bulk

FILE: app/Datagrids/Bulks/ConversationBulk.php
  class ConversationBulk (line 5) | class ConversationBulk extends Bulk

FILE: app/Datagrids/Bulks/CreatureBulk.php
  class CreatureBulk (line 5) | class CreatureBulk extends Bulk

FILE: app/Datagrids/Bulks/DefaultBulk.php
  class DefaultBulk (line 8) | class DefaultBulk extends Bulk {}

FILE: app/Datagrids/Bulks/DiceRollBulk.php
  class DiceRollBulk (line 5) | class DiceRollBulk extends Bulk

FILE: app/Datagrids/Bulks/EntityBulk.php
  class EntityBulk (line 5) | class EntityBulk extends Bulk

FILE: app/Datagrids/Bulks/EventBulk.php
  class EventBulk (line 5) | class EventBulk extends Bulk

FILE: app/Datagrids/Bulks/FamilyBulk.php
  class FamilyBulk (line 5) | class FamilyBulk extends Bulk

FILE: app/Datagrids/Bulks/ItemBulk.php
  class ItemBulk (line 5) | class ItemBulk extends Bulk

FILE: app/Datagrids/Bulks/JournalBulk.php
  class JournalBulk (line 5) | class JournalBulk extends Bulk

FILE: app/Datagrids/Bulks/LocationBulk.php
  class LocationBulk (line 5) | class LocationBulk extends Bulk

FILE: app/Datagrids/Bulks/MapBulk.php
  class MapBulk (line 5) | class MapBulk extends Bulk

FILE: app/Datagrids/Bulks/NoteBulk.php
  class NoteBulk (line 5) | class NoteBulk extends Bulk

FILE: app/Datagrids/Bulks/OrganisationBulk.php
  class OrganisationBulk (line 5) | class OrganisationBulk extends Bulk

FILE: app/Datagrids/Bulks/QuestBulk.php
  class QuestBulk (line 5) | class QuestBulk extends Bulk

FILE: app/Datagrids/Bulks/RaceBulk.php
  class RaceBulk (line 5) | class RaceBulk extends Bulk

FILE: app/Datagrids/Bulks/RelationBulk.php
  class RelationBulk (line 5) | class RelationBulk extends Bulk

FILE: app/Datagrids/Bulks/TagBulk.php
  class TagBulk (line 5) | class TagBulk extends Bulk

FILE: app/Datagrids/Bulks/TimelineBulk.php
  class TimelineBulk (line 5) | class TimelineBulk extends Bulk

FILE: app/Datagrids/Datagrid.php
  class Datagrid (line 12) | abstract class Datagrid
    method hasBulkPermissions (line 32) | public function hasBulkPermissions(): bool
    method hasBulkCopy (line 40) | public function hasBulkCopy(): bool
    method hasBulkTransform (line 48) | public function hasBulkTransform(): bool
    method hasBulkTemplate (line 56) | public function hasBulkTemplate(): bool
    method hasBulkPrint (line 64) | public function hasBulkPrint(): bool

FILE: app/Datagrids/Filters/AbilityFilter.php
  class AbilityFilter (line 5) | class AbilityFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/AttributeTemplateFilter.php
  class AttributeTemplateFilter (line 5) | class AttributeTemplateFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/CalendarFilter.php
  class CalendarFilter (line 5) | class CalendarFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/CharacterFilter.php
  class CharacterFilter (line 5) | class CharacterFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/ConversationFilter.php
  class ConversationFilter (line 5) | class ConversationFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/CreatureFilter.php
  class CreatureFilter (line 5) | class CreatureFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/CustomEntityFilter.php
  class CustomEntityFilter (line 5) | class CustomEntityFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/DatagridFilter.php
  class DatagridFilter (line 25) | abstract class DatagridFilter
    method build (line 33) | public function build() {}
    method filters (line 38) | public function filters(): array
    method add (line 46) | protected function add($name): self
    method location (line 56) | protected function location(): self
    method locations (line 79) | protected function locations(): self
    method races (line 103) | protected function races(): self
    method organisations (line 127) | protected function organisations(): self
    method families (line 151) | protected function families(): self
    method character (line 175) | protected function character(string $field = 'character_id'): self
    method journal (line 197) | protected function journal(): self
    method tags (line 219) | protected function tags(): self
    method isPrivate (line 241) | protected function isPrivate(): self
    method hasImage (line 254) | protected function hasImage(): self
    method parent (line 264) | protected function parent(int $entityTypeId): self
    method hasPosts (line 281) | protected function hasPosts(): self
    method hasEntry (line 291) | protected function hasEntry(): self
    method hasAttributes (line 301) | protected function hasAttributes(): self
    method hasEntityFiles (line 311) | protected function hasEntityFiles(): self
    method date (line 321) | protected function date(): self
    method attributes (line 331) | protected function attributes(): self
    method connections (line 341) | protected function connections(): self
    method createdBy (line 351) | protected function createdBy(): self
    method updatedBy (line 368) | protected function updatedBy(): self
    method dateRange (line 385) | protected function dateRange(): self
    method template (line 395) | protected function template(): self
    method archived (line 405) | protected function archived(): self

FILE: app/Datagrids/Filters/DiceRollFilter.php
  class DiceRollFilter (line 5) | class DiceRollFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/EventFilter.php
  class EventFilter (line 5) | class EventFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/FamilyFilter.php
  class FamilyFilter (line 5) | class FamilyFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/HistoryFilter.php
  class HistoryFilter (line 7) | class HistoryFilter extends DatagridFilter
    method build (line 12) | public function build()

FILE: app/Datagrids/Filters/ItemFilter.php
  class ItemFilter (line 5) | class ItemFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/JournalFilter.php
  class JournalFilter (line 7) | class JournalFilter extends DatagridFilter
    method build (line 12) | public function build()

FILE: app/Datagrids/Filters/LocationFilter.php
  class LocationFilter (line 5) | class LocationFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/MapFilter.php
  class MapFilter (line 5) | class MapFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/NoteFilter.php
  class NoteFilter (line 5) | class NoteFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/OrganisationFilter.php
  class OrganisationFilter (line 5) | class OrganisationFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/QuestFilter.php
  class QuestFilter (line 7) | class QuestFilter extends DatagridFilter
    method build (line 12) | public function build()

FILE: app/Datagrids/Filters/RaceFilter.php
  class RaceFilter (line 5) | class RaceFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/RelationFilter.php
  class RelationFilter (line 7) | class RelationFilter extends DatagridFilter
    method build (line 12) | public function build()

FILE: app/Datagrids/Filters/TagFilter.php
  class TagFilter (line 5) | class TagFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/TimelineFilter.php
  class TimelineFilter (line 5) | class TimelineFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Filters/WhiteboardFilter.php
  class WhiteboardFilter (line 5) | class WhiteboardFilter extends DatagridFilter
    method build (line 10) | public function build()

FILE: app/Datagrids/Sorters/DatagridSorter.php
  class DatagridSorter (line 10) | abstract class DatagridSorter
    method __construct (line 57) | public function __construct()
    method options (line 68) | public function options(?Campaign $campaign = null): array
    method isSelected (line 81) | public function isSelected(string $key, bool $asc = true): bool
    method direction (line 91) | public function direction(bool $asc = true): string
    method fieldname (line 96) | public function fieldname(): string
    method request (line 101) | public function request(array $data): self
    method column (line 121) | public function column()
    method order (line 130) | public function order(): string
    method sessionkey (line 135) | protected function sessionkey(): string
    method parse (line 145) | protected function parse(string $selected): self
    method validOption (line 167) | protected function validOption(string $key, ?Campaign $campaign = null)

FILE: app/Datagrids/Sorters/QuestElementSorter.php
  class QuestElementSorter (line 8) | class QuestElementSorter extends DatagridSorter

FILE: app/Definitions/CustomCssDefinitions.php
  class CustomCssDefinitions (line 12) | class CustomCssDefinitions implements CssDefinition
    method apply (line 14) | public static function apply(HTMLPurifier_CSSDefinition $definition): ...

FILE: app/Definitions/CustomDefinitions.php
  class CustomDefinitions (line 9) | class CustomDefinitions implements Definition
    method apply (line 11) | public static function apply(HTMLPurifier_HTMLDefinition $def)

FILE: app/Enums/PricingPeriod.php
  method isYearly (line 10) | public function isYearly(): bool
  method lowerName (line 18) | public function lowerName(): string

FILE: app/Enums/Widget.php
  method isHeader (line 20) | public function isHeader(): bool

FILE: app/Events/AdminInviteCreated.php
  class AdminInviteCreated (line 9) | class AdminInviteCreated
    method __construct (line 16) | public function __construct(

FILE: app/Events/Campaigns/Applications/Accepted.php
  class Accepted (line 14) | class Accepted
    method __construct (line 21) | public function __construct(
    method broadcastOn (line 34) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Applications/Rejected.php
  class Rejected (line 14) | class Rejected
    method __construct (line 21) | public function __construct(
    method broadcastOn (line 34) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Dashboards/DashboardCreated.php
  class DashboardCreated (line 13) | class DashboardCreated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Dashboards/DashboardDeleted.php
  class DashboardDeleted (line 13) | class DashboardDeleted
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Dashboards/DashboardUpdated.php
  class DashboardUpdated (line 13) | class DashboardUpdated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Deleted.php
  class Deleted (line 13) | class Deleted
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/EntityTypes/EntityTypeCreated.php
  class EntityTypeCreated (line 13) | class EntityTypeCreated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/EntityTypes/EntityTypeDeleted.php
  class EntityTypeDeleted (line 13) | class EntityTypeDeleted
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/EntityTypes/EntityTypeToggled.php
  class EntityTypeToggled (line 14) | class EntityTypeToggled
    method __construct (line 21) | public function __construct(
    method broadcastOn (line 34) | public function broadcastOn(): array

FILE: app/Events/Campaigns/EntityTypes/EntityTypeUpdated.php
  class EntityTypeUpdated (line 13) | class EntityTypeUpdated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Exports/ExportCreated.php
  class ExportCreated (line 13) | class ExportCreated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Followers/FollowerCreated.php
  class FollowerCreated (line 12) | class FollowerCreated
    method __construct (line 19) | public function __construct(
    method broadcastOn (line 30) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Followers/FollowerRemoved.php
  class FollowerRemoved (line 12) | class FollowerRemoved
    method __construct (line 19) | public function __construct(
    method broadcastOn (line 30) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Invites/InviteCreated.php
  class InviteCreated (line 13) | class InviteCreated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Invites/InviteDeleted.php
  class InviteDeleted (line 13) | class InviteDeleted
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Members/RoleUserAdded.php
  class RoleUserAdded (line 11) | class RoleUserAdded
    method __construct (line 18) | public function __construct(

FILE: app/Events/Campaigns/Members/RoleUserRemoved.php
  class RoleUserRemoved (line 11) | class RoleUserRemoved
    method __construct (line 18) | public function __construct(

FILE: app/Events/Campaigns/Members/Switched.php
  class Switched (line 14) | class Switched
    method __construct (line 21) | public function __construct(
    method broadcastOn (line 34) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Members/UserJoined.php
  class UserJoined (line 14) | class UserJoined
    method __construct (line 21) | public function __construct(
    method broadcastOn (line 34) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Members/UserLeft.php
  class UserLeft (line 13) | class UserLeft
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Plugins/PluginDeleted.php
  class PluginDeleted (line 13) | class PluginDeleted
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Plugins/PluginImported.php
  class PluginImported (line 13) | class PluginImported
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Plugins/PluginUpdated.php
  class PluginUpdated (line 13) | class PluginUpdated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Roles/RoleCreated.php
  class RoleCreated (line 13) | class RoleCreated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Roles/RoleDeleted.php
  class RoleDeleted (line 13) | class RoleDeleted
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Roles/RoleUpdated.php
  class RoleUpdated (line 13) | class RoleUpdated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Saved.php
  class Saved (line 13) | class Saved
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/SettingsSaved.php
  class SettingsSaved (line 13) | class SettingsSaved
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Sidebar/SidebarReset.php
  class SidebarReset (line 13) | class SidebarReset
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Sidebar/SidebarSaved.php
  class SidebarSaved (line 13) | class SidebarSaved
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Styles/StyleCreated.php
  class StyleCreated (line 14) | class StyleCreated
    method __construct (line 21) | public function __construct(
    method broadcastOn (line 34) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Styles/StyleDeleted.php
  class StyleDeleted (line 14) | class StyleDeleted
    method __construct (line 21) | public function __construct(
    method broadcastOn (line 34) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Styles/StyleUpdated.php
  class StyleUpdated (line 14) | class StyleUpdated
    method __construct (line 21) | public function __construct(
    method broadcastOn (line 34) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Thumbnails/ThumbnailCreated.php
  class ThumbnailCreated (line 14) | class ThumbnailCreated
    method __construct (line 21) | public function __construct(
    method broadcastOn (line 34) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Thumbnails/ThumbnailDeleted.php
  class ThumbnailDeleted (line 14) | class ThumbnailDeleted
    method __construct (line 21) | public function __construct(
    method broadcastOn (line 34) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Thumbnails/ThumbnailsDeleted.php
  class ThumbnailsDeleted (line 13) | class ThumbnailsDeleted
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Updated.php
  class Updated (line 13) | class Updated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Webhooks/WebhookCreated.php
  class WebhookCreated (line 13) | class WebhookCreated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Webhooks/WebhookDeleted.php
  class WebhookDeleted (line 13) | class WebhookDeleted
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Webhooks/WebhookTested.php
  class WebhookTested (line 13) | class WebhookTested
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Campaigns/Webhooks/WebhookUpdated.php
  class WebhookUpdated (line 13) | class WebhookUpdated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Entities/EntityRestored.php
  class EntityRestored (line 13) | class EntityRestored
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 30) | public function broadcastOn(): array

FILE: app/Events/FeatureCreated.php
  class FeatureCreated (line 9) | class FeatureCreated
    method __construct (line 16) | public function __construct(

FILE: app/Events/Posts/PostCreated.php
  class PostCreated (line 13) | class PostCreated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Posts/PostDeleted.php
  class PostDeleted (line 13) | class PostDeleted
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Posts/PostRestored.php
  class PostRestored (line 13) | class PostRestored
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Posts/PostUpdated.php
  class PostUpdated (line 13) | class PostUpdated
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/SpotlightSubmitted.php
  class SpotlightSubmitted (line 9) | class SpotlightSubmitted
    method __construct (line 16) | public function __construct(public SpotlightContent $spotlightContent)

FILE: app/Events/Subscriptions/AutoRemove.php
  class AutoRemove (line 13) | class AutoRemove
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Subscriptions/Boost.php
  class Boost (line 13) | class Boost
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Subscriptions/Disable.php
  class Disable (line 13) | class Disable
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Subscriptions/Premium.php
  class Premium (line 13) | class Premium
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Subscriptions/SuperBoost.php
  class SuperBoost (line 13) | class SuperBoost
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Subscriptions/Upgrade.php
  class Upgrade (line 13) | class Upgrade
    method __construct (line 20) | public function __construct(
    method broadcastOn (line 32) | public function broadcastOn(): array

FILE: app/Events/Users/EmailChanged.php
  class EmailChanged (line 12) | class EmailChanged
    method __construct (line 19) | public function __construct(
    method broadcastOn (line 31) | public function broadcastOn(): array

FILE: app/Events/WhiteboardUpdated.php
  class WhiteboardUpdated (line 12) | class WhiteboardUpdated implements ShouldBroadcastNow
    method __construct (line 20) | public function __construct(int $whiteboardId, array $payload = [])
    method broadcastAs (line 27) | public function broadcastAs()
    method broadcastOn (line 37) | public function broadcastOn(): array

FILE: app/Events/Whiteboards/Updated.php
  class Updated (line 16) | class Updated implements ShouldBroadcastNow
    method __construct (line 23) | public function __construct(
    method broadcastOn (line 38) | public function broadcastOn(): array
    method broadcastAs (line 48) | public function broadcastAs(): string
    method broadcastWith (line 53) | public function broadcastWith(): array

FILE: app/Exceptions/Campaign/AlreadyBoostedException.php
  class AlreadyBoostedException (line 8) | class AlreadyBoostedException extends TranslatableException
    method __construct (line 12) | public function __construct($message = '', $code = 0, ?Throwable $prev...

FILE: app/Exceptions/Campaign/ExhaustedBoostsException.php
  class ExhaustedBoostsException (line 7) | class ExhaustedBoostsException extends TranslatableException

FILE: app/Exceptions/Campaign/ExhaustedSuperboostsException.php
  class ExhaustedSuperboostsException (line 7) | class ExhaustedSuperboostsException extends TranslatableException

FILE: app/Exceptions/Campaign/ImportException.php
  class ImportException (line 7) | class ImportException extends Exception {}

FILE: app/Exceptions/Handler.php
  class Handler (line 34) | class Handler extends ExceptionHandler
    method register (line 54) | public function register(): void
    method render (line 69) | public function render($request, Throwable $exception)
    method unauthenticated (line 122) | protected function unauthenticated($request, AuthenticationException $...
    method handleApiErrors (line 137) | protected function handleApiErrors(Throwable $exception)

FILE: app/Exceptions/OpenAiException.php
  class OpenAiException (line 7) | class OpenAiException extends Exception
    method getContext (line 11) | public function getContext()
    method setContext (line 16) | public function setContext($context)

FILE: app/Exceptions/RequireLoginException.php
  class RequireLoginException (line 7) | class RequireLoginException extends Exception {}

FILE: app/Exceptions/TranslatableException.php
  class TranslatableException (line 10) | class TranslatableException extends Exception
    method getTranslatedMessage (line 19) | public function getTranslatedMessage(): string
    method setOptions (line 27) | public function setOptions(array $options)

FILE: app/Facades/AdCache.php
  class AdCache (line 15) | class AdCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/ApiLog.php
  class ApiLog (line 15) | class ApiLog extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Attributes.php
  class Attributes (line 15) | class Attributes extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Avatar.php
  class Avatar (line 15) | class Avatar extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/BookmarkCache.php
  class BookmarkCache (line 15) | class BookmarkCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Breadcrumb.php
  class Breadcrumb (line 15) | class Breadcrumb extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/CampaignCache.php
  class CampaignCache (line 15) | class CampaignCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/CampaignLocalization.php
  class CampaignLocalization (line 15) | class CampaignLocalization extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/CharacterCache.php
  class CharacterCache (line 15) | class CharacterCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Dashboard.php
  class Dashboard (line 15) | class Dashboard extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/DataLayer.php
  class DataLayer (line 15) | class DataLayer extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Datagrid.php
  class Datagrid (line 15) | class Datagrid extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Domain.php
  class Domain (line 11) | class Domain extends Facade
    method getFacadeAccessor (line 18) | protected static function getFacadeAccessor()

FILE: app/Facades/EntityAssetCache.php
  class EntityAssetCache (line 15) | class EntityAssetCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/EntityCache.php
  class EntityCache (line 15) | class EntityCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/EntityLogger.php
  class EntityLogger (line 15) | class EntityLogger extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/EntityPermission.php
  class EntityPermission (line 14) | class EntityPermission extends Facade
    method getFacadeAccessor (line 21) | protected static function getFacadeAccessor()

FILE: app/Facades/FormCopy.php
  class FormCopy (line 15) | class FormCopy extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Identity.php
  class Identity (line 15) | class Identity extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Images.php
  class Images (line 15) | class Images extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Img.php
  class Img (line 15) | class Img extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/ImportIdMapper.php
  class ImportIdMapper (line 14) | class ImportIdMapper extends Facade
    method getFacadeAccessor (line 21) | protected static function getFacadeAccessor()

FILE: app/Facades/Limit.php
  class Limit (line 11) | class Limit extends Facade
    method getFacadeAccessor (line 18) | protected static function getFacadeAccessor()

FILE: app/Facades/MapMarkerCache.php
  class MapMarkerCache (line 15) | class MapMarkerCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/MarketplaceCache.php
  class MarketplaceCache (line 15) | class MarketplaceCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Mentions.php
  class Mentions (line 15) | class Mentions extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Module.php
  class Module (line 15) | class Module extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/Permissions.php
  class Permissions (line 16) | class Permissions extends Facade
    method getFacadeAccessor (line 23) | protected static function getFacadeAccessor()

FILE: app/Facades/QuestCache.php
  class QuestCache (line 15) | class QuestCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/ReleaseCache.php
  class ReleaseCache (line 13) | class ReleaseCache extends Facade
    method getFacadeAccessor (line 20) | protected static function getFacadeAccessor()

FILE: app/Facades/RolePermission.php
  class RolePermission (line 15) | class RolePermission extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/SingleUserCache.php
  class SingleUserCache (line 15) | class SingleUserCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/TimelineElementCache.php
  class TimelineElementCache (line 15) | class TimelineElementCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/UserCache.php
  class UserCache (line 15) | class UserCache extends Facade
    method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()

FILE: app/Facades/UserPermission.php
  class UserPermission (line 14) | class UserPermission extends Facade
    method getFacadeAccessor (line 21) | protected static function getFacadeAccessor()

FILE: app/Http/Controllers/Abilities/AbilityController.php
  class AbilityController (line 13) | class AbilityController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Ability $ability)

FILE: app/Http/Controllers/Abilities/EntityController.php
  class EntityController (line 16) | class EntityController extends Controller
    method index (line 23) | public function index(Campaign $campaign, Ability $ability)
    method create (line 46) | public function create(Campaign $campaign, Ability $ability)
    method store (line 61) | public function store(StoreAbilityEntity $request, Campaign $campaign,...

FILE: app/Http/Controllers/Account/Billing/InformationController.php
  class InformationController (line 9) | class InformationController extends Controller
    method __construct (line 11) | public function __construct()
    method index (line 16) | public function index()
    method save (line 21) | public function save(StoreBillingSettings $request)

FILE: app/Http/Controllers/Account/DeleteController.php
  class DeleteController (line 10) | class DeleteController extends Controller
    method __construct (line 12) | public function __construct(protected DeletionService $deletionService)
    method destroy (line 17) | public function destroy(DeleteSettingsAccount $request)

FILE: app/Http/Controllers/Account/EmailController.php
  class EmailController (line 8) | class EmailController extends Controller
    method __construct (line 10) | public function __construct()
    method index (line 15) | public function index()
    method save (line 20) | public function save(StoreSettingsAccountEmail $request)

FILE: app/Http/Controllers/Account/PasswordController.php
  class PasswordController (line 11) | class PasswordController extends Controller
    method __construct (line 13) | public function __construct()
    method index (line 18) | public function index()
    method save (line 23) | public function save(StoreSettingsAccount $request)

FILE: app/Http/Controllers/Account/SocialController.php
  class SocialController (line 10) | class SocialController extends Controller
    method __construct (line 12) | public function __construct()
    method index (line 17) | public function index()
    method save (line 28) | public function save(StoreSettingsAccount $request)

FILE: app/Http/Controllers/Api/Public/CampaignController.php
  class CampaignController (line 10) | class CampaignController extends Controller
    method __construct (line 14) | public function __construct(CampaignService $service)
    method index (line 19) | public function index(Request $request)
    method setup (line 30) | public function setup()

FILE: app/Http/Controllers/Api/Public/HallOfFameController.php
  class HallOfFameController (line 9) | class HallOfFameController extends Controller
    method __construct (line 13) | public function __construct(HallOfFameService $service)
    method index (line 18) | public function index()

FILE: app/Http/Controllers/Api/Public/KbController.php
  class KbController (line 9) | class KbController extends Controller
    method __construct (line 13) | public function __construct(KbService $service)
    method index (line 18) | public function index()

FILE: app/Http/Controllers/Api/Public/ShowcaseController.php
  class ShowcaseController (line 10) | class ShowcaseController extends Controller
    method __construct (line 12) | public function __construct(protected ShowcaseService $service) {}
    method index (line 14) | public function index(Request $request)
    method setup (line 25) | public function setup(Request $request)

FILE: app/Http/Controllers/Api/Public/VoteController.php
  class VoteController (line 10) | class VoteController extends Controller
    method __construct (line 14) | public function __construct(VoteService $service)
    method index (line 19) | public function index()
    method show (line 28) | public function show(CommunityVote $communityVote)

FILE: app/Http/Controllers/Api/v1/AbilityApiController.php
  class AbilityApiController (line 14) | class AbilityApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Ability $ability)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 65) | public function update(Request $request, Campaign $campaign, Ability $...
    method destroy (line 80) | public function destroy(Campaign $campaign, Ability $ability)

FILE: app/Http/Controllers/Api/v1/ApiController.php
  class ApiController (line 7) | class ApiController extends Controller {}

FILE: app/Http/Controllers/Api/v1/ApplicationApiController.php
  class ApplicationApiController (line 15) | class ApplicationApiController extends ApiController
    method __construct (line 17) | public function __construct(protected ApplicationService $service)
    method index (line 27) | public function index(Campaign $campaign)
    method show (line 39) | public function show(Campaign $campaign, Application $application)
    method reject (line 49) | public function reject(RejectApplication $request, Campaign $campaign,...
    method approve (line 67) | public function approve(ApproveApplication $request, Campaign $campaig...

FILE: app/Http/Controllers/Api/v1/AttributeTemplateApiController.php
  class AttributeTemplateApiController (line 17) | class AttributeTemplateApiController extends MiscApiController
    method __construct (line 21) | public function __construct(
    method index (line 35) | public function index(Campaign $campaign)
    method show (line 50) | public function show(Campaign $campaign, AttributeTemplate $attributeT...
    method store (line 63) | public function store(Request $request, Campaign $campaign)
    method update (line 79) | public function update(Request $request, Campaign $campaign, Attribute...
    method destroy (line 94) | public function destroy(Campaign $campaign, AttributeTemplate $attribu...

FILE: app/Http/Controllers/Api/v1/BookmarkApiController.php
  class BookmarkApiController (line 13) | class BookmarkApiController extends ApiController
    method index (line 20) | public function index(Campaign $campaign)
    method show (line 33) | public function show(Campaign $campaign, Bookmark $bookmark)
    method store (line 46) | public function store(Request $request, Campaign $campaign)
    method update (line 62) | public function update(Request $request, Campaign $campaign, Bookmark ...
    method destroy (line 76) | public function destroy(Campaign $campaign, Bookmark $bookmark)

FILE: app/Http/Controllers/Api/v1/CalendarApiController.php
  class CalendarApiController (line 17) | class CalendarApiController extends MiscApiController
    method __construct (line 21) | public function __construct(
    method index (line 35) | public function index(Campaign $campaign)
    method show (line 50) | public function show(Campaign $campaign, Calendar $calendar)
    method store (line 63) | public function store(Request $request, Campaign $campaign)
    method update (line 81) | public function update(Request $request, Campaign $campaign, Calendar ...
    method destroy (line 97) | public function destroy(Campaign $campaign, Calendar $calendar)

FILE: app/Http/Controllers/Api/v1/CalendarEventApiController.php
  class CalendarEventApiController (line 11) | class CalendarEventApiController extends ApiController
    method index (line 18) | public function index(Campaign $campaign, Calendar $calendar)

FILE: app/Http/Controllers/Api/v1/CalendarWeatherApiController.php
  class CalendarWeatherApiController (line 14) | class CalendarWeatherApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Calendar $calendar)
    method show (line 35) | public function show(Campaign $campaign, Calendar $calendar, CalendarW...
    method store (line 48) | public function store(Request $request, Campaign $campaign, Calendar $...
    method update (line 64) | public function update(Request $request, Campaign $campaign, Calendar ...
    method destroy (line 78) | public function destroy(Campaign $campaign, Calendar $calendar, Calend...

FILE: app/Http/Controllers/Api/v1/Calendars/AdvancerApiController.php
  class AdvancerApiController (line 11) | class AdvancerApiController extends ApiController
    method __construct (line 15) | public function __construct(AdvancerService $service)
    method advance (line 23) | public function advance(Campaign $campaign, Calendar $calendar)
    method retreat (line 38) | public function retreat(Campaign $campaign, Calendar $calendar)

FILE: app/Http/Controllers/Api/v1/CampaignApiController.php
  class CampaignApiController (line 12) | class CampaignApiController extends ApiController
    method __construct (line 14) | public function __construct(
    method index (line 19) | public function index(\Illuminate\Http\Request $request)
    method show (line 31) | public function show(Campaign $campaign)
    method store (line 40) | public function store(Request $request)
    method update (line 52) | public function update(Request $request, Campaign $campaign)
    method destroy (line 65) | public function destroy(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/CampaignDashboardWidgetApiController.php
  class CampaignDashboardWidgetApiController (line 14) | class CampaignDashboardWidgetApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 35) | public function show(Campaign $campaign, CampaignDashboardWidget $camp...
    method store (line 47) | public function store(Request $request, Campaign $campaign)
    method update (line 63) | public function update(Request $request, Campaign $campaign, CampaignD...
    method destroy (line 76) | public function destroy(Campaign $campaign, CampaignDashboardWidget $c...

FILE: app/Http/Controllers/Api/v1/CampaignImageApiController.php
  class CampaignImageApiController (line 14) | class CampaignImageApiController extends ApiController
    method __construct (line 18) | public function __construct(SummernoteService $summernoteService)
    method index (line 23) | public function index(Campaign $campaign)
    method show (line 37) | public function show(Campaign $campaign, Image $image)
    method store (line 45) | public function store(GalleryImageStore $request, Campaign $campaign)
    method update (line 57) | public function update(GalleryImageUpdate $request, Campaign $campaign...
    method destroy (line 71) | public function destroy(Campaign $campaign, Image $image)

FILE: app/Http/Controllers/Api/v1/CampaignRoleApiController.php
  class CampaignRoleApiController (line 10) | class CampaignRoleApiController extends ApiController
    method index (line 17) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/CampaignStyleApiController.php
  class CampaignStyleApiController (line 14) | class CampaignStyleApiController extends ApiController
    method __construct (line 16) | public function __construct()
    method index (line 26) | public function index(Campaign $campaign)
    method show (line 40) | public function show(Campaign $campaign, CampaignStyle $campaignStyle)
    method store (line 53) | public function store(Request $request, Campaign $campaign)
    method update (line 68) | public function update(Request $request, Campaign $campaign, CampaignS...
    method destroy (line 82) | public function destroy(Campaign $campaign, CampaignStyle $campaignStyle)

FILE: app/Http/Controllers/Api/v1/Campaigns/CategoryStatusController.php
  class CategoryStatusController (line 10) | class CategoryStatusController extends ApiController
    method index (line 12) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/Campaigns/EntityTypeApiController.php
  class EntityTypeApiController (line 16) | class EntityTypeApiController extends ApiController
    method __construct (line 18) | public function __construct(protected EntityTypeService $entityTypeSer...
    method index (line 28) | public function index(Campaign $campaign)
    method show (line 35) | public function show(Campaign $campaign, EntityType $entityType)
    method store (line 45) | public function store(StoreEntityType $request, Campaign $campaign)
    method update (line 74) | public function update(StoreEntityType $request, Campaign $campaign, E...
    method destroy (line 88) | public function destroy(Request $request, Campaign $campaign, EntityTy...

FILE: app/Http/Controllers/Api/v1/Campaigns/UserApiController.php
  class UserApiController (line 13) | class UserApiController extends ApiController
    method __construct (line 17) | public function __construct(MemberService $memberService)
    method index (line 22) | public function index(Campaign $campaign)
    method show (line 32) | public function show(Campaign $campaign, User $user)
    method add (line 47) | public function add(UpdateUserRole $request, Campaign $campaign)
    method remove (line 68) | public function remove(UpdateUserRole $request, Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/CharacterApiController.php
  class CharacterApiController (line 14) | class CharacterApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 40) | public function show(Campaign $campaign, Character $character)
    method store (line 53) | public function store(Request $request, Campaign $campaign)
    method update (line 75) | public function update(
    method destroy (line 93) | public function destroy(Campaign $campaign, Character $character)

FILE: app/Http/Controllers/Api/v1/ConversationApiController.php
  class ConversationApiController (line 14) | class ConversationApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Conversation $conversation)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 66) | public function update(Request $request, Campaign $campaign, Conversat...
    method destroy (line 81) | public function destroy(Campaign $campaign, Conversation $conversation)

FILE: app/Http/Controllers/Api/v1/ConversationMessageApiController.php
  class ConversationMessageApiController (line 15) | class ConversationMessageApiController extends ApiController
    method index (line 22) | public function index(Campaign $campaign, Conversation $conversation)
    method show (line 38) | public function show(
    method store (line 54) | public function store(RequestMessage $requestMessage, Campaign $campai...
    method update (line 66) | public function update(
    method destroy (line 84) | public function destroy(

FILE: app/Http/Controllers/Api/v1/ConversationParticipantApiController.php
  class ConversationParticipantApiController (line 15) | class ConversationParticipantApiController extends ApiController
    method index (line 22) | public function index(Campaign $campaign, Conversation $conversation)
    method show (line 33) | public function show(
    method store (line 49) | public function store(RequestParticipant $requestParticipant, Campaign...
    method update (line 61) | public function update(
    method destroy (line 79) | public function destroy(

FILE: app/Http/Controllers/Api/v1/CreatureApiController.php
  class CreatureApiController (line 14) | class CreatureApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 37) | public function show(Campaign $campaign, Creature $creature)
    method store (line 50) | public function store(Request $request, Campaign $campaign)
    method update (line 66) | public function update(Request $request, Campaign $campaign, Creature ...
    method destroy (line 81) | public function destroy(Campaign $campaign, Creature $creature)

FILE: app/Http/Controllers/Api/v1/DefaultThumbnailApiController.php
  class DefaultThumbnailApiController (line 16) | class DefaultThumbnailApiController extends ApiController
    method __construct (line 18) | public function __construct(protected DefaultImageService $defaultImag...
    method index (line 28) | public function index(Campaign $campaign)
    method upload (line 40) | public function upload(StoreDefaultThumbnail $request, Campaign $campa...
    method delete (line 61) | public function delete(DestroyDefaultThumbnail $request, Campaign $cam...

FILE: app/Http/Controllers/Api/v1/DiceRollApiController.php
  class DiceRollApiController (line 14) | class DiceRollApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, DiceRoll $diceRoll)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 65) | public function update(Request $request, Campaign $campaign, DiceRoll ...
    method destroy (line 80) | public function destroy(Campaign $campaign, DiceRoll $diceRoll)

FILE: app/Http/Controllers/Api/v1/Entities/Attributes/PatchController.php
  class PatchController (line 12) | class PatchController extends ApiController
    method __construct (line 14) | public function __construct(protected BulkAttributeService $service) {}
    method patch (line 16) | public function patch(SaveAttributesApi $request, Campaign $campaign, ...

FILE: app/Http/Controllers/Api/v1/Entities/Attributes/PutController.php
  class PutController (line 12) | class PutController extends ApiController
    method __construct (line 14) | public function __construct(protected BulkAttributeService $service) {}
    method put (line 16) | public function put(SaveAttributesApi $request, Campaign $campaign, En...

FILE: app/Http/Controllers/Api/v1/Entities/ReminderApiController.php
  class ReminderApiController (line 12) | class ReminderApiController extends ApiController
    method index (line 14) | public function index(Campaign $campaign, Entity $entity)
    method show (line 22) | public function show(Campaign $campaign, Entity $entity, Reminder $rem...
    method store (line 31) | public function store(Request $request, Campaign $campaign, Entity $en...
    method update (line 47) | public function update(Request $request, Campaign $campaign, Entity $e...
    method destroy (line 57) | public function destroy(

FILE: app/Http/Controllers/Api/v1/EntityAbilityApiController.php
  class EntityAbilityApiController (line 16) | class EntityAbilityApiController extends ApiController
    method index (line 23) | public function index(Campaign $campaign, Entity $entity)
    method show (line 34) | public function show(Campaign $campaign, Entity $entity, EntityAbility...
    method store (line 45) | public function store(Request $request, Campaign $campaign, Entity $en...
    method update (line 73) | public function update(Request $request, Campaign $campaign, Entity $e...
    method destroy (line 88) | public function destroy(

FILE: app/Http/Controllers/Api/v1/EntityApiController.php
  class EntityApiController (line 16) | class EntityApiController extends ApiController
    method __construct (line 18) | public function __construct(
    method index (line 23) | public function index(Campaign $campaign)
    method show (line 37) | public function show(Campaign $campaign, Entity $entity)
    method put (line 49) | public function put(StoreEntities $request, Campaign $campaign, Entity...
    method edit (line 68) | public function edit(Request $request, Campaign $campaign, Entity $ent...
    method patch (line 82) | public function patch(PatchEntity $request, Campaign $campaign, Entity...
    method destroy (line 98) | public function destroy(Request $request, Campaign $campaign, Entity $...

FILE: app/Http/Controllers/Api/v1/EntityArchiveApiController.php
  class EntityArchiveApiController (line 13) | class EntityArchiveApiController extends ApiController
    method __construct (line 17) | public function __construct(ArchiveService $archiveService)
    method index (line 27) | public function index(Campaign $campaign)
    method switch (line 47) | public function switch(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Api/v1/EntityAssetApiController.php
  class EntityAssetApiController (line 16) | class EntityAssetApiController extends ApiController
    method index (line 23) | public function index(Campaign $campaign, Entity $entity)
    method show (line 34) | public function show(Campaign $campaign, Entity $entity, EntityAsset $...
    method store (line 47) | public function store(Request $request, Campaign $campaign, Entity $en...
    method update (line 73) | public function update(Request $request, Campaign $campaign, Entity $e...
    method destroy (line 88) | public function destroy(

FILE: app/Http/Controllers/Api/v1/EntityAttributeApiController.php
  class EntityAttributeApiController (line 14) | class EntityAttributeApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Entity $entity)
    method show (line 32) | public function show(Campaign $campaign, Entity $entity, Attribute $at...
    method store (line 45) | public function store(Request $request, Campaign $campaign, Entity $en...
    method update (line 59) | public function update(Request $request, Campaign $campaign, Entity $e...
    method destroy (line 75) | public function destroy(Campaign $campaign, Entity $entity, Attribute ...

FILE: app/Http/Controllers/Api/v1/EntityImageApiController.php
  class EntityImageApiController (line 14) | class EntityImageApiController extends Controller
    method __construct (line 16) | public function __construct(public UploadService $uploadService) {}
    method show (line 18) | public function show(Campaign $campaign, Entity $entity)
    method put (line 26) | public function put(UploadFile $request, Campaign $campaign, Entity $e...
    method destroy (line 49) | public function destroy(Request $request, Campaign $campaign, Entity $...

FILE: app/Http/Controllers/Api/v1/EntityInventoryApiController.php
  class EntityInventoryApiController (line 14) | class EntityInventoryApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Entity $entity)
    method show (line 32) | public function show(Campaign $campaign, Entity $entity, Inventory $in...
    method store (line 45) | public function store(Request $request, Campaign $campaign, Entity $en...
    method update (line 59) | public function update(Request $request, Campaign $campaign, Entity $e...
    method destroy (line 74) | public function destroy(

FILE: app/Http/Controllers/Api/v1/EntityMentionApiController.php
  class EntityMentionApiController (line 11) | class EntityMentionApiController extends ApiController
    method index (line 18) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Api/v1/EntityMoveApiController.php
  class EntityMoveApiController (line 12) | class EntityMoveApiController extends ApiController
    method __construct (line 16) | public function __construct(MoveService $service)
    method transfer (line 26) | public function transfer(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/EntityPermissionApiController.php
  class EntityPermissionApiController (line 16) | class EntityPermissionApiController extends ApiController
    method __construct (line 23) | public function __construct(ApiPermissionService $apiPermissionService)
    method index (line 33) | public function index(Campaign $campaign, Entity $entity)
    method show (line 44) | public function show(Campaign $campaign, Entity $entity, CampaignPermi...
    method store (line 57) | public function store(Request $request, Campaign $campaign, Entity $en...
    method update (line 70) | public function update(Request $request, Campaign $campaign, Entity $e...
    method destroy (line 84) | public function destroy(Campaign $campaign, Entity $entity, CampaignPe...
    method test (line 96) | public function test(PermissionTestRequest $request, Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/EntityRecoveryApiController.php
  class EntityRecoveryApiController (line 12) | class EntityRecoveryApiController extends ApiController
    method __construct (line 16) | public function __construct(RecoveryService $service)
    method index (line 28) | public function index(Campaign $campaign)
    method recover (line 40) | public function recover(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/EntityRelationApiController.php
  class EntityRelationApiController (line 16) | class EntityRelationApiController extends ApiController
    method __construct (line 20) | public function __construct(RelationService $relationService)
    method index (line 30) | public function index(Campaign $campaign, Entity $entity)
    method show (line 41) | public function show(Campaign $campaign, Entity $entity, Relation $rel...
    method store (line 54) | public function store(Request $request, Campaign $campaign, Entity $en...
    method update (line 67) | public function update(UpdateRequest $request, Campaign $campaign, Ent...
    method destroy (line 82) | public function destroy(

FILE: app/Http/Controllers/Api/v1/EntityTagApiController.php
  class EntityTagApiController (line 12) | class EntityTagApiController extends ApiController
    method index (line 14) | public function index(Campaign $campaign, Entity $entity)
    method show (line 22) | public function show(Campaign $campaign, Entity $entity, EntityTag $en...
    method store (line 30) | public function store(Request $request, Campaign $campaign, Entity $en...
    method update (line 41) | public function update(Request $request, Campaign $campaign, Entity $e...
    method destroy (line 50) | public function destroy(

FILE: app/Http/Controllers/Api/v1/EntityTemplateApiController.php
  class EntityTemplateApiController (line 13) | class EntityTemplateApiController extends ApiController
    method __construct (line 17) | public function __construct(TemplateService $templateService)
    method index (line 27) | public function index(Campaign $campaign)
    method switch (line 47) | public function switch(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Api/v1/EntityTransformApiController.php
  class EntityTransformApiController (line 12) | class EntityTransformApiController extends ApiController
    method __construct (line 16) | public function __construct(TransformService $service)
    method transform (line 26) | public function transform(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/EntityTypeApiController.php
  class EntityTypeApiController (line 8) | class EntityTypeApiController extends ApiController
    method index (line 10) | public function index()

FILE: app/Http/Controllers/Api/v1/EventApiController.php
  class EventApiController (line 14) | class EventApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Event $event)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 65) | public function update(Request $request, Campaign $campaign, Event $ev...
    method destroy (line 80) | public function destroy(Campaign $campaign, Event $event)

FILE: app/Http/Controllers/Api/v1/FamilyApiController.php
  class FamilyApiController (line 14) | class FamilyApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Family $family)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 65) | public function update(Request $request, Campaign $campaign, Family $f...
    method destroy (line 80) | public function destroy(Campaign $campaign, Family $family)

FILE: app/Http/Controllers/Api/v1/FamilyTreeApiController.php
  class FamilyTreeApiController (line 14) | class FamilyTreeApiController extends ApiController
    method __construct (line 18) | public function __construct(FamilyTreeService $treeService)
    method show (line 27) | public function show(Campaign $campaign, Family $family)
    method store (line 40) | public function store(Request $request, Campaign $campaign, Family $fa...
    method destroy (line 66) | public function destroy(Campaign $campaign, Family $family)

FILE: app/Http/Controllers/Api/v1/FilterApiController.php
  class FilterApiController (line 9) | class FilterApiController extends Controller
    method __construct (line 13) | public function __construct(FilterService $filterService)
    method index (line 18) | public function index()
    method show (line 23) | public function show(EntityType $entityType)

FILE: app/Http/Controllers/Api/v1/FullTextSearchApiController.php
  class FullTextSearchApiController (line 10) | class FullTextSearchApiController extends ApiController
    method __construct (line 14) | public function __construct(EntitySearchService $service)
    method index (line 24) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/HealthController.php
  class HealthController (line 7) | class HealthController extends Controller
    method index (line 9) | public function index()

FILE: app/Http/Controllers/Api/v1/ItemApiController.php
  class ItemApiController (line 14) | class ItemApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 37) | public function show(Campaign $campaign, Item $item)
    method store (line 50) | public function store(Request $request, Campaign $campaign)
    method update (line 67) | public function update(Request $request, Campaign $campaign, Item $item)
    method destroy (line 82) | public function destroy(Campaign $campaign, Item $item)

FILE: app/Http/Controllers/Api/v1/JournalApiController.php
  class JournalApiController (line 14) | class JournalApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Journal $journal)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 65) | public function update(Request $request, Campaign $campaign, Journal $...
    method destroy (line 80) | public function destroy(Campaign $campaign, Journal $journal)

FILE: app/Http/Controllers/Api/v1/LocationApiController.php
  class LocationApiController (line 14) | class LocationApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Location $location)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 65) | public function update(Request $request, Campaign $campaign, Location ...
    method destroy (line 80) | public function destroy(Campaign $campaign, Location $location)

FILE: app/Http/Controllers/Api/v1/MapApiController.php
  class MapApiController (line 14) | class MapApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Map $map)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 65) | public function update(Request $request, Campaign $campaign, Map $map)
    method destroy (line 80) | public function destroy(Campaign $campaign, Map $map)

FILE: app/Http/Controllers/Api/v1/MapGroupApiController.php
  class MapGroupApiController (line 14) | class MapGroupApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Map $map)
    method show (line 32) | public function show(Campaign $campaign, Map $map, MapGroup $mapGroup)
    method store (line 40) | public function store(Request $request, Campaign $campaign, Map $map)
    method update (line 53) | public function update(
    method destroy (line 71) | public function destroy(

FILE: app/Http/Controllers/Api/v1/MapLayerApiController.php
  class MapLayerApiController (line 14) | class MapLayerApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Map $map)
    method show (line 32) | public function show(Campaign $campaign, Map $map, MapLayer $mapLayer)
    method store (line 40) | public function store(Request $request, Campaign $campaign, Map $map)
    method update (line 60) | public function update(
    method destroy (line 78) | public function destroy(

FILE: app/Http/Controllers/Api/v1/MapMarkerApiController.php
  class MapMarkerApiController (line 14) | class MapMarkerApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Map $map)
    method show (line 32) | public function show(Campaign $campaign, Map $map, MapMarker $mapMarker)
    method store (line 45) | public function store(Request $request, Campaign $campaign, Map $map)
    method update (line 61) | public function update(
    method destroy (line 79) | public function destroy(

FILE: app/Http/Controllers/Api/v1/MiscApiController.php
  class MiscApiController (line 9) | class MiscApiController extends ApiController
    method __construct (line 11) | public function __construct(
    method crudSave (line 16) | protected function crudSave(MiscModel $model, array $data): void

FILE: app/Http/Controllers/Api/v1/NoteApiController.php
  class NoteApiController (line 14) | class NoteApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Note $note)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 65) | public function update(Request $request, Campaign $campaign, Note $note)
    method destroy (line 80) | public function destroy(Campaign $campaign, Note $note)

FILE: app/Http/Controllers/Api/v1/OrganisationApiController.php
  class OrganisationApiController (line 14) | class OrganisationApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Organisation $organisation)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 66) | public function update(Request $request, Campaign $campaign, Organisat...
    method destroy (line 81) | public function destroy(Campaign $campaign, Organisation $organisation)

FILE: app/Http/Controllers/Api/v1/OrganisationMemberApiController.php
  class OrganisationMemberApiController (line 14) | class OrganisationMemberApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Organisation $organisation)
    method show (line 32) | public function show(Campaign $campaign, Organisation $organisation, O...
    method store (line 45) | public function store(Request $request, Campaign $campaign, Organisati...
    method update (line 59) | public function update(
    method destroy (line 77) | public function destroy(

FILE: app/Http/Controllers/Api/v1/PostApiController.php
  class PostApiController (line 14) | class PostApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Entity $entity)
    method show (line 32) | public function show(Campaign $campaign, Entity $entity, Post $post)
    method store (line 45) | public function store(Request $request, Campaign $campaign, Entity $en...
    method update (line 60) | public function update(Request $request, Campaign $campaign, Entity $e...
    method destroy (line 75) | public function destroy(

FILE: app/Http/Controllers/Api/v1/PostLayoutApiController.php
  class PostLayoutApiController (line 9) | class PostLayoutApiController extends Controller
    method index (line 11) | public function index()

FILE: app/Http/Controllers/Api/v1/PostRecoveryApiController.php
  class PostRecoveryApiController (line 12) | class PostRecoveryApiController extends ApiController
    method __construct (line 16) | public function __construct(RecoveryService $service)
    method index (line 28) | public function index(Campaign $campaign)
    method recover (line 40) | public function recover(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/ProfileApiController.php
  class ProfileApiController (line 7) | class ProfileApiController extends ApiController
    method index (line 9) | public function index()

FILE: app/Http/Controllers/Api/v1/QuestApiController.php
  class QuestApiController (line 14) | class QuestApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Quest $quest)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 66) | public function update(Request $request, Campaign $campaign, Quest $qu...
    method destroy (line 81) | public function destroy(Campaign $campaign, Quest $quest)

FILE: app/Http/Controllers/Api/v1/QuestElementApiController.php
  class QuestElementApiController (line 15) | class QuestElementApiController extends ApiController
    method index (line 22) | public function index(Campaign $campaign, Quest $quest)
    method show (line 33) | public function show(Campaign $campaign, Quest $quest, QuestElement $q...
    method store (line 46) | public function store(RequestElement $requestElement, Campaign $campai...
    method update (line 61) | public function update(
    method destroy (line 79) | public function destroy(

FILE: app/Http/Controllers/Api/v1/RaceApiController.php
  class RaceApiController (line 14) | class RaceApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 37) | public function show(Campaign $campaign, Race $race)
    method store (line 50) | public function store(Request $request, Campaign $campaign)
    method update (line 66) | public function update(Request $request, Campaign $campaign, Race $race)
    method destroy (line 81) | public function destroy(Campaign $campaign, Race $race)

FILE: app/Http/Controllers/Api/v1/RecentEntityApiController.php
  class RecentEntityApiController (line 11) | class RecentEntityApiController extends ApiController
    method index (line 18) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/RelationApiController.php
  class RelationApiController (line 10) | class RelationApiController extends ApiController
    method index (line 17) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Api/v1/ReminderApiController.php
  class ReminderApiController (line 14) | class ReminderApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Entity $entity)
    method show (line 32) | public function show(Campaign $campaign, Entity $entity, Reminder $rem...
    method store (line 45) | public function store(Request $request, Campaign $campaign, Entity $en...
    method update (line 61) | public function update(Request $request, Campaign $campaign, Entity $e...
    method destroy (line 76) | public function destroy(

FILE: app/Http/Controllers/Api/v1/SearchApiController.php
  class SearchApiController (line 12) | class SearchApiController extends ApiController
    method __construct (line 14) | public function __construct(protected EntityTypeService $entityTypeSer...
    method index (line 21) | public function index(Request $request, Campaign $campaign, ?string $s...

FILE: app/Http/Controllers/Api/v1/TagApiController.php
  class TagApiController (line 14) | class TagApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Tag $tag)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 65) | public function update(Request $request, Campaign $campaign, Tag $tag)
    method destroy (line 80) | public function destroy(Campaign $campaign, Tag $tag)

FILE: app/Http/Controllers/Api/v1/TimelineApiController.php
  class TimelineApiController (line 14) | class TimelineApiController extends MiscApiController
    method index (line 21) | public function index(Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Timeline $timeline)
    method store (line 49) | public function store(Request $request, Campaign $campaign)
    method update (line 65) | public function update(Request $request, Campaign $campaign, Timeline ...
    method destroy (line 80) | public function destroy(Campaign $campaign, Timeline $timeline)

FILE: app/Http/Controllers/Api/v1/TimelineElementApiController.php
  class TimelineElementApiController (line 14) | class TimelineElementApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Timeline $timeline)
    method show (line 32) | public function show(Campaign $campaign, Timeline $timeline, TimelineE...
    method store (line 45) | public function store(Request $request, Campaign $campaign, Timeline $...
    method update (line 60) | public function update(
    method destroy (line 78) | public function destroy(

FILE: app/Http/Controllers/Api/v1/TimelineEraApiController.php
  class TimelineEraApiController (line 14) | class TimelineEraApiController extends ApiController
    method index (line 21) | public function index(Campaign $campaign, Timeline $timeline)
    method show (line 32) | public function show(Campaign $campaign, Timeline $timeline, TimelineE...
    method store (line 45) | public function store(Request $request, Campaign $campaign, Timeline $...
    method update (line 62) | public function update(
    method destroy (line 80) | public function destroy(

FILE: app/Http/Controllers/Api/v1/VisibilityController.php
  class VisibilityController (line 9) | class VisibilityController extends Controller
    method index (line 11) | public function index()

FILE: app/Http/Controllers/Attributes/ApiController.php
  class ApiController (line 13) | class ApiController extends Controller
    method __construct (line 18) | public function __construct(protected ApiService $apiService) {}
    method index (line 20) | public function index(Campaign $campaign, EntityType $entityType)
    method entity (line 42) | public function entity(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Auth/AuthController.php
  class AuthController (line 17) | class AuthController extends Controller
    method __construct (line 31) | public function __construct(protected JoinService $referralService)
    method redirectToProvider (line 41) | public function redirectToProvider($provider)
    method handleProviderCallback (line 61) | public function handleProviderCallback($provider)
    method findOrCreateUser (line 98) | public function findOrCreateUser(mixed $user, mixed $provider)
    method logout (line 136) | public function logout(Request $request)

FILE: app/Http/Controllers/Auth/ConfirmPasswordController.php
  class ConfirmPasswordController (line 9) | class ConfirmPasswordController extends Controller
    method __construct (line 35) | public function __construct()

FILE: app/Http/Controllers/Auth/ForgotPasswordController.php
  class ForgotPasswordController (line 10) | class ForgotPasswordController extends Controller
    method validateEmail (line 24) | protected function validateEmail(Request $request)
    method rules (line 29) | protected function rules(): array

FILE: app/Http/Controllers/Auth/LoginController.php
  class LoginController (line 14) | class LoginController extends Controller
    method __construct (line 35) | public function __construct(UserAuthenticatedService $userAuthService)
    method loginAsUser (line 46) | public function loginAsUser(Request $request, User $user)
    method loginAs (line 60) | public function loginAs(Request $request)
    method authenticated (line 72) | protected function authenticated(Request $request, $user)
    method redirectTo (line 79) | protected function redirectTo(Request $request): string
    method validateLogin (line 87) | protected function validateLogin(Request $request)

FILE: app/Http/Controllers/Auth/RegisterController.php
  class RegisterController (line 16) | class RegisterController extends Controller
    method __construct (line 35) | public function __construct(protected JoinService $referralService)
    method validator (line 46) | protected function validator(array $data)
    method create (line 65) | protected function create(array $data)
    method redirectTo (line 79) | protected function redirectTo(): string

FILE: app/Http/Controllers/Auth/ResetPasswordController.php
  class ResetPasswordController (line 11) | class ResetPasswordController extends Controller
    method __construct (line 32) | public function __construct()
    method rules (line 42) | protected function rules()

FILE: app/Http/Controllers/Auth/VerificationController.php
  class VerificationController (line 9) | class VerificationController extends Controller
    method __construct (line 35) | public function __construct()

FILE: app/Http/Controllers/Billing/HistoryController.php
  class HistoryController (line 11) | class HistoryController extends Controller
    method __construct (line 16) | public function __construct()
    method index (line 24) | public function index(Request $request)
    method download (line 38) | public function download(Request $request, $invoice)

FILE: app/Http/Controllers/Billing/PaymentMethodController.php
  class PaymentMethodController (line 13) | class PaymentMethodController extends Controller
    method __construct (line 20) | public function __construct(CurrencyService $currencyService)
    method index (line 29) | public function index()
    method currency (line 56) | public function currency()
    method save (line 66) | public function save(UserBillingStore $request)

FILE: app/Http/Controllers/Bookmarks/RandomController.php
  class RandomController (line 10) | class RandomController extends Controller
    method __construct (line 12) | public function __construct(protected RandomEntityService $service) {}
    method index (line 14) | public function index(Campaign $campaign, Bookmark $bookmark)

FILE: app/Http/Controllers/Bookmarks/ReorderController.php
  class ReorderController (line 16) | class ReorderController extends Controller
    method __construct (line 20) | public function __construct(BookmarkService $service)
    method index (line 30) | public function index(Campaign $campaign)
    method save (line 47) | public function save(ReorderBookmarks $request, Campaign $campaign)

FILE: app/Http/Controllers/Bragi/BragiController.php
  class BragiController (line 10) | class BragiController extends Controller
    method __construct (line 12) | public function __construct(protected BragiService $service)
    method index (line 17) | public function index(Campaign $campaign)
    method generate (line 27) | public function generate(BragiRequest $request, Campaign $campaign)

FILE: app/Http/Controllers/BulkController.php
  class BulkController (line 16) | class BulkController extends Controller
    method __construct (line 28) | public function __construct(protected BulkService $bulkService) {}
    method index (line 30) | public function index(BulkRequest $request, Campaign $campaign)
    method batch (line 79) | protected function batch()
    method models (line 109) | protected function models(): array

FILE: app/Http/Controllers/Bulks/BatchController.php
  class BatchController (line 14) | class BatchController extends Controller
    method __construct (line 16) | public function __construct(
    method index (line 22) | public function index(Request $request, Campaign $campaign, EntityType...
    method apply (line 33) | public function apply(Request $request, Campaign $campaign, EntityType...
    method resolveBulk (line 60) | private function resolveBulk(EntityType $entityType): Bulk

FILE: app/Http/Controllers/Bulks/CopyController.php
  class CopyController (line 13) | class CopyController extends Controller
    method __construct (line 15) | public function __construct(
    method index (line 22) | public function index(Request $request, Campaign $campaign, EntityType...
    method apply (line 38) | public function apply(Copy $request, Campaign $campaign, EntityType $e...

FILE: app/Http/Controllers/Bulks/DeleteController.php
  class DeleteController (line 12) | class DeleteController extends Controller
    method __construct (line 14) | public function __construct(
    method index (line 20) | public function index(Request $request, Campaign $campaign, EntityType...
    method apply (line 35) | public function apply(Request $request, Campaign $campaign, EntityType...

FILE: app/Http/Controllers/Bulks/DeleteRelationController.php
  class DeleteRelationController (line 11) | class DeleteRelationController extends Controller
    method __construct (line 13) | public function __construct(
    method index (line 19) | public function index(Campaign $campaign)
    method apply (line 28) | public function apply(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Bulks/PermissionController.php
  class PermissionController (line 11) | class PermissionController extends Controller
    method __construct (line 13) | public function __construct(
    method index (line 19) | public function index(Request $request, Campaign $campaign, EntityType...
    method apply (line 29) | public function apply(Request $request, Campaign $campaign, EntityType...

FILE: app/Http/Controllers/Bulks/PrintController.php
  class PrintController (line 12) | class PrintController extends Controller
    method __construct (line 14) | public function __construct(
    method index (line 20) | public function index(Request $request, Campaign $campaign, EntityType...

FILE: app/Http/Controllers/Bulks/TemplateController.php
  class TemplateController (line 13) | class TemplateController extends Controller
    method __construct (line 15) | public function __construct(
    method index (line 22) | public function index(Request $request, Campaign $campaign, EntityType...
    method apply (line 36) | public function apply(Template $request, Campaign $campaign, EntityTyp...

FILE: app/Http/Controllers/Bulks/TransformController.php
  class TransformController (line 13) | class TransformController extends Controller
    method __construct (line 15) | public function __construct(
    method index (line 22) | public function index(Request $request, Campaign $campaign, EntityType...
    method apply (line 38) | public function apply(Transform $request, Campaign $campaign, EntityTy...

FILE: app/Http/Controllers/Calendar/CalendarWeatherController.php
  class CalendarWeatherController (line 13) | class CalendarWeatherController extends Controller
    method __construct (line 17) | public function __construct(CalendarService $calendarService)
    method index (line 22) | public function index(Campaign $campaign, Calendar $calendar)
    method create (line 27) | public function create(Campaign $campaign, Calendar $calendar)
    method store (line 52) | public function store(AddCalendarWeather $request, Campaign $campaign,...
    method update (line 72) | public function update(AddCalendarWeather $request, Campaign $campaign...
    method destroy (line 92) | public function destroy(Campaign $campaign, Calendar $calendar, Calend...

FILE: app/Http/Controllers/Calendars/Bulks/EntityEventController.php
  class EntityEventController (line 13) | class EntityEventController extends Controller
    method index (line 18) | public function index(Request $request, Campaign $campaign, Calendar $...

FILE: app/Http/Controllers/Calendars/EventController.php
  class EventController (line 26) | class EventController extends Controller
    method __construct (line 37) | public function __construct(CalendarService $calendarService, LengthVa...
    method index (line 43) | public function index(Campaign $campaign, Calendar $calendar)
    method create (line 90) | public function create(Campaign $campaign, Calendar $calendar)
    method store (line 110) | public function store(AddCalendarEvent $request, Campaign $campaign, C...
    method eventLength (line 148) | public function eventLength(Campaign $campaign, Calendar $calendar, Va...

FILE: app/Http/Controllers/Campaign/AchievementController.php
  class AchievementController (line 12) | class AchievementController extends Controller
    method __construct (line 14) | public function __construct(protected AchievementService $service) {}
    method index (line 16) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/ApplicationController.php
  class ApplicationController (line 13) | class ApplicationController extends Controller
    method __construct (line 15) | public function __construct(protected ApplicationService $service)
    method index (line 20) | public function index(Campaign $campaign)
    method show (line 40) | public function show(Campaign $campaign, Application $application)
    method edit (line 62) | public function edit(Campaign $campaign, Application $application)
    method update (line 85) | public function update(PatchCampaignApplication $request, Campaign $ca...
    method toggle (line 111) | public function toggle(Campaign $campaign)
    method toggleSave (line 118) | public function toggleSave(StoreCampaignApplicationStatus $request, Ca...

FILE: app/Http/Controllers/Campaign/ApplicationDashboardController.php
  class ApplicationDashboardController (line 10) | class ApplicationDashboardController extends Controller
    method __construct (line 12) | public function __construct()
    method index (line 17) | public function index(Campaign $campaign)
    method store (line 28) | public function store(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/ApplicationSetupController.php
  class ApplicationSetupController (line 15) | class ApplicationSetupController extends Controller
    method __construct (line 17) | public function __construct(protected ApplicationService $service, pro...
    method setup (line 22) | public function setup(Campaign $campaign)
    method saveSetup (line 58) | public function saveSetup(StoreCampaignSetup $request, Campaign $campa...

FILE: app/Http/Controllers/Campaign/ApplyController.php
  class ApplyController (line 12) | class ApplyController extends Controller
    method __construct (line 14) | public function __construct(protected ApplicationService $service)
    method index (line 19) | public function index(Campaign $campaign)
    method save (line 41) | public function save(StoreCampaignApplication $request, Campaign $camp...
    method remove (line 64) | public function remove(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/CreateController.php
  class CreateController (line 15) | class CreateController extends Controller
    method __construct (line 17) | public function __construct(
    method index (line 26) | public function index(Request $request)
    method store (line 55) | public function store(StoreCampaign $request)

FILE: app/Http/Controllers/Campaign/CssController.php
  class CssController (line 10) | class CssController extends Controller
    method index (line 17) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/DashboardController.php
  class DashboardController (line 13) | class DashboardController extends Controller
    method __construct (line 15) | public function __construct(protected DashboardService $service)
    method index (line 24) | public function index()
    method create (line 29) | public function create(Campaign $campaign)
    method store (line 46) | public function store(StoreCampaignDashboard $request, Campaign $campa...
    method edit (line 68) | public function edit(Campaign $campaign, CampaignDashboard $campaignDa...
    method update (line 77) | public function update(Campaign $campaign, CampaignDashboard $campaign...
    method destroy (line 93) | public function destroy(Campaign $campaign, CampaignDashboard $campaig...
    method cta (line 106) | protected function cta(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/DashboardHeaderController.php
  class DashboardHeaderController (line 15) | class DashboardHeaderController extends Controller
    method edit (line 22) | public function edit(Campaign $campaign, ?CampaignDashboardWidget $cam...
    method update (line 44) | public function update(UpdateCampaignHeader $request, Campaign $campai...

FILE: app/Http/Controllers/Campaign/DashboardWidgetController.php
  class DashboardWidgetController (line 13) | class DashboardWidgetController extends Controller
    method __construct (line 20) | public function __construct(protected EntityTypeService $entityTypeSer...
    method index (line 25) | public function index(Campaign $campaign)
    method create (line 44) | public function create(Campaign $campaign)
    method store (line 79) | public function store(StoreCampaignDashboardWidget $request, Campaign ...
    method show (line 99) | public function show(Campaign $campaign, CampaignDashboardWidget $camp...
    method edit (line 104) | public function edit(Campaign $campaign, CampaignDashboardWidget $camp...
    method update (line 128) | public function update(StoreCampaignDashboardWidget $request, Campaign...
    method destroy (line 148) | public function destroy(Campaign $campaign, CampaignDashboardWidget $c...

FILE: app/Http/Controllers/Campaign/DefaultImageController.php
  class DefaultImageController (line 18) | class DefaultImageController extends Controller
    method __construct (line 20) | public function __construct(
    method index (line 32) | public function index(Campaign $campaign)
    method create (line 53) | public function create(Campaign $campaign)
    method store (line 71) | public function store(DefaultImageStore $request, Campaign $campaign)
    method destroy (line 101) | public function destroy(DefaultImageDestroy $request, Campaign $campaign)
    method reset (line 125) | public function reset(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/DefaultsController.php
  class DefaultsController (line 9) | class DefaultsController extends Controller
    method index (line 11) | public function index(Campaign $campaign)
    method save (line 18) | public function save(StoreDefaults $request, Campaign $campaign)

FILE: app/Http/Controllers/Campaign/DeleteController.php
  class DeleteController (line 10) | class DeleteController extends Controller
    method __construct (line 14) | public function __construct(DeletionService $deletionService)
    method show (line 20) | public function show(Campaign $campaign)
    method destroy (line 28) | public function destroy(DeleteCampaign $request, Campaign $campaign)

FILE: app/Http/Controllers/Campaign/EntityTypeController.php
  class EntityTypeController (line 13) | class EntityTypeController extends Controller
    method __construct (line 15) | public function __construct(
    method create (line 19) | public function create(Campaign $campaign)
    method store (line 45) | public function store(StoreEntityType $request, Campaign $campaign)
    method edit (line 70) | public function edit(Campaign $campaign, EntityType $entityType)
    method update (line 94) | public function update(StoreEntityType $request, Campaign $campaign, E...
    method toggle (line 121) | public function toggle(Campaign $campaign, EntityType $entityType)
    method confirm (line 145) | public function confirm(Campaign $campaign, EntityType $entityType)
    method destroy (line 158) | public function destroy(DeleteEntityType $request, Campaign $campaign,...

FILE: app/Http/Controllers/Campaign/ExportController.php
  class ExportController (line 11) | class ExportController extends Controller
    method __construct (line 13) | public function __construct(protected QueueService $queueService)
    method index (line 18) | public function index(Campaign $campaign)
    method export (line 30) | public function export(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Campaign/FollowController.php
  class FollowController (line 9) | class FollowController extends Controller
    method __construct (line 13) | public function __construct(FollowService $service)
    method update (line 19) | public function update(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/ImageController.php
  class ImageController (line 9) | class ImageController extends Controller
    method index (line 11) | public function index(Campaign $campaign)
    method save (line 19) | public function save(StoreImage $request, Campaign $campaign)

FILE: app/Http/Controllers/Campaign/ImportController.php
  class ImportController (line 12) | class ImportController extends Controller
    method __construct (line 16) | public function __construct(PrepareService $prepareService)
    method index (line 22) | public function index(Campaign $campaign)
    method csv (line 59) | public function csv(Campaign $campaign, CampaignImport $campaignImport)

FILE: app/Http/Controllers/Campaign/InviteController.php
  class InviteController (line 15) | class InviteController extends Controller
    method __construct (line 22) | public function __construct()
    method index (line 30) | public function index()
    method show (line 35) | public function show(Campaign $campaign, CampaignInvite $campaignInvite)
    method create (line 47) | public function create(Campaign $campaign)
    method store (line 65) | public function store(StoreCampaignInvite $request, Campaign $campaign)
    method destroy (line 97) | public function destroy(Campaign $campaign, CampaignInvite $campaignIn...

FILE: app/Http/Controllers/Campaign/LeaveController.php
  class LeaveController (line 11) | class LeaveController extends Controller
    method __construct (line 13) | public function __construct(
    method index (line 20) | public function index(Campaign $campaign)
    method process (line 27) | public function process(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/LogController.php
  class LogController (line 10) | class LogController extends Controller
    method __construct (line 12) | public function __construct()
    method index (line 17) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/MemberController.php
  class MemberController (line 13) | class MemberController extends Controller
    method __construct (line 20) | public function __construct()
    method switch (line 32) | public function switch(Campaign $campaign, CampaignUser $campaignUser,...
    method back (line 55) | public function back(Campaign $campaign)
    method delete (line 67) | public function delete(Campaign $campaign, CampaignUser $campaignUser)

FILE: app/Http/Controllers/Campaign/Members/RoleController.php
  class RoleController (line 16) | class RoleController extends Controller
    method __construct (line 23) | public function __construct(
    method index (line 34) | public function index(Campaign $campaign, CampaignUser $campaignUser)
    method save (line 50) | public function save(UpdateUserRoles $request, Campaign $campaign, Cam...

FILE: app/Http/Controllers/Campaign/ModuleController.php
  class ModuleController (line 14) | class ModuleController extends Controller
    method __construct (line 16) | public function __construct(
    method index (line 22) | public function index(Campaign $campaign)
    method edit (line 44) | public function edit(Campaign $campaign, EntityType $entityType)
    method update (line 69) | public function update(UpdateModuleName $request, Campaign $campaign, ...
    method reset (line 87) | public function reset(Campaign $campaign)
    method toggle (line 108) | public function toggle(Campaign $campaign, EntityType $entityType)
    method toggleFeature (line 134) | public function toggleFeature(Campaign $campaign, string $module)

FILE: app/Http/Controllers/Campaign/PluginController.php
  class PluginController (line 13) | class PluginController extends Controller
    method __construct (line 15) | public function __construct(protected PluginService $service) {}
    method index (line 17) | public function index(Campaign $campaign)
    method delete (line 56) | public function delete(Request $request, Campaign $campaign, Plugin $p...

FILE: app/Http/Controllers/Campaign/Plugins/BulkController.php
  class BulkController (line 12) | class BulkController extends Controller
    method __construct (line 14) | public function __construct(protected PluginService $service)
    method index (line 19) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/Plugins/CssController.php
  class CssController (line 10) | class CssController extends Controller
    method index (line 12) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/Plugins/ImportController.php
  class ImportController (line 14) | class ImportController extends Controller
    method __construct (line 16) | public function __construct(protected ImporterService $importerService)
    method index (line 21) | public function index(Campaign $campaign, Plugin $plugin)
    method process (line 35) | public function process(Request $request, Campaign $campaign, Plugin $...

FILE: app/Http/Controllers/Campaign/Plugins/ToggleController.php
  class ToggleController (line 11) | class ToggleController extends Controller
    method __construct (line 13) | public function __construct(protected PluginService $service)
    method enable (line 18) | public function enable(Campaign $campaign, Plugin $plugin)
    method disable (line 31) | public function disable(Campaign $campaign, Plugin $plugin)

FILE: app/Http/Controllers/Campaign/Plugins/UpdateController.php
  class UpdateController (line 12) | class UpdateController extends Controller
    method __construct (line 14) | public function __construct(protected PluginService $service)
    method index (line 19) | public function index(Campaign $campaign, Plugin $plugin)
    method update (line 34) | public function update(Request $request, Campaign $campaign, Plugin $p...

FILE: app/Http/Controllers/Campaign/RecoveryController.php
  class RecoveryController (line 13) | class RecoveryController extends Controller
    method __construct (line 15) | public function __construct(
    method index (line 23) | public function index(Campaign $campaign)
    method setup (line 30) | public function setup(Campaign $campaign)
    method recover (line 42) | public function recover(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Campaign/RoleController.php
  class RoleController (line 21) | class RoleController extends Controller
    method __construct (line 32) | public function __construct(RolePermissionService $rolePermissionServi...
    method index (line 43) | public function index(Campaign $campaign)
    method create (line 79) | public function create(Campaign $campaign)
    method duplicate (line 98) | public function duplicate(Campaign $campaign, CampaignRole $campaignRole)
    method store (line 112) | public function store(StoreCampaignRole $request, Campaign $campaign)
    method show (line 135) | public function show(Campaign $campaign, CampaignRole $campaignRole)
    method edit (line 159) | public function edit(Campaign $campaign, CampaignRole $campaignRole)
    method update (line 171) | public function update(StoreCampaignRole $request, Campaign $campaign,...
    method destroy (line 182) | public function destroy(Campaign $campaign, CampaignRole $campaignRole)
    method savePermissions (line 197) | public function savePermissions(Request $request, Campaign $campaign, ...
    method admin (line 215) | public function admin(Campaign $campaign)
    method public (line 231) | public function public(Campaign $campaign)
    method search (line 245) | public function search(Request $request, Campaign $campaign)
    method toggle (line 274) | public function toggle(Campaign $campaign, CampaignRole $campaignRole,...
    method bulk (line 296) | public function bulk(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/RoleUserController.php
  class RoleUserController (line 13) | class RoleUserController extends Controller
    method __construct (line 19) | public function __construct(MemberService $service)
    method index (line 26) | public function index(Campaign $campaign)
    method create (line 31) | public function create(Campaign $campaign, CampaignRole $campaignRole)
    method store (line 39) | public function store(StoreCampaignRoleUser $request, Campaign $campai...
    method show (line 60) | public function show(Campaign $campaign, CampaignRole $campaignRole, C...
    method destroy (line 66) | public function destroy(Campaign $campaign, CampaignRole $campaignRole...

FILE: app/Http/Controllers/Campaign/ShareController.php
  class ShareController (line 13) | class ShareController extends Controller
    method __construct (line 15) | public function __construct(protected ShareService $shareService)
    method setup (line 23) | public function setup(Campaign $campaign): View
    method save (line 33) | public function save(Request $request, Campaign $campaign): JsonResponse

FILE: app/Http/Controllers/Campaign/SidebarController.php
  class SidebarController (line 12) | class SidebarController extends Controller
    method __construct (line 14) | public function __construct(protected SetupService $service, protected...
    method index (line 20) | public function index(Campaign $campaign)
    method save (line 35) | public function save(Request $request, Campaign $campaign)
    method reset (line 52) | public function reset(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/StatController.php
  class StatController (line 10) | class StatController extends Controller
    method __construct (line 12) | public function __construct(
    method index (line 16) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/StyleController.php
  class StyleController (line 23) | class StyleController extends Controller
    method __construct (line 32) | public function __construct()
    method index (line 43) | public function index(Campaign $campaign)
    method show (line 70) | public function show(Campaign $campaign, CampaignStyle $campaignStyle)
    method create (line 76) | public function create(Campaign $campaign)
    method store (line 88) | public function store(StoreCampaignStyle $request, Campaign $campaign)
    method edit (line 115) | public function edit(Campaign $campaign, CampaignStyle $campaignStyle)
    method update (line 128) | public function update(StoreCampaignStyle $request, Campaign $campaign...
    method destroy (line 145) | public function destroy(Campaign $campaign, CampaignStyle $campaignStyle)
    method theme (line 156) | public function theme(Campaign $campaign)
    method themeSave (line 168) | public function themeSave(StoreCampaignTheme $request, Campaign $campa...
    method bulk (line 187) | public function bulk(Campaign $campaign)
    method reorder (line 222) | public function reorder(ReorderStyles $request, Campaign $campaign)
    method toggle (line 249) | public function toggle(Campaign $campaign, CampaignStyle $campaignStyle)

FILE: app/Http/Controllers/Campaign/ThemeBuilderController.php
  class ThemeBuilderController (line 13) | class ThemeBuilderController extends Controller
    method __construct (line 15) | public function __construct(protected ThemeBuilderService $themeBuilde...
    method index (line 21) | public function index(Campaign $campaign)
    method save (line 31) | public function save(StoreTheme $request, Campaign $campaign)
    method reset (line 46) | public function reset(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/UserController.php
  class UserController (line 19) | class UserController extends Controller
    method __construct (line 29) | public function __construct()
    method index (line 39) | public function index(Campaign $campaign)
    method destroy (line 79) | public function destroy(Campaign $campaign, CampaignUser $campaignUser)
    method search (line 94) | public function search(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Campaign/VanityController.php
  class VanityController (line 10) | class VanityController extends Controller
    method index (line 12) | public function index(Vanity $request, Campaign $campaign)

FILE: app/Http/Controllers/Campaign/VisibilityController.php
  class VisibilityController (line 9) | class VisibilityController extends Controller
    method __construct (line 16) | public function __construct()
    method edit (line 21) | public function edit(Campaign $campaign)
    method save (line 29) | public function save(StoreCampaignVisibility $request, Campaign $campa...

FILE: app/Http/Controllers/Campaign/WebController.php
  class WebController (line 9) | class WebController extends Controller
    method __construct (line 11) | public function __construct(protected WebService $webService) {}
    method index (line 13) | public function index(Campaign $campaign)
    method api (line 21) | public function api(Campaign $campaign)

FILE: app/Http/Controllers/Campaign/WebhookController.php
  class WebhookController (line 20) | class WebhookController extends Controller
    method __construct (line 24) | public function __construct(protected SaveService $service)
    method index (line 34) | public function index(Campaign $campaign)
    method create (line 67) | public function create(Campaign $campaign)
    method store (line 83) | public function store(StoreWebhook $request, Campaign $campaign)
    method edit (line 105) | public function edit(Campaign $campaign, Webhook $webhook)
    method update (line 115) | public function update(StoreWebhook $request, Campaign $campaign, Webh...
    method destroy (line 131) | public function destroy(Campaign $campaign, Webhook $webhook)
    method toggle (line 146) | public function toggle(Campaign $campaign, Webhook $webhook)
    method bulk (line 165) | public function bulk(Campaign $campaign)
    method test (line 205) | public function test(Campaign $campaign, Webhook $webhook)

FILE: app/Http/Controllers/CampaignBoostController.php
  class CampaignBoostController (line 16) | class CampaignBoostController extends Controller
    method __construct (line 20) | public function __construct(BoostService $campaignBoostService)
    method create (line 26) | public function create()
    method store (line 57) | public function store(Request $request)
    method show (line 111) | public function show(CampaignBoost $campaignBoost)
    method edit (line 116) | public function edit(CampaignBoost $campaignBoost)
    method update (line 133) | public function update(Request $request, CampaignBoost $campaignBoost)
    method confirm (line 170) | public function confirm(CampaignBoost $campaignBoost)
    method destroy (line 188) | public function destroy(CampaignBoost $campaignBoost)

FILE: app/Http/Controllers/Characters/Families/ManagementController.php
  class ManagementController (line 16) | class ManagementController extends Controller
    method index (line 23) | public function index(Campaign $campaign, Character $character)
    method save (line 44) | public function save(Campaign $campaign, Character $character, ManageF...

FILE: app/Http/Controllers/Characters/MemberController.php
  class MemberController (line 15) | class MemberController extends Controller
    method index (line 22) | public function index(Campaign $campaign, Character $character)

FILE: app/Http/Controllers/Characters/MembershipController.php
  class MembershipController (line 19) | class MembershipController extends Controller
    method __construct (line 28) | public function __construct()
    method index (line 36) | public function index(Campaign $campaign, Character $character)
    method create (line 46) | public function create(Campaign $campaign, Character $character)
    method store (line 56) | public function store(StoreCharacterOrganisation $request, Campaign $c...
    method show (line 77) | public function show(Campaign $campaign, Character $character, Organis...
    method edit (line 88) | public function edit(Campaign $campaign, Character $character, Charact...
    method update (line 99) | public function update(
    method destroy (line 128) | public function destroy(Campaign $campaign, Character $character, Char...

FILE: app/Http/Controllers/Characters/Races/ManagementController.php
  class ManagementController (line 16) | class ManagementController extends Controller
    method index (line 23) | public function index(Campaign $campaign, Character $character)
    method save (line 44) | public function save(Campaign $campaign, Character $character, ManageR...

FILE: app/Http/Controllers/ConfirmController.php
  class ConfirmController (line 7) | class ConfirmController extends Controller
    method __construct (line 9) | public function __construct()
    method index (line 14) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Controller.php
  class Controller (line 10) | class Controller extends BaseController
    method callAction (line 16) | public function callAction($method, $parameters)

FILE: app/Http/Controllers/ConversationMessageController.php
  class ConversationMessageController (line 16) | class ConversationMessageController extends Controller
    method index (line 21) | public function index(Campaign $campaign, Conversation $conversation)
    method store (line 33) | public function store(StoreConversationMessage $request, Campaign $cam...
    method update (line 51) | public function update(StoreConversationMessage $request, Campaign $ca...
    method destroy (line 68) | public function destroy(Campaign $campaign, Conversation $conversation...

FILE: app/Http/Controllers/ConversationParticipantController.php
  class ConversationParticipantController (line 10) | class ConversationParticipantController extends Controller
    method index (line 12) | public function index(Campaign $campaign, Conversation $conversation)
    method store (line 17) | public function store(StoreConversationParticipant $request, Campaign ...
    method edit (line 35) | public function edit(Campaign $campaign, Conversation $conversation, C...
    method update (line 42) | public function update(
    method destroy (line 59) | public function destroy(Campaign $campaign, Conversation $conversation...

FILE: app/Http/Controllers/CookieConsentController.php
  class CookieConsentController (line 7) | class CookieConsentController extends Controller
    method __construct (line 16) | public function __construct(CountryService $service)
    method index (line 21) | public function index()

FILE: app/Http/Controllers/Creatures/CreatureController.php
  class CreatureController (line 13) | class CreatureController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Creature $creature)

FILE: app/Http/Controllers/Crud/AbilityController.php
  class AbilityController (line 12) | class AbilityController extends CrudController
    method store (line 27) | public function store(Campaign $campaign, StoreAbility $request)
    method show (line 32) | public function show(Campaign $campaign, Ability $ability)
    method edit (line 40) | public function edit(Campaign $campaign, Ability $ability)
    method update (line 45) | public function update(StoreAbility $request, Campaign $campaign, Abil...
    method destroy (line 50) | public function destroy(Campaign $campaign, Ability $ability)
    method getEntityType (line 55) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/AttributeTemplateController.php
  class AttributeTemplateController (line 12) | class AttributeTemplateController extends CrudController
    method store (line 26) | public function store(StoreAttributeTemplate $request, Campaign $campa...
    method show (line 34) | public function show(Campaign $campaign, AttributeTemplate $attributeT...
    method edit (line 42) | public function edit(Campaign $campaign, AttributeTemplate $attributeT...
    method update (line 47) | public function update(StoreAttributeTemplate $request, Campaign $camp...
    method destroy (line 55) | public function destroy(Campaign $campaign, AttributeTemplate $attribu...
    method getEntityType (line 60) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/BookmarkController.php
  class BookmarkController (line 15) | class BookmarkController extends CrudController
    method index (line 38) | public function index(Request $request, Campaign $campaign)
    method create (line 48) | public function create(Campaign $campaign)
    method store (line 59) | public function store(StoreBookmark $request, Campaign $campaign)
    method show (line 67) | public function show(Campaign $campaign, Bookmark $bookmark)
    method edit (line 79) | public function edit(Campaign $campaign, Bookmark $bookmark)
    method update (line 90) | public function update(StoreBookmark $request, Campaign $campaign, Boo...
    method destroy (line 134) | public function destroy(Campaign $campaign, Bookmark $bookmark)
    method limitCheckReached (line 139) | protected function limitCheckReached(): bool
    method getEntityType (line 144) | protected function getEntityType(): EntityType
    method dashboardOptions (line 149) | protected function dashboardOptions(): array
    method sidebarParents (line 165) | protected function sidebarParents(): array

FILE: app/Http/Controllers/Crud/CalendarController.php
  class CalendarController (line 13) | class CalendarController extends CrudController
    method store (line 30) | public function store(StoreCalendar $request, Campaign $campaign)
    method show (line 38) | public function show(Campaign $campaign, Calendar $calendar)
    method edit (line 46) | public function edit(Campaign $campaign, Calendar $calendar)
    method update (line 54) | public function update(StoreCalendar $request, Campaign $campaign, Cal...
    method destroy (line 62) | public function destroy(Campaign $campaign, Calendar $calendar)
    method monthList (line 67) | public function monthList(Campaign $campaign, Calendar $calendar)
    method today (line 83) | public function today(Campaign $campaign, Calendar $calendar)
    method getEntityType (line 98) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/CampaignController.php
  class CampaignController (line 15) | class CampaignController extends Controller
    method __construct (line 19) | public function __construct(
    method show (line 28) | public function show(Campaign $campaign)
    method edit (line 33) | public function edit(Campaign $campaign)
    method update (line 70) | public function update(UpdateCampaign $request, Campaign $campaign)

FILE: app/Http/Controllers/Crud/CharacterController.php
  class CharacterController (line 18) | class CharacterController extends CrudController
    method __construct (line 30) | public function __construct(
    method store (line 40) | public function store(StoreCharacter $request, Campaign $campaign)
    method show (line 45) | public function show(Campaign $campaign, Character $character)
    method edit (line 50) | public function edit(Campaign $campaign, Character $character)
    method update (line 55) | public function update(StoreCharacter $request, Campaign $campaign, Ch...
    method destroy (line 60) | public function destroy(Campaign $campaign, Character $character)
    method afterModelSave (line 65) | protected function afterModelSave(MiscModel $model, array $data): void
    method getEntityType (line 70) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/ConversationController.php
  class ConversationController (line 13) | class ConversationController extends CrudController
    method store (line 29) | public function store(StoreConversation $request, Campaign $campaign)
    method show (line 34) | public function show(Campaign $campaign, Conversation $conversation)
    method edit (line 39) | public function edit(Campaign $campaign, Conversation $conversation)
    method update (line 44) | public function update(StoreConversation $request, Campaign $campaign,...
    method destroy (line 49) | public function destroy(Campaign $campaign, Conversation $conversation)
    method getEntityType (line 54) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/CreatureController.php
  class CreatureController (line 13) | class CreatureController extends CrudController
    method store (line 28) | public function store(Campaign $campaign, StoreCreature $request)
    method show (line 33) | public function show(Campaign $campaign, Creature $creature)
    method edit (line 38) | public function edit(Campaign $campaign, Creature $creature)
    method update (line 43) | public function update(Campaign $campaign, StoreCreature $request, Cre...
    method destroy (line 48) | public function destroy(Campaign $campaign, Creature $creature)
    method getEntityType (line 53) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/DiceRollController.php
  class DiceRollController (line 25) | class DiceRollController extends CrudController
    method store (line 46) | public function store(Campaign $campaign, StoreDiceRoll $request)
    method show (line 56) | public function show(Campaign $campaign, DiceRoll $diceRoll)
    method edit (line 67) | public function edit(Campaign $campaign, DiceRoll $diceRoll)
    method update (line 80) | public function update(StoreDiceRoll $request, Campaign $campaign, Dic...
    method destroy (line 90) | public function destroy(Campaign $campaign, DiceRoll $diceRoll)
    method roll (line 100) | public function roll(Campaign $campaign, DiceRoll $diceRoll)
    method destroyRoll (line 123) | public function destroyRoll(Campaign $campaign, DiceRoll $diceRoll, Di...
    method getEntityType (line 133) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/EventController.php
  class EventController (line 14) | class EventController extends CrudController
    method store (line 26) | public function store(StoreEvent $request, Campaign $campaign)
    method show (line 31) | public function show(Campaign $campaign, Event $event)
    method edit (line 36) | public function edit(Campaign $campaign, Event $event)
    method update (line 41) | public function update(StoreEvent $request, Campaign $campaign, Event ...
    method destroy (line 46) | public function destroy(Campaign $campaign, Event $event)
    method afterModelSave (line 51) | protected function afterModelSave(MiscModel $model, array $data): void
    method getEntityType (line 56) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/FamilyController.php
  class FamilyController (line 18) | class FamilyController extends CrudController
    method __construct (line 30) | public function __construct(
    method store (line 40) | public function store(StoreFamily $request, Campaign $campaign)
    method show (line 45) | public function show(Campaign $campaign, Family $family)
    method edit (line 50) | public function edit(Campaign $campaign, Family $family)
    method update (line 55) | public function update(StoreFamily $request, Campaign $campaign, Famil...
    method destroy (line 60) | public function destroy(Campaign $campaign, Family $family)
    method afterModelSave (line 65) | protected function afterModelSave(MiscModel $model, array $data): void
    method getEntityType (line 70) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/ItemController.php
  class ItemController (line 18) | class ItemController extends CrudController
    method __construct (line 30) | public function __construct(
    method store (line 43) | public function store(StoreItem $request, Campaign $campaign)
    method show (line 51) | public function show(Campaign $campaign, Item $item)
    method edit (line 59) | public function edit(Campaign $campaign, Item $item)
    method update (line 67) | public function update(StoreItem $request, Campaign $campaign, Item $i...
    method destroy (line 75) | public function destroy(Campaign $campaign, Item $item)
    method afterModelSave (line 80) | protected function afterModelSave(MiscModel $model, array $data): void
    method getEntityType (line 85) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/JournalController.php
  class JournalController (line 12) | class JournalController extends CrudController
    method store (line 27) | public function store(StoreJournal $request, Campaign $campaign)
    method show (line 35) | public function show(Campaign $campaign, Journal $journal)
    method edit (line 43) | public function edit(Campaign $campaign, Journal $journal)
    method update (line 51) | public function update(StoreJournal $request, Campaign $campaign, Jour...
    method destroy (line 59) | public function destroy(Campaign $campaign, Journal $journal)
    method getEntityType (line 64) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/LocationController.php
  class LocationController (line 18) | class LocationController extends CrudController
    method __construct (line 30) | public function __construct(
    method store (line 43) | public function store(StoreLocation $request, Campaign $campaign)
    method show (line 51) | public function show(Campaign $campaign, Location $location)
    method edit (line 59) | public function edit(Campaign $campaign, Location $location)
    method update (line 67) | public function update(StoreLocation $request, Campaign $campaign, Loc...
    method destroy (line 75) | public function destroy(Campaign $campaign, Location $location)
    method afterModelSave (line 80) | protected function afterModelSave(MiscModel $model, array $data): void
    method getEntityType (line 85) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/MapController.php
  class MapController (line 13) | class MapController extends CrudController
    method store (line 28) | public function store(StoreMap $request, Campaign $campaign)
    method show (line 36) | public function show(Campaign $campaign, Map $map)
    method edit (line 44) | public function edit(Campaign $campaign, Map $map)
    method update (line 59) | public function update(StoreMap $request, Campaign $campaign, Map $map)
    method destroy (line 67) | public function destroy(Campaign $campaign, Map $map)
    method afterModelSave (line 72) | protected function afterModelSave(MiscModel $model, array $data): void
    method getEntityType (line 80) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/NoteController.php
  class NoteController (line 13) | class NoteController extends CrudController
    method store (line 28) | public function store(StoreNote $request, Campaign $campaign)
    method show (line 33) | public function show(Campaign $campaign, Note $note)
    method edit (line 38) | public function edit(Campaign $campaign, Note $note)
    method update (line 43) | public function update(StoreNote $request, Campaign $campaign, Note $n...
    method destroy (line 48) | public function destroy(Campaign $campaign, Note $note)
    method getEntityType (line 53) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/OrganisationController.php
  class OrganisationController (line 18) | class OrganisationController extends CrudController
    method __construct (line 30) | public function __construct(
    method store (line 43) | public function store(StoreOrganisation $request, Campaign $campaign)
    method show (line 51) | public function show(Campaign $campaign, Organisation $organisation)
    method edit (line 59) | public function edit(Campaign $campaign, Organisation $organisation)
    method update (line 67) | public function update(StoreOrganisation $request, Campaign $campaign,...
    method destroy (line 75) | public function destroy(Campaign $campaign, Organisation $organisation)
    method afterModelSave (line 80) | protected function afterModelSave(MiscModel $model, array $data): void
    method getEntityType (line 85) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/QuestController.php
  class QuestController (line 12) | class QuestController extends CrudController
    method store (line 24) | public function store(StoreQuest $request, Campaign $campaign)
    method show (line 29) | public function show(Campaign $campaign, Quest $quest)
    method edit (line 34) | public function edit(Campaign $campaign, Quest $quest)
    method update (line 39) | public function update(StoreQuest $request, Campaign $campaign, Quest ...
    method destroy (line 44) | public function destroy(Campaign $campaign, Quest $quest)
    method getEntityType (line 49) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/RaceController.php
  class RaceController (line 13) | class RaceController extends CrudController
    method store (line 28) | public function store(StoreRace $request, Campaign $campaign)
    method show (line 33) | public function show(Campaign $campaign, Race $race)
    method edit (line 38) | public function edit(Campaign $campaign, Race $race)
    method update (line 43) | public function update(StoreRace $request, Campaign $campaign, Race $r...
    method destroy (line 48) | public function destroy(Campaign $campaign, Race $race)
    method getEntityType (line 53) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/TagController.php
  class TagController (line 12) | class TagController extends CrudController
    method store (line 27) | public function store(StoreTag $request, Campaign $campaign)
    method show (line 35) | public function show(Campaign $campaign, Tag $tag)
    method edit (line 43) | public function edit(Campaign $campaign, Tag $tag)
    method update (line 51) | public function update(StoreTag $request, Campaign $campaign, Tag $tag)
    method destroy (line 59) | public function destroy(Campaign $campaign, Tag $tag)
    method getEntityType (line 64) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/Crud/TimelineController.php
  class TimelineController (line 12) | class TimelineController extends CrudController
    method store (line 24) | public function store(StoreTimeline $request, Campaign $campaign)
    method show (line 32) | public function show(Campaign $campaign, Timeline $timeline)
    method edit (line 40) | public function edit(Campaign $campaign, Timeline $timeline)
    method update (line 48) | public function update(StoreTimeline $request, Campaign $campaign, Tim...
    method destroy (line 56) | public function destroy(Campaign $campaign, Timeline $timeline)
    method getEntityType (line 61) | protected function getEntityType(): EntityType

FILE: app/Http/Controllers/CrudController.php
  class CrudController (line 48) | class CrudController extends Controller
    method __construct (line 110) | public function __construct(
    method afterModelSave (line 124) | protected function afterModelSave(MiscModel $model, array $data): void {}
    method index (line 126) | public function index(Request $request, Campaign $campaign)
    method crudIndex (line 131) | public function crudIndex(Request $request)
    method create (line 322) | public function create(Campaign $campaign)
    method crudCreate (line 327) | public function crudCreate($params = [])
    method crudStore (line 396) | public function crudStore(Request $request, bool $redirectToCreated = ...
    method crudShow (line 555) | public function crudShow(Model|MiscModel $model)
    method crudEdit (line 568) | public function crudEdit(Model|MiscModel $model, array $params = [])
    method crudUpdate (line 634) | public function crudUpdate(Request $request, Model|MiscModel $model)
    method crudDestroy (line 759) | public function crudDestroy(Model|MiscModel $model)
    method prepareData (line 767) | protected function prepareData(Request $request, MiscModel $model)
    method datagridSorter (line 782) | protected function datagridSorter(string $datagridSorter): self
    method moduleEnabled (line 793) | protected function moduleEnabled(): bool
    method hasLimitCheck (line 801) | protected function hasLimitCheck(bool $value = true): self
    method loadTemplates (line 811) | protected function loadTemplates(EntityType $entityType): Collection
    method mode (line 833) | protected function mode(): string
    method isNested (line 876) | protected function isNested(): bool

FILE: app/Http/Controllers/DashboardController.php
  class DashboardController (line 14) | class DashboardController extends Controller
    method __construct (line 16) | public function __construct(protected DashboardService $dashboardServi...
    method index (line 18) | public function index(Campaign $campaign)
    method recent (line 87) | public function recent(Campaign $campaign, $id)
    method unmentioned (line 109) | public function unmentioned(Campaign $campaign, $id)

FILE: app/Http/Controllers/Dashboards/GettingStartedController.php
  class GettingStartedController (line 9) | class GettingStartedController extends Controller
    method __construct (line 11) | public function __construct(protected GettingStartedService $gettingSt...
    method index (line 13) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Dashboards/SetupController.php
  class SetupController (line 10) | class SetupController extends Controller
    method __construct (line 12) | public function __construct()
    method index (line 17) | public function index(Campaign $campaign)
    method save (line 37) | public function save(Campaign $campaign)

FILE: app/Http/Controllers/Datagrid2/BulkControllerTrait.php
  type BulkControllerTrait (line 9) | trait BulkControllerTrait
    method validBulkActions (line 16) | public function validBulkActions(array $values = ['delete', 'edit', 'p...
    method bulkProcess (line 21) | public function bulkProcess(Request $request, string $className): int
    method bulkBatch (line 58) | public function bulkBatch(string $route, string $view, array $models, ...

FILE: app/Http/Controllers/Datagrids/SubscriptionController.php
  class SubscriptionController (line 7) | class SubscriptionController extends Controller
    method __construct (line 9) | public function __construct()
    method index (line 14) | public function index()

FILE: app/Http/Controllers/DiceRolls/ResultsController.php
  class ResultsController (line 10) | class ResultsController extends Controller
    method index (line 12) | public function index(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/EditingController.php
  class EditingController (line 13) | class EditingController extends Controller
    method __construct (line 17) | public function __construct(MultiEditingService $service)
    method index (line 22) | public function index(Campaign $campaign)
    method confirmHandle (line 62) | private function confirmHandle(Model $model)
    method keepAliveHandle (line 72) | private function keepAliveHandle(Model $model)
    method confirm (line 84) | public function confirm(Campaign $campaign, Entity $entity)
    method confirmCampaign (line 91) | public function confirmCampaign(Campaign $campaign)
    method confirmPost (line 98) | public function confirmPost(Campaign $campaign, Entity $entity, Post $...
    method confirmQuestElement (line 105) | public function confirmQuestElement(Campaign $campaign, QuestElement $...
    method confirmTimelineElement (line 112) | public function confirmTimelineElement(Campaign $campaign, TimelineEle...
    method keepAlive (line 119) | public function keepAlive(Campaign $campaign, Entity $entity)
    method keepAliveCampaign (line 126) | public function keepAliveCampaign(Campaign $campaign)
    method keepAlivePost (line 133) | public function keepAlivePost(Campaign $campaign, Entity $entity, Post...
    method keepAliveTimelineElement (line 140) | public function keepAliveTimelineElement(Campaign $campaign, TimelineE...
    method keepAliveQuestElement (line 147) | public function keepAliveQuestElement(Campaign $campaign, QuestElement...

FILE: app/Http/Controllers/Entities/Apis/DocumentController.php
  class DocumentController (line 10) | class DocumentController extends Controller
    method index (line 12) | public function index(Campaign $campaign, Entity $entity)
    method mentions (line 22) | protected function mentions(Entity $entity): array

FILE: app/Http/Controllers/Entities/ChildrenController.php
  class ChildrenController (line 15) | class ChildrenController extends Controller
    method index (line 22) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entities/CreateController.php
  class CreateController (line 18) | class CreateController extends Controller
    method __construct (line 20) | public function __construct(
    method index (line 27) | public function index(Request $request, Campaign $campaign, EntityType...
    method store (line 59) | public function store(StoreCustomEntity $request, Campaign $campaign, ...

FILE: app/Http/Controllers/Entities/DeleteController.php
  class DeleteController (line 9) | class DeleteController extends Controller
    method index (line 11) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entities/EditController.php
  class EditController (line 20) | class EditController extends Controller
    method __construct (line 25) | public function __construct(
    method index (line 33) | public function index(Campaign $campaign, Entity $entity)
    method save (line 65) | public function save(Request $request, Campaign $campaign, Entity $ent...
    method prepareData (line 182) | protected function prepareData(Request $request, MiscModel $model): array
    method fixRequestData (line 194) | protected function fixRequestData(Request $request, Entity $entity): a...

FILE: app/Http/Controllers/Entities/IndexController.php
  class IndexController (line 26) | class IndexController extends Controller
    method __construct (line 38) | public function __construct(
    method index (line 46) | public function index(Request $request, Campaign $campaign, EntityType...
    method loadTemplates (line 117) | protected function loadTemplates(Campaign $campaign, EntityType $entit...
    method api (line 133) | public function api(Request $request, Campaign $campaign, EntityType $...
    method showAds (line 364) | protected function showAds(Campaign $campaign): bool
    method isNested (line 388) | protected function isNested(): bool
    method layoutMode (line 417) | protected function layoutMode(): string
    method perPageValue (line 455) | protected function perPageValue(): int

FILE: app/Http/Controllers/Entities/ListingPreferenceController.php
  class ListingPreferenceController (line 12) | class ListingPreferenceController extends Controller
    method update (line 14) | public function update(
    method destroy (line 36) | public function destroy(

FILE: app/Http/Controllers/Entity/Abilities/ApiController.php
  class ApiController (line 10) | class ApiController extends Controller
    method __construct (line 14) | public function __construct(AbilityService $service)
    method index (line 19) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/Abilities/ChargeController.php
  class ChargeController (line 12) | class ChargeController extends Controller
    method __construct (line 16) | public function __construct(ChargeService $chargeService)
    method use (line 21) | public function use(Request $request, Campaign $campaign, Entity $enti...
    method reset (line 33) | public function reset(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/Abilities/ImportController.php
  class ImportController (line 12) | class ImportController extends Controller
    method __construct (line 16) | public function __construct(ImportService $chargeService)
    method index (line 21) | public function index(Campaign $campaign, Entity $entity)
    method import (line 52) | public function import(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/Abilities/ReorderController.php
  class ReorderController (line 12) | class ReorderController extends Controller
    method __construct (line 14) | public function __construct(protected ReorderService $reorderService) {}
    method index (line 16) | public function index(Campaign $campaign, Entity $entity)
    method save (line 57) | public function save(Campaign $campaign, Entity $entity, ReorderAbilit...

FILE: app/Http/Controllers/Entity/AbilityController.php
  class AbilityController (line 15) | class AbilityController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Entity $entity)
    method create (line 50) | public function create(Campaign $campaign, Entity $entity)
    method store (line 60) | public function store(StoreEntityAbility $request, Campaign $campaign,...
    method show (line 106) | public function show(Campaign $campaign, Entity $entity, EntityAbility...
    method edit (line 112) | public function edit(Campaign $campaign, Entity $entity, EntityAbility...
    method update (line 127) | public function update(UpdateEntityAbility $request, Campaign $campaig...
    method destroy (line 149) | public function destroy(Campaign $campaign, Entity $entity, EntityAbil...

FILE: app/Http/Controllers/Entity/ArchiveController.php
  class ArchiveController (line 10) | class ArchiveController extends Controller
    method __construct (line 14) | public function __construct(ArchiveService $archiveService)
    method update (line 20) | public function update(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/AssetController.php
  class AssetController (line 26) | class AssetController extends Controller
    method index (line 31) | public function index(Campaign $campaign, Entity $entity)
    method show (line 55) | public function show(Campaign $campaign, Entity $entity, EntityAsset $...
    method create (line 60) | public function create(Campaign $campaign, Entity $entity)
    method store (line 74) | public function store(StoreEntityAssets $request, Campaign $campaign, ...
    method storeFile (line 104) | protected function storeFile(StoreEntityAssets $request, Campaign $cam...
    method edit (line 130) | public function edit(Campaign $campaign, Entity $entity, EntityAsset $...
    method update (line 145) | public function update(StoreEntityAsset $request, Campaign $campaign, ...
    method destroy (line 173) | public function destroy(Campaign $campaign, Entity $entity, EntityAsse...
    method createFile (line 201) | protected function createFile(Campaign $campaign, Entity $entity)
    method createLink (line 219) | protected function createLink(Campaign $campaign, Entity $entity)
    method go (line 239) | public function go(Campaign $campaign, Entity $entity, EntityAsset $en...

FILE: app/Http/Controllers/Entity/AttributeController.php
  class AttributeController (line 17) | class AttributeController extends Controller
    method __construct (line 22) | public function __construct(protected AttributeService $service, prote...
    method index (line 24) | public function index(Campaign $campaign, Entity $entity)
    method dashboard (line 55) | public function dashboard(Campaign $campaign, Entity $entity)
    method edit (line 87) | public function edit(Campaign $campaign, Entity $entity)
    method save (line 109) | public function save(SaveAttributes $request, Campaign $campaign, Enti...
    method liveEdit (line 129) | public function liveEdit(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/AttributeTemplateController.php
  class AttributeTemplateController (line 12) | class AttributeTemplateController extends Controller
    method __construct (line 18) | public function __construct(AttributeService $service, TemplateService...
    method index (line 26) | public function index(Campaign $campaign, Entity $entity)
    method process (line 48) | public function process(ApplyAttributeTemplate $request, Campaign $cam...

FILE: app/Http/Controllers/Entity/Attributes/ApiController.php
  class ApiController (line 12) | class ApiController extends Controller
    method __construct (line 19) | public function __construct(ApiService $apiService)
    method index (line 24) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/Attributes/LiveApiController.php
  class LiveApiController (line 15) | class LiveApiController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Entity $entity)
    method store (line 28) | public function store(StoreAttribute $request, Campaign $campaign, Ent...
    method update (line 40) | public function update(UpdateAttribute $request, Campaign $campaign, E...
    method destroy (line 50) | public function destroy(Campaign $campaign, Entity $entity, Attribute ...

FILE: app/Http/Controllers/Entity/Attributes/LiveController.php
  class LiveController (line 12) | class LiveController extends Controller
    method index (line 14) | public function index(Campaign $campaign, Entity $entity, Attribute $a...
    method save (line 25) | public function save(UpdateEntityAttribute $request, Campaign $campaig...

FILE: app/Http/Controllers/Entity/Connections/MapController.php
  class MapController (line 12) | class MapController extends Controller
    method __construct (line 17) | public function __construct(protected MapService $mapService) {}
    method index (line 19) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/Connections/TableController.php
  class TableController (line 14) | class TableController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/CopyInventoryController.php
  class CopyInventoryController (line 14) | class CopyInventoryController extends Controller
    method index (line 23) | public function index(Campaign $campaign, Entity $entity)
    method store (line 33) | public function store(CopyInventory $request, Campaign $campaign, Enti...

FILE: app/Http/Controllers/Entity/EntryController.php
  class EntryController (line 15) | class EntryController extends Controller
    method edit (line 22) | public function edit(Campaign $campaign, Entity $entity)
    method update (line 34) | public function update(UpdateEntityEntry $request, Campaign $campaign,...

FILE: app/Http/Controllers/Entity/ExportController.php
  class ExportController (line 19) | class ExportController extends Controller
    method __construct (line 28) | public function __construct(ExportService $service, MarkdownExportServ...
    method json (line 34) | public function json(Campaign $campaign, Entity $entity)
    method markdown (line 41) | public function markdown(Campaign $campaign, Entity $entity)
    method html (line 63) | public function html(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/GenerateInventoryController.php
  class GenerateInventoryController (line 15) | class GenerateInventoryController extends Controller
    method __construct (line 19) | public function __construct(protected InventoryService $service) {}
    method index (line 26) | public function index(Campaign $campaign, Entity $entity)
    method store (line 36) | public function store(GenerateInventory $request, Campaign $campaign, ...

FILE: app/Http/Controllers/Entity/ImageController.php
  class ImageController (line 13) | class ImageController extends Controller
    method __construct (line 15) | public function __construct()
    method focus (line 23) | public function focus(Campaign $campaign, Entity $entity)
    method saveFocus (line 37) | public function saveFocus(StoreImageFocus $request, Campaign $campaign...
    method replace (line 56) | public function replace(Campaign $campaign, Entity $entity)
    method update (line 65) | public function update(UpdateEntityImage $request, Campaign $campaign,...

FILE: app/Http/Controllers/Entity/Inventory/DetailController.php
  class DetailController (line 12) | class DetailController extends Controller
    method index (line 17) | public function index(Campaign $campaign, Entity $entity, Inventory $i...

FILE: app/Http/Controllers/Entity/InventoryController.php
  class InventoryController (line 14) | class InventoryController extends Controller
    method index (line 32) | public function index(Campaign $campaign, Entity $entity)
    method create (line 53) | public function create(Campaign $campaign, Entity $entity)
    method store (line 71) | public function store(StoreInventory $request, Campaign $campaign, Ent...
    method show (line 110) | public function show(Campaign $campaign, Entity $entity, Inventory $in...
    method edit (line 117) | public function edit(Campaign $campaign, Entity $entity, Inventory $in...
    method update (line 134) | public function update(UpdateInventory $request, Campaign $campaign, E...
    method destroy (line 151) | public function destroy(Campaign $campaign, Entity $entity, Inventory ...

FILE: app/Http/Controllers/Entity/InventorySectionController.php
  class InventorySectionController (line 11) | class InventorySectionController extends Controller
    method delete (line 15) | public function delete(Campaign $campaign, Entity $entity, Inventory $...

FILE: app/Http/Controllers/Entity/LogController.php
  class LogController (line 12) | class LogController extends Controller
    method index (line 14) | public function index(HistoryRequest $request, Campaign $campaign, Ent...

FILE: app/Http/Controllers/Entity/MentionController.php
  class MentionController (line 14) | class MentionController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/MoveController.php
  class MoveController (line 19) | class MoveController extends Controller
    method __construct (line 26) | public function __construct(
    method index (line 39) | public function index(Campaign $campaign, Entity $entity)
    method move (line 58) | public function move(MoveEntityRequest $request, Campaign $campaign, E...

FILE: app/Http/Controllers/Entity/PermissionController.php
  class PermissionController (line 11) | class PermissionController extends Controller
    method __construct (line 15) | public function __construct(PermissionService $permissionService)
    method view (line 20) | public function view(Campaign $campaign, Entity $entity)
    method store (line 27) | public function store(StorePermission $request, Campaign $campaign, En...

FILE: app/Http/Controllers/Entity/PostController.php
  class PostController (line 17) | class PostController extends Controller
    method __construct (line 22) | public function __construct(
    method index (line 27) | public function index(Campaign $campaign, Entity $entity)
    method create (line 34) | public function create(Campaign $campaign, Entity $entity, Post $post)
    method show (line 77) | public function show(Campaign $campaign, Entity $entity, Post $post)
    method store (line 90) | public function store(StorePost $request, Campaign $campaign, Entity $...
    method edit (line 124) | public function edit(Campaign $campaign, Entity $entity, Post $post)
    method update (line 153) | public function update(StorePost $request, Campaign $campaign, Entity ...
    method destroy (line 195) | public function destroy(Campaign $campaign, Entity $entity, Post $post)

FILE: app/Http/Controllers/Entity/Posts/LayoutController.php
  class LayoutController (line 9) | class LayoutController extends Controller
    method index (line 11) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/Posts/LogController.php
  class LogController (line 12) | class LogController extends Controller
    method index (line 14) | public function index(HistoryRequest $request, Campaign $campaign, Ent...

FILE: app/Http/Controllers/Entity/Posts/MoveController.php
  class MoveController (line 13) | class MoveController extends Controller
    method __construct (line 15) | public function __construct(protected PostService $service) {}
    method index (line 17) | public function index(Campaign $campaign, Entity $entity, Post $post)
    method move (line 28) | public function move(MovePostRequest $request, Campaign $campaign, Ent...

FILE: app/Http/Controllers/Entity/Posts/TemplateController.php
  class TemplateController (line 10) | class TemplateController extends Controller
    method __construct (line 14) | public function __construct(TemplateService $templateService)
    method update (line 20) | public function update(Campaign $campaign, Post $post)

FILE: app/Http/Controllers/Entity/Posts/VisibilityController.php
  class VisibilityController (line 14) | class VisibilityController extends Controller
    method __construct (line 21) | public function __construct()
    method index (line 31) | public function index(Campaign $campaign, Entity $entity, Post $post)
    method update (line 48) | public function update(EditPostVisibility $request, Campaign $campaign...

FILE: app/Http/Controllers/Entity/PreviewController.php
  class PreviewController (line 13) | class PreviewController extends Controller
    method __construct (line 22) | public function __construct(PreviewService $service, RecentService $re...
    method index (line 28) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/PrivacyController.php
  class PrivacyController (line 17) | class PrivacyController extends Controller
    method __construct (line 21) | public function __construct(PrivacyService $service)
    method index (line 31) | public function index(Campaign $campaign, Entity $entity)
    method toggle (line 46) | public function toggle(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/ProfileController.php
  class ProfileController (line 11) | class ProfileController extends Controller
    method index (line 16) | public function index(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/RelationController.php
  class RelationController (line 20) | class RelationController extends Controller
    method __construct (line 29) | public function __construct(RelatedService $connectionService, Relatio...
    method index (line 35) | public function index(Campaign $campaign, Entity $entity)
    method create (line 105) | public function create(Campaign $campaign, Entity $entity)
    method store (line 118) | public function store(StoreRelation $request, Campaign $campaign, Enti...
    method show (line 142) | public function show(Campaign $campaign, Entity $entity, Relation $rel...
    method edit (line 147) | public function edit(Campaign $campaign, Entity $entity, Relation $rel...
    method update (line 166) | public function update(StoreRelation $request, Campaign $campaign, Ent...
    method destroy (line 226) | public function destroy(Campaign $campaign, Entity $entity, Relation $...
    method getModeOption (line 274) | protected function getModeOption(bool $post = false)

FILE: app/Http/Controllers/Entity/ReminderController.php
  class ReminderController (line 18) | class ReminderController extends Controller
    method __construct (line 33) | public function __construct(CalendarService $calendarService)
    method index (line 39) | public function index(Campaign $campaign, Entity $entity)
    method show (line 73) | public function show(Campaign $campaign, Entity $entity, Reminder $rem...
    method create (line 79) | public function create(Campaign $campaign, Entity $entity)
    method store (line 101) | public function store(AddCalendarEvent $request, Campaign $campaign, E...

FILE: app/Http/Controllers/Entity/ShareController.php
  class ShareController (line 17) | class ShareController extends Controller
    method __construct (line 22) | public function __construct(
    method setup (line 30) | public function setup(Campaign $campaign, Entity $entity): View
    method save (line 43) | public function save(StoreShare $request, Campaign $campaign, Entity $...

FILE: app/Http/Controllers/Entity/ShowController.php
  class ShowController (line 14) | class ShowController extends Controller
    method __construct (line 19) | public function __construct()
    method index (line 25) | public function index(Request $request, Campaign $campaign, Entity $en...

FILE: app/Http/Controllers/Entity/StoryController.php
  class StoryController (line 12) | class StoryController extends Controller
    method __construct (line 18) | public function __construct(StoryService $service)
    method edit (line 23) | public function edit(Campaign $campaign, Entity $entity)
    method save (line 33) | public function save(ReorderStories $request, Campaign $campaign, Enti...
    method more (line 53) | public function more(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/TagController.php
  class TagController (line 16) | class TagController extends Controller
    method __construct (line 23) | public function __construct(TagService $tagService)
    method create (line 33) | public function create(Campaign $campaign, Entity $entity)
    method store (line 48) | public function store(UpdateEntityTags $request, Campaign $campaign, E...

FILE: app/Http/Controllers/Entity/TemplateController.php
  class TemplateController (line 10) | class TemplateController extends Controller
    method __construct (line 14) | public function __construct(TemplateService $templateService)
    method update (line 20) | public function update(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/TooltipController.php
  class TooltipController (line 13) | class TooltipController extends Controller
    method __construct (line 18) | public function __construct(public TooltipService $tooltipService) {}
    method show (line 23) | public function show(Campaign $campaign, Entity $entity)

FILE: app/Http/Controllers/Entity/TransformController.php
  class TransformController (line 15) | class TransformController extends Controller
    method __construct (line 19) | public function __construct(
    method index (line 24) | public function index(Campaign $campaign, Entity $entity)
    method transform (line 46) | public function transform(TransformEntityRequest $request, Campaign $c...

FILE: app/Http/Controllers/EntityCreatorController.php
  class EntityCreatorController (line 20) | class EntityCreatorController extends Controller
    method __construct (line 24) | public function __construct(
    method selection (line 35) | public function selection(Request $request, Campaign $campaign)
    method form (line 42) | public function form(Request $request, Campaign $campaign, EntityType ...
    method post (line 47) | public function post(Request $request, Campaign $campaign)
    method store (line 52) | public function store(StoreEntity $request, Campaign $campaign, Entity...
    method storePost (line 100) | public function storePost(StorePost $request, Campaign $campaign)
    method renderSelection (line 146) | protected function renderSelection(?string $success)
    method renderForm (line 159) | protected function renderForm(Request $request, Campaign $campaign, ?E...
    method orderedEntityTypes (line 220) | protected function orderedEntityTypes(): Collection

FILE: app/Http/Controllers/Events/EventController.php
  class EventController (line 13) | class EventController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Event $event)

FILE: app/Http/Controllers/Facebook/DeletionController.php
  class DeletionController (line 12) | class DeletionController extends Controller
    method handle (line 14) | public function handle(Request $request)
    method status (line 46) | public function status(Request $request)
    method generate (line 53) | public function generate(Request $request)
    method parseSignedRequest (line 72) | private function parseSignedRequest($signedRequest, $secret)
    method base64UrlDecode (line 88) | private function base64UrlDecode($input)

FILE: app/Http/Controllers/Families/FamilyController.php
  class FamilyController (line 13) | class FamilyController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Family $family)

FILE: app/Http/Controllers/Families/MemberController.php
  class MemberController (line 16) | class MemberController extends Controller
    method index (line 23) | public function index(Campaign $campaign, Family $family)
    method create (line 56) | public function create(Campaign $campaign, Family $family)
    method store (line 66) | public function store(StoreCharacterFamily $request, Campaign $campaig...

FILE: app/Http/Controllers/Families/TreeController.php
  class TreeController (line 11) | class TreeController extends Controller
    method index (line 16) | public function index(Campaign $campaign, Family $family)

FILE: app/Http/Controllers/Families/Trees/ApiController.php
  class ApiController (line 15) | class ApiController extends Controller
    method __construct (line 22) | public function __construct(FamilyTreeService $service)
    method index (line 30) | public function index(Campaign $campaign, Family $family): JsonResponse
    method entity (line 49) | public function entity(Campaign $campaign, Entity $entity): JsonResponse
    method save (line 66) | public function save(Request $request, Campaign $campaign, Family $fam...

FILE: app/Http/Controllers/Filters/FormController.php
  class FormController (line 19) | class FormController extends Controller
    method __construct (line 24) | public function __construct(protected FilterService $filterService)
    method index (line 29) | public function index(Request $request, Campaign $campaign, EntityType...
    method connection (line 67) | public function connection(Campaign $campaign)
    method render (line 82) | protected function render(mixed $model, string $plural, string $route,...

FILE: app/Http/Controllers/Filters/SaveController.php
  class SaveController (line 13) | class SaveController extends Controller
    method __construct (line 15) | public function __construct(
    method render (line 23) | protected function render(Campaign $campaign, EntityType $entityType)
    method save (line 35) | public function save(Campaign $campaign, EntityType $entityType)

FILE: app/Http/Controllers/Front/HelperController.php
  class HelperController (line 9) | class HelperController
    method apiFilters (line 11) | public function apiFilters()

FILE: app/Http/Controllers/FrontendPrepareController.php
  class FrontendPrepareController (line 5) | class FrontendPrepareController extends Controller
    method index (line 7) | public function index()

FILE: app/Http/Controllers/Gallery/BrowseController.php
  class BrowseController (line 10) | class BrowseController extends Controller
    method __construct (line 14) | public function __construct(BrowseService $browseService)
    method index (line 19) | public function index(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Gallery/CreateController.php
  class CreateController (line 10) | class CreateController extends Controller
    method __construct (line 14) | public function __construct(CreateService $service)
    method index (line 20) | public function index(Campaign $campaign, CreateFolder $request)

FILE: app/Http/Controllers/Gallery/DeleteController.php
  class DeleteController (line 12) | class DeleteController extends Controller
    method __construct (line 18) | public function __construct(DeleteService $service, StorageService $st...
    method destroy (line 25) | public function destroy(Campaign $campaign, DeleteImages $request)
    method file (line 41) | public function file(Campaign $campaign, Image $image)

FILE: app/Http/Controllers/Gallery/ImageController.php
  class ImageController (line 10) | class ImageController extends Controller
    method __construct (line 14) | public function __construct(SetupService $service)
    method show (line 20) | public function show(Campaign $campaign, Image $image)

FILE: app/Http/Controllers/Gallery/SearchController.php
  class SearchController (line 10) | class SearchController extends Controller
    method __construct (line 14) | public function __construct(SetupService $service)
    method index (line 20) | public function index(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Gallery/SetupController.php
  class SetupController (line 9) | class SetupController extends Controller
    method __construct (line 13) | public function __construct(SetupService $service)
    method index (line 19) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/Gallery/ShowController.php
  class ShowController (line 10) | class ShowController extends Controller
    method __construct (line 12) | public function __construct()
    method show (line 17) | public function show(Campaign $campaign, Image $image)

FILE: app/Http/Controllers/Gallery/TiptapController.php
  class TiptapController (line 11) | class TiptapController extends Controller
    method __construct (line 13) | public function __construct(protected TiptapService $service) {}
    method index (line 15) | public function index(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Gallery/UpdateController.php
  class UpdateController (line 14) | class UpdateController extends Controller
    method __construct (line 18) | public function __construct(UpdateService $service)
    method bulk (line 24) | public function bulk(UpdateFiles $request, Campaign $campaign)
    method process (line 36) | public function process(UpdateFile $request, Campaign $campaign, Image...
    method focus (line 47) | public function focus(UpdateFocus $request, Campaign $campaign, Image ...

FILE: app/Http/Controllers/Gallery/UploadController.php
  class UploadController (line 15) | class UploadController extends Controller
    method __construct (line 21) | public function __construct(UploadService $uploadService, StorageServi...
    method file (line 27) | public function file(UploadFile $request, Campaign $campaign)
    method files (line 46) | public function files(UploadFiles $request, Campaign $campaign)
    method url (line 70) | public function url(UploadUrl $request, Campaign $campaign)

FILE: app/Http/Controllers/Gallery/VisibilityController.php
  class VisibilityController (line 10) | class VisibilityController extends Controller
    method index (line 12) | public function index(Campaign $campaign, Image $image)
    method save (line 21) | public function save(EditPostVisibility $request, Campaign $campaign, ...

FILE: app/Http/Controllers/GalleryController.php
  class GalleryController (line 8) | class GalleryController extends Controller
    method __construct (line 10) | public function __construct()
    method index (line 15) | public function index(Campaign $campaign)

FILE: app/Http/Controllers/HealthController.php
  class HealthController (line 8) | class HealthController extends Controller
    method index (line 10) | public function index()

FILE: app/Http/Controllers/HistoryController.php
  class HistoryController (line 11) | class HistoryController extends Controller
    method __construct (line 13) | public function __construct()
    method index (line 18) | public function index(HistoryRequest $request, Campaign $campaign)

FILE: app/Http/Controllers/HomeController.php
  class HomeController (line 8) | class HomeController extends Controller
    method index (line 10) | public function index()
    method back (line 23) | protected function back()

FILE: app/Http/Controllers/InvitationController.php
  class InvitationController (line 12) | class InvitationController extends Controller
    method __construct (line 23) | public function __construct(InviteService $inviteService, CampaignServ...
    method join (line 33) | public function join($token)

FILE: app/Http/Controllers/Items/EntityController.php
  class EntityController (line 15) | class EntityController extends Controller
    method index (line 22) | public function index(Campaign $campaign, Item $item)

FILE: app/Http/Controllers/Items/ItemController.php
  class ItemController (line 13) | class ItemController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Item $item)

FILE: app/Http/Controllers/Journals/JournalController.php
  class JournalController (line 13) | class JournalController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Journal $journal)

FILE: app/Http/Controllers/Layout/NavigationController.php
  class NavigationController (line 8) | class NavigationController extends Controller
    method __construct (line 10) | public function __construct(protected NavigationService $navigationSer...
    method index (line 15) | public function index()

FILE: app/Http/Controllers/Locations/CharacterController.php
  class CharacterController (line 15) | class CharacterController extends Controller
    method index (line 22) | public function index(Campaign $campaign, Location $location)

FILE: app/Http/Controllers/Locations/EventController.php
  class EventController (line 15) | class EventController extends Controller
    method index (line 22) | public function index(Campaign $campaign, Location $location)

FILE: app/Http/Controllers/Locations/LocationController.php
  class LocationController (line 13) | class LocationController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Location $location)

FILE: app/Http/Controllers/Locations/QuestController.php
  class QuestController (line 15) | class QuestController extends Controller
    method index (line 22) | public function index(Campaign $campaign, Location $location)

FILE: app/Http/Controllers/Maps/Bulks/GroupController.php
  class GroupController (line 13) | class GroupController extends Controller
    method index (line 18) | public function index(Request $request, Campaign $campaign, Map $map)

FILE: app/Http/Controllers/Maps/Bulks/LayerController.php
  class LayerController (line 13) | class LayerController extends Controller
    method index (line 18) | public function index(Request $request, Campaign $campaign, Map $map)

FILE: app/Http/Controllers/Maps/Bulks/MarkerController.php
  class MarkerController (line 13) | class MarkerController extends Controller
    method index (line 18) | public function index(Request $request, Campaign $campaign, Map $map)

FILE: app/Http/Controllers/Maps/ExploreController.php
  class ExploreController (line 15) | class ExploreController extends Controller
    method __construct (line 20) | public function __construct()
    method index (line 28) | public function index(Campaign $campaign, Map $map)
    method ticker (line 68) | public function ticker(Campaign $campaign, Map $map)
    method chunks (line 93) | public function chunks(Campaign $campaign, Map $map)

FILE: app/Http/Controllers/Maps/GroupController.php
  class GroupController (line 17) | class GroupController extends Controller
    method index (line 26) | public function index(Campaign $campaign, Map $map)
    method show (line 65) | public function show(Campaign $campaign, Map $map)
    method create (line 70) | public function create(Campaign $campaign, Map $map)
    method store (line 87) | public function store(Campaign $campaign, Map $map, StoreMapGroup $req...
    method edit (line 129) | public function edit(Campaign $campaign, Map $map, MapGroup $mapGroup)
    method update (line 140) | public function update(StoreMapGroup $request, Campaign $campaign, Map...
    method destroy (line 170) | public function destroy(Campaign $campaign, Map $map, MapGroup $mapGroup)

FILE: app/Http/Controllers/Maps/LayerController.php
  class LayerController (line 21) | class LayerController extends Controller
    method index (line 27) | public function index(Campaign $campaign, Map $map)
    method show (line 65) | public function show(Campaign $campaign, Map $map)
    method create (line 76) | public function create(Campaign $campaign, Map $map)
    method store (line 96) | public function store(Campaign $campaign, Map $map, StoreMapLayer $req...
    method edit (line 144) | public function edit(Campaign $campaign, Map $map, MapLayer $mapLayer)
    method update (line 168) | public function update(StoreMapLayer $request, Campaign $campaign, Map...
    method destroy (line 201) | public function destroy(Campaign $campaign, Map $map, MapLayer $mapLayer)

FILE: app/Http/Controllers/Maps/Layers/MigrateController.php
  class MigrateController (line 13) | class MigrateController extends Controller
    method __construct (line 19) | public function __construct(MigrateLayerService $migrateLayerService)
    method index (line 24) | public function index(Campaign $campaign, Map $map, MapLayer $mapLayer)

FILE: app/Http/Controllers/Maps/MapController.php
  class MapController (line 13) | class MapController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Map $map)

FILE: app/Http/Controllers/Maps/MarkerController.php
  class MarkerController (line 24) | class MarkerController extends Controller
    method index (line 47) | public function index(Campaign $campaign, Map $map)
    method show (line 69) | public function show(Campaign $campaign, Map $map)
    method create (line 80) | public function create(Request $request, Campaign $campaign, Map $map)
    method store (line 104) | public function store(Campaign $campaign, Map $map, StoreMapMarker $re...
    method edit (line 141) | public function edit(Campaign $campaign, Map $map, MapMarker $mapMarke...
    method update (line 162) | public function update(StoreMapMarker $request, Campaign $campaign, Ma...
    method destroy (line 203) | public function destroy(Campaign $campaign, Map $map, MapMarker $mapMa...

FILE: app/Http/Controllers/Maps/Markers/DetailController.php
  class DetailController (line 12) | class DetailController extends Controller
    method index (line 17) | public function index(Campaign $campaign, Map $map, MapMarker $mapMarker)

FILE: app/Http/Controllers/Maps/Markers/MoveController.php
  class MoveController (line 11) | class MoveController extends Controller
    method index (line 13) | public function index(Request $request, Campaign $campaign, Map $map, ...

FILE: app/Http/Controllers/Maps/PreviewController.php
  class PreviewController (line 11) | class PreviewController extends Controller
    method index (line 16) | public function index(Campaign $campaign, Map $map)

FILE: app/Http/Controllers/Maps/Reorders/GroupController.php
  class GroupController (line 11) | class GroupController extends Controller
    method index (line 13) | public function index(ReorderGroups $request, Campaign $campaign, Map ...

FILE: app/Http/Controllers/Maps/Reorders/LayerController.php
  class LayerController (line 11) | class LayerController extends Controller
    method index (line 16) | public function index(ReorderLayers $request, Campaign $campaign, Map ...

FILE: app/Http/Controllers/Notes/NoteController.php
  class NoteController (line 13) | class NoteController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Note $note)

FILE: app/Http/Controllers/NotificationController.php
  class NotificationController (line 10) | class NotificationController extends Controller
    method __construct (line 19) | public function __construct(NavigationService $navigationService)
    method index (line 28) | public function index()
    method read (line 41) | public function read($id)
    method refresh (line 53) | public function refresh()
    method clearAll (line 63) | public function clearAll()

FILE: app/Http/Controllers/Onboarding/InitialController.php
  class InitialController (line 11) | class InitialController extends Controller
    method __construct (line 13) | public function __construct(protected InitialService $initialService) {}
    method save (line 15) | public function save(InitialRequest $request, Campaign $campaign)
    method skip (line 31) | public function skip(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Organisation/MemberController.php
  class MemberController (line 18) | class MemberController extends Controller
    method index (line 27) | public function index(Campaign $campaign, Organisation $organisation)
    method create (line 73) | public function create(Campaign $campaign, Organisation $organisation)
    method store (line 86) | public function store(StoreOrganisationMembers $request, Campaign $cam...
    method show (line 105) | public function show(Campaign $campaign, Organisation $organisation, O...
    method edit (line 119) | public function edit(Campaign $campaign, Organisation $organisation, O...
    method update (line 133) | public function update(
    method destroy (line 153) | public function destroy(Campaign $campaign, Organisation $organisation...

FILE: app/Http/Controllers/Organisation/OrganisationController.php
  class OrganisationController (line 13) | class OrganisationController extends Controller
    method organisations (line 20) | public function organisations(Campaign $campaign, Organisation $organi...

FILE: app/Http/Controllers/Passport/ClientController.php
  class ClientController (line 13) | class ClientController extends Controller
    method __construct (line 18) | public function __construct(
    method store (line 27) | public function store(Request $request): JsonResponse

FILE: app/Http/Controllers/PasswordSecurityController.php
  class PasswordSecurityController (line 10) | class PasswordSecurityController extends Controller
    method __construct (line 17) | public function __construct()
    method generate2faSecretCode (line 25) | public function generate2faSecretCode(Request $request)
    method cancel2FA (line 45) | public function cancel2FA(Request $request)

FILE: app/Http/Controllers/PayPalController.php
  class PayPalController (line 14) | class PayPalController extends Controller
    method __construct (line 18) | public function __construct(PayPalService $service)
    method processTransaction (line 27) | public function processTransaction(ValidatePledge $request, Tier $tier)
    method successTransaction (line 70) | public function successTransaction(Request $request)
    method cancelTransaction (line 116) | public function cancelTransaction(Request $request)

FILE: app/Http/Controllers/PresetController.php
  class PresetController (line 11) | class PresetController extends Controller
    method __construct (line 13) | public function __construct()
    method index (line 18) | public function index(Campaign $campaign, PresetType $presetType)
    method show (line 29) | public function show(Campaign $campaign, PresetType $presetType, Prese...
    method create (line 35) | public function create(Campaign $campaign, PresetType $presetType)
    method store (line 47) | public function store(StorePreset $request, Campaign $campaign, Preset...
    method edit (line 71) | public function edit(Campaign $campaign, PresetType $presetType, Prese...
    method update (line 84) | public function update(StorePreset $request, Campaign $campaign, Prese...
    method destroy (line 105) | public function destroy(Request $request, Campaign $campaign, PresetTy...
    method parseFrom (line 124) | protected function parseFrom(Request $request)

FILE: app/Http/Controllers/Quests/ElementController.php
  class ElementController (line 15) | class ElementController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Quest $quest)
    method create (line 48) | public function create(Campaign $campaign, Quest $quest)
    method store (line 58) | public function store(StoreQuestElement $request, Campaign $campaign, ...
    method show (line 95) | public function show(Campaign $campaign, Quest $quest, QuestElement $q...
    method edit (line 100) | public function edit(Campaign $campaign, Quest $quest, QuestElement $q...
    method update (line 125) | public function update(StoreQuestElement $request, Campaign $campaign,...
    method destroy (line 165) | public function destroy(Campaign $campaign, Quest $quest, QuestElement...

FILE: app/Http/Controllers/Quests/QuestController.php
  class QuestController (line 13) | class QuestController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Quest $quest)

FILE: app/Http/Controllers/Races/MemberController.php
  class MemberController (line 16) | class MemberController extends Controller
    method index (line 23) | public function index(Campaign $campaign, Race $race)
    method create (line 52) | public function create(Campaign $campaign, Race $race)
    method store (line 65) | public function store(StoreCharacterRace $request, Campaign $campaign,...

FILE: app/Http/Controllers/Races/RaceController.php
  class RaceController (line 13) | class RaceController extends Controller
    method index (line 20) | public function index(Campaign $campaign, Race $race)

FILE: app/Http/Controllers/ReferralController.php
  class ReferralController (line 8) | class ReferralController extends Controller
    method __construct (line 10) | public function __construct(protected JoinService $service) {}
    method index (line 12) | public function index(Referral $referral)

FILE: app/Http/Controllers/RelationController.php
  class RelationController (line 23) | class RelationController extends CrudController
    method __construct (line 53) | public function __construct(FilterService $filterService, DatagridRend...
    method titleKey (line 61) | public function titleKey(): string
    method create (line 71) | public function create(Campaign $campaign)
    method store (line 90) | public function store(StoreRelation $request, Campaign $campaign)
    method show (line 171) | public function show(Campaign $campaign, Relation $relation)
    method edit (line 182) | public function edit(Campaign $campaign, Relation $relation)
    method update (line 203) | public function update(StoreRelation $request, Campaign $campaign, Rel...
    method destroy (line 224) | public function destroy(Campaign $campaign, Relation $relation)

FILE: app/Http/Controllers/ReminderUpdateController.php
  class ReminderUpdateController (line 19) | class ReminderUpdateController extends Controller
    method __construct (line 36) | public function __construct(CalendarService $calendarService)
    method edit (line 42) | public function edit(Campaign $campaign, Reminder $reminder)
    method update (line 73) | public function update(UpdateCalendarEvent $request, Campaign $campaig...
    method destroy (line 120) | public function destroy(Campaign $campaign, Reminder $reminder)
    method checkPermissions (line 147) | private function checkPermissions(Reminder $reminder)

FILE: app/Http/Controllers/Roadmap/FeatureController.php
  class FeatureController (line 11) | class FeatureController extends Controller
    method show (line 13) | public function show(Feature $feature)
    method store (line 19) | public function store(StoreFeature $request)
    method upvote (line 24) | public function upvote(Request $request, Feature $feature)

FILE: app/Http/Controllers/Roadmap/RoadmapController.php
  class RoadmapController (line 7) | class RoadmapController extends Controller
    method index (line 9) | public function index()

FILE: app/Http/Controllers/Search/AttributeController.php
  class AttributeController (line 11) | class AttributeController extends Controller
    method __construct (line 13) | public function __construct(protected AttributeSearchService $searchSe...
    method index (line 18) | public function index(Request $request, Campaign $campaign, Entity $en...

FILE: app/Http/Controllers/Search/CalendarController.php
  class CalendarController (line 10) | class CalendarController extends Controller
    method __construct (line 15) | public function __construct(protected SearchService $searchService) {}
    method index (line 17) | public function index(Request $request, Campaign $campaign)
    method months (line 33) | public function months(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Search/CampaignController.php
  class CampaignController (line 10) | class CampaignController extends Controller
    method __construct (line 12) | public function __construct(protected CampaignSearchService $searchSer...
    method members (line 14) | public function members(Request $request, Campaign $campaign)
    method roles (line 27) | public function roles(Request $request, Campaign $campaign)

FILE: app/Http/Controllers/Search/FullTextController.php
  class FullTextController (line 11) | class FullTextController extends Controller
    method __construct (line 13) | public function __construct(protected EntitySearchService $service) {}
    method index (line 15) | public function index(Campaign $campaign, Request $request)

FILE: app/Http/Controllers/Search/GameSystemSearchController.php
  class GameSystemSearchController (line 12) | class GameSystemSearchController extends Controller
    method index (line 17) | public function index(): JsonResponse

FILE: app/Http/Cont
Copy disabled (too large) Download .json
Condensed preview — 6286 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (31,490K chars).
[
  {
    "path": ".claude/commands/translate.md",
    "chars": 1307,
    "preview": "# Translate Missing Strings\n\nTranslate missing translations for the given locale.\n\nUsage: /translate [locale_code] [loca"
  },
  {
    "path": ".claude/skills/livewire-development/SKILL.md",
    "chars": 4008,
    "preview": "---\nname: livewire-development\ndescription: >-\n  Develops reactive Livewire 3 components. Activates when creating, updat"
  },
  {
    "path": ".claude/skills/pest-testing/SKILL.md",
    "chars": 3148,
    "preview": "---\nname: pest-testing\ndescription: >-\n  Tests applications using the Pest 3 PHP framework. Activates when writing tests"
  },
  {
    "path": ".claude/skills/tailwindcss-development/SKILL.md",
    "chars": 3879,
    "preview": "---\nname: tailwindcss-development\ndescription: >-\n  Styles applications using Tailwind CSS v4 utilities. Activates when "
  },
  {
    "path": ".dockerignore",
    "chars": 33,
    "preview": "vendor\nbootstrap/cache/*\n**/*.log"
  },
  {
    "path": ".editorconfig",
    "chars": 382,
    "preview": "; This file is for unifying the coding style for different editors and IDEs.\n; More information at http://editorconfig.o"
  },
  {
    "path": ".gitattributes",
    "chars": 152,
    "preview": "* text=auto\n\n*.blade.php diff=html\n*.css diff=css\n*.html diff=html\n*.md diff=markdown\n*.php diff=php\n\n/.github export-ig"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 168,
    "preview": "Please report bugs in Discord [![Discord](https://img.shields.io/discord/413623253366603777.svg)](https://discord.gg/rhs"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 123,
    "preview": "Please send feature requests to the [Roadmap](https://app.kanka.io/roadmap). This github isn't used for feature requests"
  },
  {
    "path": ".github/workflows/claude.yml",
    "chars": 1886,
    "preview": "name: Claude Code\n\non:\n  issue_comment:\n    types: [created]\n  pull_request_review_comment:\n    types: [created]\n  issue"
  },
  {
    "path": ".github/workflows/lint.yml",
    "chars": 1288,
    "preview": "name: Fix Code Style & Duplication Check\n\non:\n  pull_request:\n    branches:\n      - main\n      - develop\n    paths:\n    "
  },
  {
    "path": ".github/workflows/phpstan.yml",
    "chars": 1608,
    "preview": "name: \"Tests\"\n\n# Controls when the workflow will run\non:\n  # Triggers the workflow on push or pull request events but on"
  },
  {
    "path": ".gitignore",
    "chars": 484,
    "preview": "/node_modules\n/public/hot\n/public/build/js/tinymce\n/public/storage\n/public/.htaccess\n/public/exports\n/public/info.php\n/p"
  },
  {
    "path": ".jshintrc",
    "chars": 277,
    "preview": "{\n    \"undef\": true,\n    \"esversion\": 11,\n    \"unused\": true,\n    \"browser\": true,\n    \"node\": true,\n    \"globals\": {\n  "
  },
  {
    "path": ".mariadb/10-create-logs-database.sh",
    "chars": 190,
    "preview": "#!/usr/bin/env bash\n\nmysql --user=root --password=\"$MYSQL_ROOT_PASSWORD\" <<-EOSQL\n    CREATE DATABASE IF NOT EXISTS logs"
  },
  {
    "path": ".mariadb/conf.d/kanka.cnf",
    "chars": 140,
    "preview": "[mysqld]\nmax_allowed_packet=4G\nnet_read_timeout=600\nnet_write_timeout=600\nwait_timeout=28800\ninteractive_timeout=28800\nc"
  },
  {
    "path": ".mcp.json",
    "chars": 199,
    "preview": "{\n    \"mcpServers\": {\n        \"laravel-boost\": {\n            \"command\": \"vendor/bin/sail\",\n            \"args\": [\n       "
  },
  {
    "path": ".nginx/thumbor.conf",
    "chars": 1027,
    "preview": "\n\nupstream thumbor  {\n        server thumbor:8888;\n}\n\nserver {\n        listen 80 default;\n        server_name localhost;"
  },
  {
    "path": ".phpactor.json",
    "chars": 126,
    "preview": "{\n    \"$schema\": \"/phpactor.schema.json\",\n    \"language_server_phpstan.enabled\": true,\n    \"php_code_sniffer.enabled\": t"
  },
  {
    "path": "CLAUDE.md",
    "chars": 13184,
    "preview": "===\n\n<laravel-boost-guidelines>\n=== foundation rules ===\n\n# Laravel Boost Guidelines\n\nThe Laravel Boost guidelines are s"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3346,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "LICENSE",
    "chars": 895,
    "preview": "“Commons Clause” License Condition v1.0\n\nThe Software is provided to you by the Licensor under the License, as defined b"
  },
  {
    "path": "README.md",
    "chars": 1404,
    "preview": "# Kanka\n# [![Kanka](./.github/logo.png)](https://kanka.io/en-US)\n\n[![Minimum PHP Version](http://img.shields.io/badge/ph"
  },
  {
    "path": "app/Auth/PassportTokenGuard.php",
    "chars": 1950,
    "preview": "<?php\n\nnamespace App\\Auth;\n\nuse Illuminate\\Contracts\\Auth\\Authenticatable;\nuse Laravel\\Passport\\AccessToken;\nuse Laravel"
  },
  {
    "path": "app/Console/Commands/Campaigns/CleanupCommand.php",
    "chars": 1237,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Campaigns;\n\nuse App\\Models\\Campaign;\nuse App\\Observers\\CampaignObserver;\nuse App\\S"
  },
  {
    "path": "app/Console/Commands/Campaigns/DeleteCommand.php",
    "chars": 1209,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Campaigns;\n\nuse App\\Jobs\\Campaigns\\Delete;\nuse App\\Jobs\\DeletedCampaignCleanupJob;"
  },
  {
    "path": "app/Console/Commands/Campaigns/DummyEntities.php",
    "chars": 13380,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Campaigns;\n\nuse App\\Facades\\CampaignCache;\nuse App\\Facades\\CampaignLocalization;\nu"
  },
  {
    "path": "app/Console/Commands/Campaigns/ExportCommand.php",
    "chars": 1085,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Campaigns;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\User;\nuse App\\Services\\Campaig"
  },
  {
    "path": "app/Console/Commands/Campaigns/ImportCommand.php",
    "chars": 1174,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Campaigns;\n\nuse App\\Enums\\CampaignImportStatus;\nuse App\\Jobs\\Campaigns\\Import;\nuse"
  },
  {
    "path": "app/Console/Commands/Campaigns/PermissionsSyncCommand.php",
    "chars": 2735,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Campaigns;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\CampaignPermission;\nuse App\\Mo"
  },
  {
    "path": "app/Console/Commands/Campaigns/PopulateCommand.php",
    "chars": 1085,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Campaigns;\n\nuse App\\Jobs\\Campaigns\\Populate;\nuse App\\Models\\Campaign;\nuse App\\Serv"
  },
  {
    "path": "app/Console/Commands/Campaigns/VisibileEntityCountCommand.php",
    "chars": 1368,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Campaigns;\n\nuse App\\Models\\Campaign;\nuse App\\Services\\Campaign\\Counters\\VisibleEnt"
  },
  {
    "path": "app/Console/Commands/Cleanup/AnonymiseUserLogs.php",
    "chars": 985,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Cleanup;\n\nuse App\\Services\\Users\\UserLogService;\nuse App\\Traits\\HasJobLog;\nuse Ill"
  },
  {
    "path": "app/Console/Commands/Cleanup/CleanupEntityLogs.php",
    "chars": 1877,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Cleanup;\n\nuse App\\Models\\EntityLog;\nuse App\\Traits\\HasJobLog;\nuse Carbon\\Carbon;\nu"
  },
  {
    "path": "app/Console/Commands/Cleanup/CleanupImages.php",
    "chars": 2885,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Cleanup;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Support\\Facades\\DB;\nuse I"
  },
  {
    "path": "app/Console/Commands/Cleanup/CleanupTrashed.php",
    "chars": 3015,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Cleanup;\n\nuse App\\Models\\Entity;\nuse App\\Models\\Post;\nuse App\\Services\\Entity\\Purg"
  },
  {
    "path": "app/Console/Commands/Cleanup/CleanupTrashedCampaigns.php",
    "chars": 1136,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Cleanup;\n\nuse App\\Models\\Campaign;\nuse App\\Observers\\CampaignObserver;\nuse App\\Ser"
  },
  {
    "path": "app/Console/Commands/Cleanup/CleanupUsers.php",
    "chars": 1739,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Cleanup;\n\nuse App\\Services\\Users\\PurgeService;\nuse Carbon\\Carbon;\nuse Illuminate\\C"
  },
  {
    "path": "app/Console/Commands/Entities/CalendarAdvancer.php",
    "chars": 2158,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Entities;\n\nuse App\\Jobs\\CalendarsClearElapsed;\nuse App\\Models\\Calendar;\nuse App\\Se"
  },
  {
    "path": "app/Console/Commands/Entities/ChildlessEntities.php",
    "chars": 2142,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Entities;\n\nuse App\\Models\\Entity;\nuse Illuminate\\Console\\Command;\nuse Illuminate\\S"
  },
  {
    "path": "app/Console/Commands/Entities/MapChunk.php",
    "chars": 1208,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Entities;\n\nuse App\\Jobs\\ChunkMapJob;\nuse App\\Models\\Map;\nuse Illuminate\\Console\\Co"
  },
  {
    "path": "app/Console/Commands/InstallCommand.php",
    "chars": 1107,
    "preview": "<?php\n\nnamespace App\\Console\\Commands;\n\nuse App\\Models\\EntityType;\nuse Exception;\nuse Illuminate\\Console\\Command;\n\nclass"
  },
  {
    "path": "app/Console/Commands/Metrics/MetricsGa4.php",
    "chars": 10083,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Metrics;\n\nuse Google\\Analytics\\Data\\V1beta\\Client\\BetaAnalyticsDataClient;\nuse Goo"
  },
  {
    "path": "app/Console/Commands/Migrations/BookmarkEntityType.php",
    "chars": 995,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Migrations;\n\nuse App\\Models\\EntityType;\nuse Illuminate\\Console\\Command;\nuse Illumi"
  },
  {
    "path": "app/Console/Commands/Migrations/Cdn.php",
    "chars": 2295,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Migrations;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Support\\Facades\\DB;\n\nc"
  },
  {
    "path": "app/Console/Commands/Migrations/MigrateEntityStatuses.php",
    "chars": 5094,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Migrations;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Support\\Facades\\DB;\n\nc"
  },
  {
    "path": "app/Console/Commands/Migrations/MigrateStatusFilters.php",
    "chars": 6251,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Migrations;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Support\\Facades\\DB;\n\nc"
  },
  {
    "path": "app/Console/Commands/Migrations/MigrateSubMentions.php",
    "chars": 3569,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Migrations;\n\nuse App\\Models\\EntityMention;\nuse Carbon\\Carbon;\nuse Illuminate\\Conso"
  },
  {
    "path": "app/Console/Commands/Migrations/NewsletterSubCommand.php",
    "chars": 1599,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Migrations;\n\nuse App\\Models\\User;\nuse App\\Services\\NewsletterService;\nuse Illumina"
  },
  {
    "path": "app/Console/Commands/Report/Accounts.php",
    "chars": 1195,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Report;\n\nuse App\\Jobs\\Discord\\ReportJob;\nuse App\\Services\\Report\\AccountsReportSer"
  },
  {
    "path": "app/Console/Commands/Report/Churn.php",
    "chars": 1174,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Report;\n\nuse App\\Jobs\\Discord\\ReportJob;\nuse App\\Services\\Report\\ChurnReportServic"
  },
  {
    "path": "app/Console/Commands/Report/Onboarding.php",
    "chars": 1206,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Report;\n\nuse App\\Jobs\\Discord\\ReportJob;\nuse App\\Services\\Report\\OnboardingReportS"
  },
  {
    "path": "app/Console/Commands/Report/Weekly.php",
    "chars": 1297,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Report;\n\nuse App\\Jobs\\Discord\\ReportJob;\nuse App\\Services\\Report\\WeeklyReportServi"
  },
  {
    "path": "app/Console/Commands/SetupMeilisearch.php",
    "chars": 2544,
    "preview": "<?php\n\nnamespace App\\Console\\Commands;\n\nuse App\\Models\\Attribute;\nuse App\\Models\\Entity;\nuse App\\Models\\Post;\nuse App\\Mo"
  },
  {
    "path": "app/Console/Commands/SubscriptionEndPaypalFix.php",
    "chars": 2261,
    "preview": "<?php\n\nnamespace App\\Console\\Commands;\n\nuse App\\Jobs\\SubscriptionEndJob;\nuse App\\Models\\User;\nuse Illuminate\\Console\\Com"
  },
  {
    "path": "app/Console/Commands/Subscriptions/EndFreeTrials.php",
    "chars": 1071,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Subscriptions;\n\nuse App\\Services\\Subscription\\FreeTrialEndService;\nuse App\\Traits\\"
  },
  {
    "path": "app/Console/Commands/Subscriptions/EndSubscriptions.php",
    "chars": 1063,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Subscriptions;\n\nuse App\\Services\\Subscription\\SubscriptionEndService;\nuse App\\Trai"
  },
  {
    "path": "app/Console/Commands/Subscriptions/ExpiringCardCommand.php",
    "chars": 1948,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Subscriptions;\n\nuse App\\Jobs\\Emails\\Subscriptions\\ExpiringCardAlert;\nuse App\\Model"
  },
  {
    "path": "app/Console/Commands/Subscriptions/PaypalExpiringCommand.php",
    "chars": 1657,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Subscriptions;\n\nuse App\\Jobs\\Emails\\Subscriptions\\PaypalExpiringAlert;\nuse App\\Mod"
  },
  {
    "path": "app/Console/Commands/Subscriptions/SubCleanupCommand.php",
    "chars": 1021,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Subscriptions;\n\nuse App\\Jobs\\SubscriptionEndJob;\nuse App\\Models\\User;\nuse Illumina"
  },
  {
    "path": "app/Console/Commands/Tests/Mailerlite.php",
    "chars": 1038,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Tests;\n\nuse App\\Models\\User;\nuse App\\Services\\NewsletterService;\nuse Illuminate\\Co"
  },
  {
    "path": "app/Console/Commands/Tests/SendNotification.php",
    "chars": 1226,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Tests;\n\nuse App\\Models\\User;\nuse App\\Notifications\\Header;\nuse Illuminate\\Console\\"
  },
  {
    "path": "app/Console/Commands/Tests/SignImageCommand.php",
    "chars": 1669,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Tests;\n\nuse App\\Facades\\Img;\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Suppor"
  },
  {
    "path": "app/Console/Commands/Tests/TestEmail.php",
    "chars": 2822,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Tests;\n\nuse App\\Events\\FeatureCreated;\nuse App\\Jobs\\Emails\\Purge\\FirstWarningJob;\n"
  },
  {
    "path": "app/Console/Commands/Tests/TestWhiteboards.php",
    "chars": 863,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Tests;\n\nuse App\\Events\\WhiteboardUpdated;\nuse Illuminate\\Console\\Command;\n\nclass T"
  },
  {
    "path": "app/Console/Commands/Translations/Missing.php",
    "chars": 1448,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Translations;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Support\\Facades\\DB;\n"
  },
  {
    "path": "app/Console/Commands/Users/OfferFreeTrial.php",
    "chars": 901,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Users;\n\nuse App\\Services\\Users\\OfferTrialService;\nuse App\\Traits\\HasJobLog;\nuse Il"
  },
  {
    "path": "app/Console/Commands/Users/RegenerateDiscordToken.php",
    "chars": 1917,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Users;\n\nuse App\\Jobs\\Users\\UnsyncDiscord;\nuse App\\Models\\UserApp;\nuse App\\Services"
  },
  {
    "path": "app/Console/Commands/Users/ResetUserPassword.php",
    "chars": 1393,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Users;\n\nuse App\\Enums\\UserAction;\nuse App\\Models\\User;\nuse Illuminate\\Console\\Comm"
  },
  {
    "path": "app/Console/Commands/Users/SyncUserRoles.php",
    "chars": 1241,
    "preview": "<?php\n\nnamespace App\\Console\\Commands\\Users;\n\nuse App\\Models\\User;\nuse App\\Services\\DiscordService;\nuse Illuminate\\Conso"
  },
  {
    "path": "app/Console/Commands/VerifyParentIds.php",
    "chars": 3864,
    "preview": "<?php\n\nnamespace App\\Console\\Commands;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Support\\Facades\\DB;\n\nclass Verify"
  },
  {
    "path": "app/Console/Commands/WordCount.php",
    "chars": 2853,
    "preview": "<?php\n\nnamespace App\\Console\\Commands;\n\nuse App\\Models\\CharacterTrait;\nuse App\\Models\\Entity;\nuse App\\Models\\MapLayer;\nu"
  },
  {
    "path": "app/Console/Kernel.php",
    "chars": 3110,
    "preview": "<?php\n\nnamespace App\\Console;\n\nuse App\\Console\\Commands\\Campaigns\\VisibileEntityCountCommand;\nuse App\\Console\\Commands\\C"
  },
  {
    "path": "app/Datagrids/Actions/BookmarkDatagridActions.php",
    "chars": 369,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Actions;\n\n/**\n * Menu links aren't real entities, meaning that they don't get a lot of ac"
  },
  {
    "path": "app/Datagrids/Actions/DatagridActions.php",
    "chars": 1711,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Actions;\n\n/**\n * Datagrids\n *\n * This abstract class controls parameters that are availab"
  },
  {
    "path": "app/Datagrids/Actions/DefaultDatagridActions.php",
    "chars": 147,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Actions;\n\n/**\n * By default, allow all datagrid actions\n */\nclass DefaultDatagridActions "
  },
  {
    "path": "app/Datagrids/Actions/DeprecatedDatagridActions.php",
    "chars": 306,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Actions;\n\n/**\n * For conversations, we don't want to bulk copy them to other campaigns, n"
  },
  {
    "path": "app/Datagrids/Actions/HistoryActions.php",
    "chars": 347,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Actions;\n\n/**\n * Relations heavily restrict options because they aren't entities.\n */\ncla"
  },
  {
    "path": "app/Datagrids/Actions/NoDatagridActions.php",
    "chars": 363,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Actions;\n\n/**\n * Catch all datagrid that disabled everything.\n * Used by dice results int"
  },
  {
    "path": "app/Datagrids/Actions/RelationDatagridActions.php",
    "chars": 356,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Actions;\n\n/**\n * Relations heavily restrict options because they aren't entities.\n */\ncla"
  },
  {
    "path": "app/Datagrids/Bulks/AbilityBulk.php",
    "chars": 257,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass AbilityBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n"
  },
  {
    "path": "app/Datagrids/Bulks/AttributeTemplateBulk.php",
    "chars": 406,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass AttributeTemplateBulk extends Bulk\n{\n    protected array $fields = [\n      "
  },
  {
    "path": "app/Datagrids/Bulks/BookmarkBulk.php",
    "chars": 216,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass BookmarkBulk extends Bulk\n{\n    protected array $fields = [\n        'name',"
  },
  {
    "path": "app/Datagrids/Bulks/Bulk.php",
    "chars": 1622,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\n/**\n * Class Bulk\n *\n * This abstract class allows each sub object to define whic"
  },
  {
    "path": "app/Datagrids/Bulks/CalendarBulk.php",
    "chars": 276,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass CalendarBulk extends Bulk\n{\n    protected array $fields = [\n        'name',"
  },
  {
    "path": "app/Datagrids/Bulks/CharacterBulk.php",
    "chars": 562,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass CharacterBulk extends Bulk\n{\n    protected array $fields = [\n        'name'"
  },
  {
    "path": "app/Datagrids/Bulks/ConversationBulk.php",
    "chars": 225,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass ConversationBulk extends Bulk\n{\n    protected array $fields = [\n        'na"
  },
  {
    "path": "app/Datagrids/Bulks/CreatureBulk.php",
    "chars": 300,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass CreatureBulk extends Bulk\n{\n    protected array $fields = [\n        'name',"
  },
  {
    "path": "app/Datagrids/Bulks/DefaultBulk.php",
    "chars": 102,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\n/**\n * Class DefaultBulk\n */\nclass DefaultBulk extends Bulk {}\n"
  },
  {
    "path": "app/Datagrids/Bulks/DiceRollBulk.php",
    "chars": 245,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass DiceRollBulk extends Bulk\n{\n    protected array $fields = [\n        'name',"
  },
  {
    "path": "app/Datagrids/Bulks/EntityBulk.php",
    "chars": 298,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass EntityBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n "
  },
  {
    "path": "app/Datagrids/Bulks/EventBulk.php",
    "chars": 283,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass EventBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n  "
  },
  {
    "path": "app/Datagrids/Bulks/FamilyBulk.php",
    "chars": 300,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass FamilyBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n "
  },
  {
    "path": "app/Datagrids/Bulks/ItemBulk.php",
    "chars": 369,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass ItemBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n   "
  },
  {
    "path": "app/Datagrids/Bulks/JournalBulk.php",
    "chars": 317,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass JournalBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n"
  },
  {
    "path": "app/Datagrids/Bulks/LocationBulk.php",
    "chars": 296,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass LocationBulk extends Bulk\n{\n    protected array $fields = [\n        'name',"
  },
  {
    "path": "app/Datagrids/Bulks/MapBulk.php",
    "chars": 276,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass MapBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n    "
  },
  {
    "path": "app/Datagrids/Bulks/NoteBulk.php",
    "chars": 254,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass NoteBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n   "
  },
  {
    "path": "app/Datagrids/Bulks/OrganisationBulk.php",
    "chars": 304,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass OrganisationBulk extends Bulk\n{\n    protected array $fields = [\n        'na"
  },
  {
    "path": "app/Datagrids/Bulks/QuestBulk.php",
    "chars": 338,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass QuestBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n  "
  },
  {
    "path": "app/Datagrids/Bulks/RaceBulk.php",
    "chars": 296,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass RaceBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n   "
  },
  {
    "path": "app/Datagrids/Bulks/RelationBulk.php",
    "chars": 398,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass RelationBulk extends Bulk\n{\n    protected array $fields = [\n        'owner_"
  },
  {
    "path": "app/Datagrids/Bulks/TagBulk.php",
    "chars": 440,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass TagBulk extends Bulk\n{\n    protected array $fields = [\n        'name',\n    "
  },
  {
    "path": "app/Datagrids/Bulks/TimelineBulk.php",
    "chars": 258,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Bulks;\n\nclass TimelineBulk extends Bulk\n{\n    protected array $fields = [\n        'name',"
  },
  {
    "path": "app/Datagrids/Datagrid.php",
    "chars": 1659,
    "preview": "<?php\n\nnamespace App\\Datagrids;\n\n/**\n * Datagrids\n *\n * This abstract class controls parameters that are available to th"
  },
  {
    "path": "app/Datagrids/Filters/AbilityFilter.php",
    "chars": 591,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass AbilityFilter extends DatagridFilter\n{\n    /**\n     * Filters available f"
  },
  {
    "path": "app/Datagrids/Filters/AttributeTemplateFilter.php",
    "chars": 522,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass AttributeTemplateFilter extends DatagridFilter\n{\n    /**\n     * Filters a"
  },
  {
    "path": "app/Datagrids/Filters/CalendarFilter.php",
    "chars": 593,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass CalendarFilter extends DatagridFilter\n{\n    /**\n     * Filters available "
  },
  {
    "path": "app/Datagrids/Filters/CharacterFilter.php",
    "chars": 782,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass CharacterFilter extends DatagridFilter\n{\n    /**\n     * Filters available"
  },
  {
    "path": "app/Datagrids/Filters/ConversationFilter.php",
    "chars": 733,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass ConversationFilter extends DatagridFilter\n{\n    /**\n     * Filters availa"
  },
  {
    "path": "app/Datagrids/Filters/CreatureFilter.php",
    "chars": 650,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass CreatureFilter extends DatagridFilter\n{\n    /**\n     * Filters available "
  },
  {
    "path": "app/Datagrids/Filters/CustomEntityFilter.php",
    "chars": 608,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass CustomEntityFilter extends DatagridFilter\n{\n    /**\n     * Filters availa"
  },
  {
    "path": "app/Datagrids/Filters/DatagridFilter.php",
    "chars": 11101,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nuse App\\Facades\\Module;\nuse App\\Models\\Character;\nuse App\\Models\\Entity;\nuse Ap"
  },
  {
    "path": "app/Datagrids/Filters/DiceRollFilter.php",
    "chars": 324,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass DiceRollFilter extends DatagridFilter\n{\n    /**\n     * Filters available "
  },
  {
    "path": "app/Datagrids/Filters/EventFilter.php",
    "chars": 636,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass EventFilter extends DatagridFilter\n{\n    /**\n     * Filters available for"
  },
  {
    "path": "app/Datagrids/Filters/FamilyFilter.php",
    "chars": 681,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass FamilyFilter extends DatagridFilter\n{\n    /**\n     * Filters available fo"
  },
  {
    "path": "app/Datagrids/Filters/HistoryFilter.php",
    "chars": 936,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nuse App\\Models\\Entity;\n\nclass HistoryFilter extends DatagridFilter\n{\n    /**\n  "
  },
  {
    "path": "app/Datagrids/Filters/ItemFilter.php",
    "chars": 746,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass ItemFilter extends DatagridFilter\n{\n    /**\n     * Filters available for "
  },
  {
    "path": "app/Datagrids/Filters/JournalFilter.php",
    "chars": 1030,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nuse App\\Models\\Entity;\n\nclass JournalFilter extends DatagridFilter\n{\n    /**\n  "
  },
  {
    "path": "app/Datagrids/Filters/LocationFilter.php",
    "chars": 651,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass LocationFilter extends DatagridFilter\n{\n    /**\n     * Filters available "
  },
  {
    "path": "app/Datagrids/Filters/MapFilter.php",
    "chars": 603,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass MapFilter extends DatagridFilter\n{\n    /**\n     * Filters available for m"
  },
  {
    "path": "app/Datagrids/Filters/NoteFilter.php",
    "chars": 581,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass NoteFilter extends DatagridFilter\n{\n    /**\n     * Filters available for "
  },
  {
    "path": "app/Datagrids/Filters/OrganisationFilter.php",
    "chars": 699,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass OrganisationFilter extends DatagridFilter\n{\n    /**\n     * Filters availa"
  },
  {
    "path": "app/Datagrids/Filters/QuestFilter.php",
    "chars": 1458,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nuse App\\Models\\Entity;\n\nclass QuestFilter extends DatagridFilter\n{\n    /**\n    "
  },
  {
    "path": "app/Datagrids/Filters/RaceFilter.php",
    "chars": 638,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass RaceFilter extends DatagridFilter\n{\n    /**\n     * Filters available for "
  },
  {
    "path": "app/Datagrids/Filters/RelationFilter.php",
    "chars": 1276,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nuse App\\Models\\Entity;\n\nclass RelationFilter extends DatagridFilter\n{\n    /**\n "
  },
  {
    "path": "app/Datagrids/Filters/TagFilter.php",
    "chars": 594,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass TagFilter extends DatagridFilter\n{\n    /**\n     * Filters available for t"
  },
  {
    "path": "app/Datagrids/Filters/TimelineFilter.php",
    "chars": 593,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass TimelineFilter extends DatagridFilter\n{\n    /**\n     * Filters available "
  },
  {
    "path": "app/Datagrids/Filters/WhiteboardFilter.php",
    "chars": 522,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Filters;\n\nclass WhiteboardFilter extends DatagridFilter\n{\n    /**\n     * Filters availabl"
  },
  {
    "path": "app/Datagrids/Sorters/DatagridSorter.php",
    "chars": 4098,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Sorters;\n\nuse App\\Models\\Campaign;\nuse Illuminate\\Support\\Arr;\nuse Illuminate\\Support\\Str"
  },
  {
    "path": "app/Datagrids/Sorters/QuestElementSorter.php",
    "chars": 283,
    "preview": "<?php\n\nnamespace App\\Datagrids\\Sorters;\n\n/**\n * Class QuestLocationSorter\n */\nclass QuestElementSorter extends DatagridS"
  },
  {
    "path": "app/Definitions/CustomCssDefinitions.php",
    "chars": 755,
    "preview": "<?php\n\nnamespace App\\Definitions;\n\nuse HTMLPurifier_AttrDef_CSS_AlphaValue;\nuse HTMLPurifier_AttrDef_CSS_Composite;\nuse "
  },
  {
    "path": "app/Definitions/CustomDefinitions.php",
    "chars": 2952,
    "preview": "<?php\n\nnamespace App\\Definitions;\n\nuse HTMLPurifier_HTMLDefinition;\nuse Stevebauman\\Purify\\Definitions\\Definition;\nuse S"
  },
  {
    "path": "app/Enums/AppReleaseCategory.php",
    "chars": 168,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum AppReleaseCategory: int\n{\n    case release = 1;\n    case event = 2;\n    case vote = 3;"
  },
  {
    "path": "app/Enums/ApplicationStatus.php",
    "chars": 129,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum ApplicationStatus: int\n{\n    case Pending = 0;\n    case Approved = 1;\n    case Rejecte"
  },
  {
    "path": "app/Enums/AttributeType.php",
    "chars": 228,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum AttributeType: int\n{\n    case Invalid = 0;\n    case Standard = 1;\n    case Block = 2;\n"
  },
  {
    "path": "app/Enums/CampaignExportStatus.php",
    "chars": 154,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum CampaignExportStatus: int\n{\n    case scheduled = 1;\n    case running = 2;\n    case fin"
  },
  {
    "path": "app/Enums/CampaignFilterType.php",
    "chars": 154,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum CampaignFilterType: int\n{\n    case Intro = 1;\n    case Timezone = 2;\n    case Schedule"
  },
  {
    "path": "app/Enums/CampaignFlags.php",
    "chars": 90,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum CampaignFlags: string\n{\n    case Gallery = 'gallery';\n}\n"
  },
  {
    "path": "app/Enums/CampaignImportStatus.php",
    "chars": 244,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum CampaignImportStatus: int\n{\n    case PREPARED = 1;\n    case QUEUED = 2;\n    case RUNNI"
  },
  {
    "path": "app/Enums/CampaignVisibility.php",
    "chars": 128,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum CampaignVisibility: int\n{\n    case private = 1;\n    case public = 3;\n    case unlisted"
  },
  {
    "path": "app/Enums/CharacterStatus.php",
    "chars": 120,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum CharacterStatus: int\n{\n    case alive = 0;\n    case dead = 1;\n    case missing = 2;\n}\n"
  },
  {
    "path": "app/Enums/ConversationTarget.php",
    "chars": 107,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum ConversationTarget: int\n{\n    case users = 1;\n    case characters = 2;\n}\n"
  },
  {
    "path": "app/Enums/Descendants.php",
    "chars": 94,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum Descendants: int\n{\n    case Direct = 0;\n    case All = 1;\n}\n"
  },
  {
    "path": "app/Enums/EntityAssetType.php",
    "chars": 117,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum EntityAssetType: int\n{\n    case file = 1;\n    case link = 2;\n    case alias = 3;\n}\n"
  },
  {
    "path": "app/Enums/EntityEventTypes.php",
    "chars": 149,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum EntityEventTypes: int\n{\n    case birth = 2;\n    case death = 3;\n    case calendarDate "
  },
  {
    "path": "app/Enums/FeatureStatus.php",
    "chars": 199,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum FeatureStatus: int\n{\n    case Draft = 1;\n    case Rejected = 2;\n    case Approved = 3;"
  },
  {
    "path": "app/Enums/FilterOption.php",
    "chars": 175,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum FilterOption: string\n{\n    case INCLUDE = 'include';\n    case EXCLUDE = 'exclude';\n   "
  },
  {
    "path": "app/Enums/MapMarkerShape.php",
    "chars": 139,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum MapMarkerShape: int\n{\n    case marker = 1;\n    case label = 2;\n    case circle = 3;\n  "
  },
  {
    "path": "app/Enums/OrganisationMemberPin.php",
    "chars": 205,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum OrganisationMemberPin: int\n{\n    case empty = 0; // Added to prevent a crash due to in"
  },
  {
    "path": "app/Enums/OrganisationMemberStatus.php",
    "chars": 134,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum OrganisationMemberStatus: int\n{\n    case active = 0;\n    case inactive = 1;\n    case u"
  },
  {
    "path": "app/Enums/Permission.php",
    "chars": 440,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum Permission: int\n{\n    case View = 1;\n    case Update = 2;\n    case Create = 3;\n    cas"
  },
  {
    "path": "app/Enums/PricingPeriod.php",
    "chars": 361,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum PricingPeriod: int\n{\n    case Monthly = 1;\n    case Yearly = 2;\n\n    public function i"
  },
  {
    "path": "app/Enums/QuestStatus.php",
    "chars": 150,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum QuestStatus: int\n{\n    case notStarted = 0;\n    case ongoing = 1;\n    case completed ="
  },
  {
    "path": "app/Enums/ReferralEventType.php",
    "chars": 105,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum ReferralEventType: int\n{\n    case register = 1;\n    case invite = 2;\n}\n"
  },
  {
    "path": "app/Enums/SpotlightContentStatus.php",
    "chars": 154,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum SpotlightContentStatus: int\n{\n    case draft = 1;\n    case applied = 2;\n    case appro"
  },
  {
    "path": "app/Enums/SpotlightStatus.php",
    "chars": 103,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum SpotlightStatus: int\n{\n    case active = 1;\n    case inactive = 2;\n}\n"
  },
  {
    "path": "app/Enums/Tier.php",
    "chars": 143,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum Tier: string\n{\n    case Owlbear = 'owlbear';\n    case Wyvern = 'wyvern';\n    case Elem"
  },
  {
    "path": "app/Enums/UserAction.php",
    "chars": 1461,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum UserAction: int\n{\n    case login = 1;\n    case logout = 2;\n    case autoLogin = 3;\n   "
  },
  {
    "path": "app/Enums/UserFlags.php",
    "chars": 269,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum UserFlags: string\n{\n    case firstWarning = 'inactive_1';\n    case secondWarning = 'in"
  },
  {
    "path": "app/Enums/Visibility.php",
    "chars": 156,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum Visibility: int\n{\n    case All = 1;\n    case Admin = 2;\n    case AdminSelf = 3;\n    ca"
  },
  {
    "path": "app/Enums/WebhookAction.php",
    "chars": 122,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum WebhookAction: int\n{\n    case CREATED = 1;\n    case EDITED = 2;\n    case DELETED = 3;\n"
  },
  {
    "path": "app/Enums/Widget.php",
    "chars": 571,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum Widget: string\n{\n    case Preview = 'preview';\n    case Recent = 'recent';\n    case Ca"
  },
  {
    "path": "app/Events/AdminInviteCreated.php",
    "chars": 350,
    "preview": "<?php\n\nnamespace App\\Events;\n\nuse App\\Models\\AdminInvite;\nuse Illuminate\\Foundation\\Events\\Dispatchable;\nuse Illuminate\\"
  },
  {
    "path": "app/Events/Campaigns/Applications/Accepted.php",
    "chars": 884,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Applications;\n\nuse App\\Models\\Application;\nuse App\\Models\\Campaign;\nuse App\\Models"
  },
  {
    "path": "app/Events/Campaigns/Applications/Rejected.php",
    "chars": 884,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Applications;\n\nuse App\\Models\\Application;\nuse App\\Models\\Campaign;\nuse App\\Models"
  },
  {
    "path": "app/Events/Campaigns/Dashboards/DashboardCreated.php",
    "chars": 848,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Dashboards;\n\nuse App\\Models\\CampaignDashboard;\nuse App\\Models\\User;\nuse Illuminate"
  },
  {
    "path": "app/Events/Campaigns/Dashboards/DashboardDeleted.php",
    "chars": 848,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Dashboards;\n\nuse App\\Models\\CampaignDashboard;\nuse App\\Models\\User;\nuse Illuminate"
  },
  {
    "path": "app/Events/Campaigns/Dashboards/DashboardUpdated.php",
    "chars": 848,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Dashboards;\n\nuse App\\Models\\CampaignDashboard;\nuse App\\Models\\User;\nuse Illuminate"
  },
  {
    "path": "app/Events/Campaigns/Deleted.php",
    "chars": 801,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\User;\nuse Illuminate\\Broadcasting\\Channe"
  },
  {
    "path": "app/Events/Campaigns/EntityTypes/EntityTypeCreated.php",
    "chars": 829,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\EntityTypes;\n\nuse App\\Models\\EntityType;\nuse App\\Models\\User;\nuse Illuminate\\Broad"
  },
  {
    "path": "app/Events/Campaigns/EntityTypes/EntityTypeDeleted.php",
    "chars": 829,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\EntityTypes;\n\nuse App\\Models\\EntityType;\nuse App\\Models\\User;\nuse Illuminate\\Broad"
  },
  {
    "path": "app/Events/Campaigns/EntityTypes/EntityTypeToggled.php",
    "chars": 889,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\EntityTypes;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\EntityType;\nuse App\\Models\\U"
  },
  {
    "path": "app/Events/Campaigns/EntityTypes/EntityTypeUpdated.php",
    "chars": 829,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\EntityTypes;\n\nuse App\\Models\\EntityType;\nuse App\\Models\\User;\nuse Illuminate\\Broad"
  },
  {
    "path": "app/Events/Campaigns/Exports/ExportCreated.php",
    "chars": 832,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Exports;\n\nuse App\\Models\\CampaignExport;\nuse App\\Models\\User;\nuse Illuminate\\Broad"
  },
  {
    "path": "app/Events/Campaigns/Followers/FollowerCreated.php",
    "chars": 794,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Followers;\n\nuse App\\Models\\CampaignFollower;\nuse Illuminate\\Broadcasting\\Channel;\n"
  },
  {
    "path": "app/Events/Campaigns/Followers/FollowerRemoved.php",
    "chars": 794,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Followers;\n\nuse App\\Models\\CampaignFollower;\nuse Illuminate\\Broadcasting\\Channel;\n"
  },
  {
    "path": "app/Events/Campaigns/Invites/InviteCreated.php",
    "chars": 832,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Invites;\n\nuse App\\Models\\CampaignInvite;\nuse App\\Models\\User;\nuse Illuminate\\Broad"
  },
  {
    "path": "app/Events/Campaigns/Invites/InviteDeleted.php",
    "chars": 832,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Invites;\n\nuse App\\Models\\CampaignInvite;\nuse App\\Models\\User;\nuse Illuminate\\Broad"
  },
  {
    "path": "app/Events/Campaigns/Members/RoleUserAdded.php",
    "chars": 515,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Members;\n\nuse App\\Models\\CampaignRoleUser;\nuse App\\Models\\User;\nuse Illuminate\\Bro"
  },
  {
    "path": "app/Events/Campaigns/Members/RoleUserRemoved.php",
    "chars": 517,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Members;\n\nuse App\\Models\\CampaignRoleUser;\nuse App\\Models\\User;\nuse Illuminate\\Bro"
  },
  {
    "path": "app/Events/Campaigns/Members/Switched.php",
    "chars": 880,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Members;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\CampaignUser;\nuse App\\Models\\Use"
  },
  {
    "path": "app/Events/Campaigns/Members/UserJoined.php",
    "chars": 889,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Members;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\CampaignInvite;\nuse App\\Models\\U"
  },
  {
    "path": "app/Events/Campaigns/Members/UserLeft.php",
    "chars": 808,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Members;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\User;\nuse Illuminate\\Broadcastin"
  },
  {
    "path": "app/Events/Campaigns/Plugins/PluginDeleted.php",
    "chars": 833,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Plugins;\n\nuse App\\Models\\CampaignPlugin;\nuse App\\Models\\User;\nuse Illuminate\\Broad"
  },
  {
    "path": "app/Events/Campaigns/Plugins/PluginImported.php",
    "chars": 833,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Plugins;\n\nuse App\\Models\\CampaignPlugin;\nuse App\\Models\\User;\nuse Illuminate\\Broad"
  },
  {
    "path": "app/Events/Campaigns/Plugins/PluginUpdated.php",
    "chars": 833,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Plugins;\n\nuse App\\Models\\CampaignPlugin;\nuse App\\Models\\User;\nuse Illuminate\\Broad"
  },
  {
    "path": "app/Events/Campaigns/Roles/RoleCreated.php",
    "chars": 821,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Roles;\n\nuse App\\Models\\CampaignRole;\nuse App\\Models\\User;\nuse Illuminate\\Broadcast"
  },
  {
    "path": "app/Events/Campaigns/Roles/RoleDeleted.php",
    "chars": 821,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Roles;\n\nuse App\\Models\\CampaignRole;\nuse App\\Models\\User;\nuse Illuminate\\Broadcast"
  },
  {
    "path": "app/Events/Campaigns/Roles/RoleUpdated.php",
    "chars": 821,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Roles;\n\nuse App\\Models\\CampaignRole;\nuse App\\Models\\User;\nuse Illuminate\\Broadcast"
  },
  {
    "path": "app/Events/Campaigns/Saved.php",
    "chars": 798,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\User;\nuse Illuminate\\Broadcasting\\Channe"
  },
  {
    "path": "app/Events/Campaigns/SettingsSaved.php",
    "chars": 807,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\User;\nuse Illuminate\\Broadcasting\\Channe"
  },
  {
    "path": "app/Events/Campaigns/Sidebar/SidebarReset.php",
    "chars": 814,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Sidebar;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\User;\nuse Illuminate\\Broadcastin"
  },
  {
    "path": "app/Events/Campaigns/Sidebar/SidebarSaved.php",
    "chars": 814,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Sidebar;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\User;\nuse Illuminate\\Broadcastin"
  },
  {
    "path": "app/Events/Campaigns/Styles/StyleCreated.php",
    "chars": 888,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Styles;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\CampaignStyle;\nuse App\\Models\\Use"
  },
  {
    "path": "app/Events/Campaigns/Styles/StyleDeleted.php",
    "chars": 888,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Styles;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\CampaignStyle;\nuse App\\Models\\Use"
  },
  {
    "path": "app/Events/Campaigns/Styles/StyleUpdated.php",
    "chars": 888,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Styles;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\CampaignStyle;\nuse App\\Models\\Use"
  },
  {
    "path": "app/Events/Campaigns/Thumbnails/ThumbnailCreated.php",
    "chars": 886,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Thumbnails;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\EntityType;\nuse App\\Models\\Us"
  },
  {
    "path": "app/Events/Campaigns/Thumbnails/ThumbnailDeleted.php",
    "chars": 886,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Thumbnails;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\EntityType;\nuse App\\Models\\Us"
  },
  {
    "path": "app/Events/Campaigns/Thumbnails/ThumbnailsDeleted.php",
    "chars": 821,
    "preview": "<?php\n\nnamespace App\\Events\\Campaigns\\Thumbnails;\n\nuse App\\Models\\Campaign;\nuse App\\Models\\User;\nuse Illuminate\\Broadcas"
  }
]

// ... and 6086 more files (download for full content)

About this extraction

This page contains the full source code of the owlchester/kanka GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 6286 files (28.5 MB), approximately 7.8M tokens, and a symbol index with 25518 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!